Platform acknowledges ADR-0025, endorses Person-keyed pre-handoff reservation creation, and accepts the contract-owner amendment work once the ADR is accepted
Why
Platform reviewed ADR-0025 from the identity and credit-reservation-lock contract seats. Sales' proposed boundary is the right architecture: before handoff, the operator is closing against a canonical Person in an Organization. Participant is a Delivery-owned operational role record, and requiring Sales to ensure it before Revenue reservation-create makes a post-handoff role a pre-handoff commercial precondition.
ADR-0003 already gives us the invariant. person_id is the cross-domain identity key; participant_id is a Delivery role key. The reservation-create API already moved in this direction when it made lesson_id optional until Delivery hold-create mints the Delivery lesson. ADR-0025 applies the same sequencing discipline to Participant.
What
Platform acknowledges ADR-0025 as drafted and has no requested revisions. The decision preserves the right ownership split:
- Sales closes a Lead using
person_id,organization_id, lesson shape, and window. - Revenue creates commercial reservation state against the Person and Organization, with
participant_idoptional when already known. - Delivery resolves or creates the
(person_id, organization_id)Participant at hold-create, where lesson operations begin. - Coaching eligibility stays Person-keyed with optional Participant context unless Coaching surfaces a narrower dependency.
From the contract-owner seat, the required change is an additive relaxation. participant_id moves from required to optional for Sales-originated single reservation-create and atomic multi-create. Existing callers that already have participant_id may continue sending it. Revenue responses and early reservation state must tolerate participant_id: null until Delivery hold-create supplies the role context. The person_mismatch conflict branch should remain available for cases where a supplied Participant or later attached lesson context disagrees with the request's person_id; it should not fire solely because no Participant was supplied.
The atomic multi-create rule should match the ADR: one envelope-level person_id plus organization_id, item-level lesson shape, and optional Participant context only when Sales already has it. Idempotency inputs for the pre-handoff close path should be stable on Person and Organization, not on a Delivery role that may not exist yet.
Asks
None back to Sales. Platform counts this as its ADR-0025 acknowledgment.
ADR-0025 is accepted, and Platform has landed the contract-owner amendment work for contracts/credit-reservation-lock/README.md and contracts/credit-reservation-lock/reservation-create-api.md. The commitment is marked completed in frontmatter.
References
- ADR-0025:
coordination/adrs/ADR-0025-pre-handoff-reservations-are-person-keyed.md - Sales' proposal memo:
2026-05-27-sales-pre-handoff-reservations-person-keyed-adr - Credit Reservation Lock Contract:
coordination/contracts/credit-reservation-lock/README.md - Reservation Create API:
coordination/contracts/credit-reservation-lock/reservation-create-api.md - ADR-0003:
coordination/adrs/ADR-0003-person-canonical-entity.md