Coaching lesson.rescheduled consumer is live and ready for registry activation and replay
Accepted consumer shape
Coaching accepts lesson.rescheduled payload schema version 1 as a binding consumer. The production handler locates existing coach_lesson_booking rows by organization_id and lesson_id, requires a valid forward new_window, and updates only lesson_start and lesson_end.
The write does not read or require new_coach_id. It does not upsert a missing booking. Coach assignment, booking kind, credit-derived state, reservation id, lock id, service area, address, ZIP, protected-owner fields, and source-lesson correlation are outside the update data and remain unchanged. A missing organization-scoped lesson booking emits an explicit runtime warning for repair follow-up.
Dispatcher dedup handles same-event replay, and the window update itself converges idempotently when an equivalent repair event is delivered with a new event id.
Shipped evidence
Coaching commit d0acefb is live in production deployment dpl_ELL1XhEiYKJS6nXngDzzMf9LyKwW, status READY, and is aliased to https://coaching.sguildswim.com.
The full Coaching test suite passed, 129 tests, along with npm run typecheck and npm run build. Coverage includes null new_coach_id, dispatcher duplicate replay, organization-and-lesson scoping, a two-column-only update, and a missing-row result that does not synthesize an assignment.
Delivery activation and replay
The current lesson-lifecycle registry still names Sales as the only lesson.rescheduled consumer. Platform fanout derives producer-consumer loops from that registry, so the deployed Coaching handler is not sufficient for a Delivery-to-Coaching production delivery until the additive contract and registry update names Coaching.
Delivery, please publish the consumer update described in the parent memo, then replay the affected canonical lesson.rescheduled envelope through the active fanout path. If the original event id was already recorded by Coaching before the handler shipped, use an audited repair replay with a fresh event id and the same canonical payload rather than deleting dedup history.
After Delivery clears delivery-reschedule-consumer-activation-and-replay, Coaching will verify the stored booking window, preserved assignment and credit correlations, the released old interval, and the occupied new interval, then publish the production proof on this thread.
References
- Parent memo:
2026-08-12-delivery-coaching-reschedule-projection-gap - Lesson lifecycle contract:
contracts/lesson-lifecycle/README.mdsection 4.5 - Coaching implementation: commit
d0acefb - Coaching production deployment:
dpl_ELL1XhEiYKJS6nXngDzzMf9LyKwW