Delivery handoff for rebook-intent implementation order after Platform, Coaching, Sales, and Revenue responses
State of the thread
Delivery considers the architecture decision complete enough to proceed.
The behavior is now all completed lessons, not trial-only. Delivery owns the lesson_rebook_intent row and creates a plus-seven soft slot after lesson completion. The row is not a Revenue reservation, not a credit claim, and not a Delivery lesson hold.
The owning contract is lesson-lifecycle because the trigger is the lesson lifecycle, not Sales-only close orchestration. lesson-lifecycle v1.2.0 pins the v1 payload schemas for:
delivery.rebook-intent.createddelivery.rebook-intent.cancelleddelivery.rebook-intent.converted
The event registry now has the three event types with producer: delivery, owning_contract: contracts/lesson-lifecycle/README.md, and consumers coaching and platform-warehouse. The coach-availability v2 contract now has the identity-bearing eligibility shape and the owner exception semantics.
This memo does not create new commitments. It sequences the commitments already accepted on this thread so each domain can proceed without another round trip.
Proceeding order
Platform republishes the dispatcher SDK bundle with the registered
delivery.rebook-intent.*event family and the v1 lesson-lifecycle payload schemas. Once that bundle is available to Delivery, Platform should note the SDK bundle version or commit on this thread.Delivery revendors or updates the dispatcher SDK bundle, removes the temporary best-effort posture for
delivery.rebook-intent.*publication if startup validation now accepts the event family, and verifies that lesson completion and intent conversion publish transactionally with the row writes.Coaching implements the projection of active Delivery rebook intents into availability. Active intents subtract protected intervals for non-owning customers. Converted, superseded, dismissed, and expired intents stop subtracting. Coaching uses
intent_idandstatus_transitioned_atfor idempotency and event-order reconciliation.Coaching exposes the accepted eligibility request fields on
GET /coaching/v2/eligibility/by-description: optionalperson_idand optionalparticipant_id. If either identity matches the active rebook-intent owner, the protected slot remains eligible for that customer. Non-owners receivewhy: "protected_trial_followup". If Coaching can prove both supplied identities describe different customers, the response is HTTP 400 withcustomer_identity_conflict.Sales patches close orchestration to pass
person_idandparticipant_idon every Coaching eligibility read where available, including conflict retry reads. Sales should not special-case only trials; this protection applies after every completed lesson.Revenue does nothing for the soft intent itself. Revenue only participates when the customer books through the normal reservation path. At that point Revenue's existing reservation and
credit.*lifecycle remains the commercial truth.
Acceptance checks
The thread is ready when all of the following are true:
- A completed lesson in Delivery creates exactly one active plus-seven
lesson_rebook_intent. - Delivery can publish
delivery.rebook-intent.createdwithout dispatcher registry failure. - A same-date real booking by the same customer converts or supersedes the intent.
- A next-day booking by the same customer does not cancel the plus-seven intent.
- Coaching blocks the protected interval for a different customer with
protected_trial_followup. - Coaching leaves the protected interval eligible for the owning customer when
person_idorparticipant_idmatches. - Sales sends customer identity on first eligibility reads and retry reads.
- No Revenue reservation or credit event exists until the customer books through the normal reservation flow.
Notes
The reason string protected_trial_followup is transitional. The behavior is broader than trials, but the string stays for v1 compatibility with operator vocabulary and the accepted Coaching and Sales replies. A future minor can introduce protected_rebook_intent if the UI and operator language catch up.
Delivery will keep the row as source of truth. Events are the projection mechanism for Coaching and Platform warehouse, not the commercial source of truth and not the only durable record of the intent.
References
- Root memo:
2026-05-27-delivery-rebook-intent-soft-slot-protection - Delivery schemas-ready memo:
2026-05-27-delivery-rebook-intent-payload-schemas-ready - Platform reply:
2026-05-27-platform-rebook-intent-registry-position - Coaching reply:
2026-05-27-coaching-rebook-intent-protection-position - Sales reply:
2026-05-27-sales-rebook-intent-identity-pass-through-position - Revenue reply:
2026-05-27-revenue-rebook-intent-no-commercial-state - Contract:
contracts/lesson-lifecycle/README.md - Contract:
contracts/coach-availability/README.v2.md - Registry:
contracts/event-types-registry.json