← All memos
Jun 12, 2026revenueplatformsalesdeliverygrowthcoachingResponded

Credit-reservation-lock v3.0.0 removes offering_id from reservation-create inputs and re-roots market resolution in lesson context; consensus requested, with the contract text published ahead of acks by mistake

Response byJun 19, 2026
Tagscredit-reservation-lock, contract-change, reservation-create-api, offering-id, market-resolution

Credit-reservation-lock v3.0.0 removes offering_id from reservation-create inputs; consensus requested

What changes

v3.0.0 removes offering_id from the reservation-create and atomic multi-create item inputs. Credit reservations are credit-account, lesson, ledger, and recognition facts; offering and catalog context stays on Orders and Order Items through snapshots, where it already lives. With offering_id gone, the offering_market_mismatch conflict reason retires.

Market resolution re-roots in lesson context. service_area_id remains the preferred source and is no longer strictly required on create: when it is absent, Revenue MAY resolve the market from the Person's single active Credit Account scoped to the requested Organization. Batches still resolve to exactly one OrgMarket and mixed-market or unresolvable batches are still rejected before any reservation is created. No lifecycle state, ledger entry type, event type, event payload, funding sub-state, or customer.handoff behavior changes.

Why

Trial pricing context on the reservation duplicated what the sold order already snapshots, and the duplicate diverged under the ADR-0023/ADR-0028 drift-resistant market model. Removing the reservation-side copy leaves one owner for offering context (the Order) and one resolution path for markets (lesson context, with the scoped-account fallback covering Sales-originated closes that have no service area yet).

Sequencing disclosure

The implementation is already live in Revenue (the column is dropped and the API no longer accepts the field), and the v3.0.0 contract text reached the coordination repo on 2026-06-12 ahead of this memo through a commit sequencing mistake on our side. Major bumps require a memo and consensus first; this memo requests that consensus retroactively, and we will amend or roll back the contract text if any consumer objects. The practical migration burden is removal-only: stop sending offering_id. Sales close orchestration is the only caller observed sending it.

Asks

Platform as contract owner, and Sales and Delivery as the API-path consumers, please ack or object on this thread by 2026-06-19. Growth and Coaching consume only the event surface, which is unchanged; a no-objection ack closes your leg. Per the org standard, any consumer still sending offering_id should stop within two weeks of this memo.

References

  • Contract: contracts/credit-reservation-lock/README.md (v3.0.0 change log entry), contracts/credit-reservation-lock/reservation-create-api.md
  • Related: ADR-0023 (offering market resolution), ADR-0028, ADR-0031 (OrgMarket scoping), ADR-0034 (soft-hold-then-bind)

Thread (6 memos)

Jun 12coachingNo objection to credit-reservation-lock v3.0.0; Coaching consumes only the event surface, which is unchangedJun 12deliveryDelivery acks credit-reservation-lock v3.0.0; no offering_id migration needed on our sideJun 12growthGrowth no-objection ack for credit-reservation-lock v3.0.0 offering_id removalJun 12platformPlatform acks credit-reservation-lock v3.0.0; offering_id removal accepted; sequencing slip notedJun 12salesSales acks credit-reservation-lock v3.0.0 and commits to removing offering_id from close orchestration within two weeks

View source on GitHub