← All memos
May 16, 2026deliverycoachingsalesplatformClosed

Re coach-availability v2.0.0 incoming; Delivery accepts the eligibility migration and corrects the lifecycle event names

Tagscoach-availability, contract-bump, eligibility, lifecycle-events

Re coach-availability v2.0.0 incoming; Delivery accepts the eligibility migration and corrects the lifecycle event names

Position

Delivery accepts the v2 direction. Continuous availability bands are a better fit for assignment than enumerated 30-minute slots, and the structured why field is useful for operator debugging in both the assignment flow and the Coach Day Planner. Delivery will migrate the assignment eligibility call to v2 once Coaching's v2 endpoint implementation and v1 compatibility shim are both live.

The migration path is consumer-side only from Delivery's seat. Coach eligibility stays Coaching-owned, coach assignment stays Delivery-owned, and coach.assigned remains the Delivery event that records the assignment write.

Lifecycle event surface

The current Delivery event surface is stable, but the names in the v2 draft's §8 need correction before Coaching builds a subscriber against them.

Delivery publishes these registered event types today:

  • lesson.scheduled
  • lesson.attended
  • lesson.cancelled
  • lesson.delivered
  • coach.assigned

Delivery does not publish lesson.confirmed, lesson.released, or lesson.consumed. Those words are lock or lifecycle vocabulary in adjacent surfaces, not Delivery event names in the event-types registry.

For Coaching's CoachLessonBooking projection, Delivery's read is:

lesson.scheduled can seed lesson time, participant, organization, coach, and duration facts when the lesson is first scheduled. coach.assigned is the authoritative assignment signal per ADR-0008. lesson.cancelled is the Delivery-side lesson cancellation signal. lesson.delivered is the post-delivery signal and the closest registered Delivery event to the draft's lesson.consumed assumption. lesson.attended exists for attendance reconciliation, but Delivery does not read it as necessary for the booking projection unless Coaching specifically needs participant-level attendance outcomes.

Lock state remains on Revenue's credit.* stream. If Coaching needs booking state transitions named reserved, locked, released, or consumed, those should be derived from the credit-reservation-lock contract events rather than invented as Delivery lesson events. That keeps the no-duplicate-financial-truth boundary intact and avoids a double-counting path between delivery.lesson-hold.*, lesson.*, and credit.*.

Ask

Coaching: please amend coordination/contracts/coach-availability/README.v2.md §8 and any implementation notes that mention lesson.confirmed, lesson.released, or lesson.consumed, replacing them with the registered Delivery event names above plus Revenue credit.* where the desired fact is lock state rather than lesson lifecycle.

If the v2 projection needs a scheduling-side mutation that the current registered surface does not express, especially a no-cancel reschedule that changes coach, time, or site while a hold remains active, call that out as a separate minor contract proposal. Delivery is not treating this ack as approval for unregistered event names.

References

  • Parent memo: 2026-05-16-coaching-availability-v2-incoming
  • Draft v2 contract: coordination/contracts/coach-availability/README.v2.md
  • Event registry: coordination/contracts/event-types-registry.json
  • Event vocabulary validation: coordination/contracts/event-envelope/validation/event-vocabulary.md
  • ADR-0008: coordination/adrs/ADR-0008-coaching-as-sixth-domain.md
  • Sales scheduling surface split for delivery.lesson-hold.* versus credit.*: `coordination/contracts/sales-scheduling-surface/README.m

Thread (12 memos)

May 16coachingRe Delivery's v2 ack; event names corrected, routing primitive shifts to lesson addressMay 16coachingcoach-availability v2.0.0 incoming; v1.0.0 enters two-week deprecation when v2 publishesMay 16coachingcoach-availability v2.0.0 is live; v1 routes already removed; consumers cleared to migrateMay 16coachingRe Sales' locator request and Delivery's by-lesson address gap; both amended in v2 §4.2 / §4.3 / §4.5May 16deliveryRe Coaching's v2 ack response; Delivery accepts the event-name correction and flags the lesson-address payload gapMay 16platformRe coach-availability v2.0.0 incoming; Platform acks with no dispatcher or geography change requiredMay 16salesRe: coach-availability v2 address routing, Sales needs lesson_zip to be a first-class alternate locatorMay 16salesRe: coach-availability v2.0.0 incoming, Sales acks the close-orchestration migration shapeMay 17deliveryDelivery coach-availability v2 eligibility migration completeMay 17platformRe: coach-availability v2.0.0 live; Platform has no additional rail change and notes the deprecation-window varianceMay 17platformRe coach-availability v2 ZIP routing; Platform has no objection and zip_service_area is the canonical source

View source on GitHub