Back to changelog index

2.0.5

Aug 05, 2026 · 6 packages · 13 unique changes · 5 release entries

integrationslibsmodulesBreaking changes

This release affects the integrations, sharedLibs, solutions familyies.

Run contractspec connect adoption resolve --family integrations to see how it impacts your project.

Release summaries

  • billingos-data-fetching-envelope-outputs

    Envelope-shape the three BillingOS query contract outputs (billing.customers.search, billing.sellable-items.search, billing.tax.compute-breakdown) as QueryResultEnvelope ({ data, versionToken? }) so they are accepted by the canonical data-fetching read path (executeResult) instead of 422-ing on the previous inner-row shape.

    maintainer

    The output schemas of the three BillingOS query contracts now describe a QueryResultEnvelope ({ data, versionToken? }). The inner-row fields results/breakdowns are renamed and re-homed under data; the row models are unchanged. This is a static schema-shape change only — no new runtime dependency on the data-fetching packages.

    integrator

    Direct type consumers of SearchCustomersOutput, SearchSellableItemsOutput, and ComputeTaxBreakdownOutput must read `.data` instead of `.results`/`.breakdowns`. Handlers must return { data, versionToken? }. No in-repo source consumers reference the renamed fields.

  • billingos-france-invoicing-mvp

    Ship the BillingOS France invoice-issuance MVP — additive issue/submit/creditNote contracts, persistence ports and redaction-aware observability, a France legal engine (TVA/rounding/gapless numbering/NF203), and a new EN16931/Factur-X provider integration with a fail-closed production PDP.

    maintainer

    France issuance is additive: the original eight billing contract keys are unchanged. New billing.invoice.issue/submit, billing.invoice.submitted, and billing.creditNote.issue contracts sit in billing-spec; persistence ports and a redaction-aware BillingObservabilityPort sit in billing-runtime; the France legal engine (TVA table, half-up per-rate-group rounding, mandatory mentions, Europe/Paris gapless numbering, NF203 hash-chain, avoir immutability guard, SirenSiretVatValidationPort) sits in billing-france. provider-einvoicing keeps the JVM Mustangproject conformance and the fail-closed production PDP out of the country-neutral core.

    integrator

    Adopt the issue/submit/creditNote handlers from module.billing-os, bind the new persistence and observability ports, and add the provider-einvoicing FacturXGeneratorPort/PdpSubmissionPort. Host DB/RLS wiring lives in api-application-monolith (dedicated billing Postgres schema, migrations, tenant-isolation RLS, createTenantScopedPool adapters, buildBillingOsPortBindings); production PDP submission stays fail-closed until a certified-PDP partner is wired, and live INSEE/VIES checks remain mocked until their adapters land.

    customer

    Operators can run the France invoice flow end to end — quote → issue → Factur-X (EN16931/CIUS-FR) → PDP submission → reconcile → credit-note/avoir — with gapless numbering, NF203 inalterability, and mandatory legal mentions. Go-live is EUR-only and production PDP submission is fail-closed until a certified-PDP partner is connected; the issuance workspace renders in fr/es.

  • billingos-production-ready

    Promote BillingOS to first-class production-ready contracts, runtime projections, France readiness, CompanyOS module composition, responsive UI, and native-safe mobile proof.

    maintainer

    BillingOS production-ready surfaces remain additive, country-neutral in core, side-effect-free, and backed by mobile-width UI/native-proof evidence.

    integrator

    Integrators can compose BillingOS action plans through CompanyOS review and reuse mobile-first UI/proof guidance without provider credentials or production submission.

  • billingos-qtc-contract-spine

    Add the contract spine for the BillingOS/FinanceOps quote-to-cash cockpit: role-aware BillingOS cockpit packets/action availability plus provider-neutral FinanceOps cashflow and accounting-export review hints.

    maintainer

    Add the contract spine for the BillingOS/FinanceOps quote-to-cash cockpit: role-aware BillingOS cockpit packets/action availability plus provider-neutral FinanceOps cashflow and accounting-export review hints.

    integrator

    Add the contract spine for the BillingOS/FinanceOps quote-to-cash cockpit: role-aware BillingOS cockpit packets/action availability plus provider-neutral FinanceOps cashflow and accounting-export review hints.

  • billingos-v0

    Add BillingOS V0 country-neutral contracts, deterministic runtime helpers, France readiness pack, French SME replay proof, and aligned docs/release/LLM safety boundaries.

    maintainer

    BillingOS V0 is additive, keeps France readiness outside the country-neutral core/runtime packages, and documents the production-readiness safety boundaries.

Migration guide

  • Read BillingOS query rows from data

    Required

    Direct consumers of the three BillingOS query output models must read rows from `output.data` instead of the removed `output.results` / `output.breakdowns` fields.

    1. Replace `output.results` / `output.breakdowns` access with `output.data` for billing.customers.search, billing.sellable-items.search, and billing.tax.compute-breakdown.
    2. Keep row-model handling unchanged; BillingParty, SellableBillingItem, and TaxBreakdownResult are still the array element types.
  • Return QueryResultEnvelope-shaped query successes

    Required

    BillingOS query handlers must return `{ data, versionToken? }` so executeResult validates the success payload against the operation output schema.

    1. Query handlers must return a QueryResultEnvelope-shaped success ({ data, versionToken? }).
    2. Do not map an event-log `version` into `versionToken`.

Upgrade steps

  • Adopt QueryResultEnvelope-shaped BillingOS query outputs

    manual

    Update direct consumers of the three BillingOS query output models to read `.data`, and update query handlers to return { data, versionToken? }.

    Packages: @lssm-tech/lib.billing-spec

    1. Replace `.results`/`.breakdowns` field access with `.data` on the three BillingOS query outputs; ensure handlers return the QueryResultEnvelope shape.
  • Adopt the additive issue/submit/creditNote billing contracts

    assisted

    Wire billing.invoice.issue, billing.invoice.submit, the billing.invoice.submitted event, and billing.creditNote.issue through module.billing-os handlers; the original eight contract keys are unchanged.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/lib.billing-france, @lssm-tech/module.billing-os, @lssm-tech/integration.provider-einvoicing

    1. Adopt the new contracts from `@lssm-tech/lib.billing-spec`; leave the original eight keys as-is.
    2. Drive issuance through the module.billing-os issue/submit/creditNote orchestration handlers.
    3. Keep France-specific legal behavior in `@lssm-tech/lib.billing-france`, not in core or runtime.
  • Bind the new persistence ports and redaction-aware observability

    assisted

    Implement the runtime persistence ports and the BillingObservabilityPort so issuance is durable and audit-safe.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/lib.billing-france, @lssm-tech/module.billing-os, @lssm-tech/integration.provider-einvoicing

    1. Implement InvoiceRepositoryPort, EventLogAppendPort, InvoiceChainAppendPort, and CreditNoteRepositoryPort against your store.
    2. Wire BillingObservabilityPort with correlation-id propagation; never log raw SIREN/SIRET/VAT, secrets, or amounts — rely on the built-in field-level redaction.
    3. For host adoption, follow api-application-monolith: dedicated billing Postgres schema, migrations, tenant-isolation RLS, createTenantScopedPool adapters, and buildBillingOsPortBindings.
  • Adopt the EN16931/Factur-X provider integration

    manual

    Generate Factur-X documents and submit to a PDP through provider-einvoicing, keeping production submission fail-closed until a certified partner is wired.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/lib.billing-france, @lssm-tech/module.billing-os, @lssm-tech/integration.provider-einvoicing

    1. Use the FacturXGeneratorPort to produce EN16931 CII XML and Factur-X PDF/A-3 hybrids; Mustangproject 2.17.0 (JVM) provides real EN16931/CIUS-FR conformance.
    2. Submit through PdpSubmissionPort; the mock adapter is for tests, and the production stub is fail-closed until a certified-PDP partner adapter is wired.
    3. Rely on the idempotent submission guard for safe retries; keep go-live EUR-only and treat the certified-PDP partner and live INSEE identifier adapter as documented follow-ups.
  • Adopt BillingOS first-class contracts and governed runtime projections

    manual

    Use the expanded spec/runtime surfaces for country-neutral billing and compose high-impact actions through CompanyOS review.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/lib.billing-france, @lssm-tech/module.billing-os

    1. Keep country-specific France readiness in `@lssm-tech/lib.billing-france`.
    2. Treat provider/data-vault/accounting surfaces as deterministic metadata and candidates, not production execution.
    3. Route high-impact actions through approval evidence and operator inbox review.
    4. Treat `@lssm-tech/module.billing-os/ui` as web React UI; render native hosts through RN-safe adapters and deterministic proof/view-model data.
  • Review Billingos Qtc Contract Spine adoption

    manual

    Add the contract spine for the BillingOS/FinanceOps quote-to-cash cockpit: role-aware BillingOS cockpit packets/action availability plus provider-neutral FinanceOps cashflow and accounting-export review hints.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.finance-ops-spec

    1. Review the paired changeset summary and update consumers only if they use the affected package surface.
  • Model quote-to-cash with BillingOS V0 contracts and pure runtime helpers

    manual

    Use core contracts and runtime helpers for country-neutral lifecycle replay; use the France pack only for France-specific readiness.

    Packages: @lssm-tech/lib.billing-spec, @lssm-tech/lib.billing-runtime, @lssm-tech/lib.billing-france, @lssm-tech/example.billingos-france-sme

    1. Keep PA/provider credentials and production e-invoice submission outside V0 packages.
    2. Treat readiness metadata as non-accreditation guidance.
    3. Require operator approval for high-impact billing actions.
    4. Treat the production-ready release claim as gated by implementation-lane evidence, generated /llms* guides, targeted package validation, safety-policy checks, and release checks.

Unique release changes

  • - Generate Factur-X documents and submit to a PDP through provider-einvoicing, keeping production submission fail-closed until a certified partner is wired.

    5 packages · 5 occurrences

  • - Implement the runtime persistence ports and the BillingObservabilityPort so issuance is durable and audit-safe.

    5 packages · 5 occurrences

  • - Ship the BillingOS France invoice-issuance MVP — additive issue/submit/creditNote contracts, persistence ports and redaction-aware observability, a France legal engine (TVA/rounding/gapless numbering/NF203), and a new EN16931/Factur-X provider integration with a fail-closed production PDP.

    5 packages · 5 occurrences

  • - Wire billing.invoice.issue, billing.invoice.submit, the billing.invoice.submitted event, and billing.creditNote.issue through module.billing-os handlers; the original eight contract keys are unchanged.

    5 packages · 5 occurrences

  • - Add the contract spine for the BillingOS/FinanceOps quote-to-cash cockpit: role-aware BillingOS cockpit packets/action availability plus provider-neutral FinanceOps cashflow and accounting-export review hints.

    2 packages · 4 occurrences

  • - Promote BillingOS to first-class production-ready contracts, runtime projections, France readiness, CompanyOS module composition, responsive UI, and native-safe mobile proof.

    4 packages · 4 occurrences

  • - Use the expanded spec/runtime surfaces for country-neutral billing and compose high-impact actions through CompanyOS review.

    4 packages · 4 occurrences

  • - Add BillingOS V0 country-neutral contracts, deterministic runtime helpers, France readiness pack, French SME replay proof, and aligned docs/release/LLM safety boundaries.

    3 packages · 3 occurrences

  • - Use core contracts and runtime helpers for country-neutral lifecycle replay; use the France pack only for France-specific readiness.

    3 packages · 3 occurrences

  • - BillingOS query handlers must return `{ data, versionToken? }` so executeResult validates the success payload against the operation output schema.

    1 packages · 1 occurrences

  • - Direct consumers of the three BillingOS query output models must read rows from `output.data` instead of the removed `output.results` / `output.breakdowns` fields.

    1 packages · 1 occurrences

  • - Envelope-shape the three BillingOS query contract outputs (billing.customers.search, billing.sellable-items.search, billing.tax.compute-breakdown) as QueryResultEnvelope ({ data, versionToken? }) so they are accepted by the canonical data-fetching read path (executeResult) instead of 422-ing on the previous inner-row shape.

    1 packages · 1 occurrences

  • - Update direct consumers of the three BillingOS query output models to read `.data`, and update query handlers to return { data, versionToken? }.

    1 packages · 1 occurrences

Impacted packages

  • @lssm-tech/integration.provider-einvoicing

    Layer: integrations · 4 changes

  • @lssm-tech/lib.billing-france

    Layer: libs · 2 changes

  • @lssm-tech/lib.billing-runtime

    Layer: libs · 2 changes

  • @lssm-tech/lib.billing-spec

    Layer: libs · 2 changes

  • @lssm-tech/lib.finance-ops-spec

    Layer: libs · 2 changes

  • @lssm-tech/module.billing-os

    Layer: modules · 2 changes