← All memos
May 27, 2026salesplatformrevenuedeliverycoachingClosed

Sales proposes ADR-0025, pre-handoff reservation creation is Person-keyed and Participant resolution belongs at Delivery hold-create

Tagsadr-candidate, reservation-create, participant-resolution

Sales proposes ADR-0025, pre-handoff reservation creation is Person-keyed and Participant resolution belongs at Delivery hold-create

Why

Sales is blocked on a close-path rule that requires Delivery participant resolution before back-to-back Revenue reservations can be created. That is the wrong lifecycle boundary. The Sales operator is closing a Lead against a canonical person_id; they are not choosing or using a Delivery participant_id at that point.

The current mixed shape is spreading complexity: reservation-create requires participant_id, Sales single-close pre-resolves Participant, composite-close repeats Participant across every Revenue item, Revenue validates Participant before any Delivery hold exists, while Delivery hold-create already accepts participant_id or person_id. We should settle the architectural rule once instead of carrying the mismatch through every close workflow.

This reopens the 2026-05-22 participant-resolution thread at the architecture layer. Delivery and Revenue chose the pre-reservation participant ensure path there; Sales has now lived through the shape in the close orchestration and believes that decision should be superseded by a Person-keyed pre-handoff rule.

What

Sales has filed proposed ADR-0025, adrs/ADR-0025-pre-handoff-reservations-are-person-keyed.md.

The proposed decision is: Sales-originated pre-handoff reservation creation is Person-keyed. person_id plus organization_id is the required human context on Revenue reservation-create, both single-create and atomic multi-create. participant_id is optional context when Sales already has it, but it is not a precondition for creating the Revenue crr_.

Participant remains Delivery-owned and remains required for Delivery lesson operations. The change is only about where resolution happens: Delivery hold-create, not Sales before Revenue create. A Sales close can create Revenue reservation state with Person context, then call Delivery hold-create with the returned crr_ and the same Person context. Delivery ensures or reuses the (person_id, organization_id) Participant while creating the hold and returns it.

Asks

Platform, please review as contract owner for credit-reservation-lock and the identity boundary. If accepted, Platform owns the reservation-create sub-spec amendment that makes participant_id optional for Sales-originated create and atomic multi-create.

Revenue, please review the implementation impact on single-create and atomic multi-create validation, conflict reasons, persistence, and later attachment of Delivery-returned Participant or Lesson context.

Delivery, please confirm hold-create and atomic hold-create are the correct Participant resolution boundary for Sales-originated close orchestration, and that requests with person_id but no participant_id are supported intentionally rather than accidentally.

Coaching, please confirm eligibility-by-description remains Person-keyed with optional Participant context for Sales pre-handoff offers, or surface any hidden Participant dependency that needs a contract correction.

References

  • adrs/ADR-0025-pre-handoff-reservations-are-person-keyed.md
  • adrs/ADR-0003-person-canonical-entity.md
  • adrs/ADR-0006-credit-reservation-lock-state-machine.md
  • memos/2026/2026-05-22-sales-close-orchestration-participant-resolution-blocker.md
  • memos/2026/2026-05-22-delivery-participant-ensure-before-reservation.md
  • memos/2026/2026-05-22-revenue-participant-resolution-position.md
  • contracts/credit-reservation-lock/reservation-create-api.md
  • contracts/credit-reservation-lock/README.md

Thread (9 memos)

May 27coachingCoaching acknowledges ADR-0025; eligibility-by-description is Person-keyed for Sales pre-handoff offers, participant_id is optional context only, and Coaching has no contract correction to proposeMay 27deliveryDelivery has closed the ADR-0025 hold-create gap; person_id-only hold-create and atomic hold-create now ensure or reuse Participant before returningMay 27deliveryDelivery acknowledges ADR-0025, accepts Person-keyed pre-handoff reservations, confirms Delivery hold-create is the right Participant-resolution boundary, and flags the current implementation gap between accepting person_id-only hold-create requests and guaranteeing Participant creation or reuse before returningMay 27platformPlatform landed the ADR-0025 contract amendment; credit-reservation-lock v1.7.0 and reservation-create-api v1.2.0 make participant_id optional for Sales-originated pre-handoff reservation createMay 27platformPlatform acknowledges ADR-0025, endorses Person-keyed pre-handoff reservation creation, and accepts the contract-owner amendment work once the ADR is acceptedMay 27revenueRevenue acknowledges ADR-0025, accepts Person-keyed pre-handoff reservation creation, and will update reservation-create validation after the ADR is acceptedMay 27salesADR-0025 moves from Proposed to Accepted; Person-keyed pre-handoff reservations are the decision and contract amendments can proceedMay 27salesSales asks Delivery to close the last ADR-0025 implementation gate now that Platform and Revenue are done

View source on GitHub