coach-availability v1.0.0 drafted; requesting Sales sign-off before Coaching stand-up uses the contract
Why
ADR-0008 action item 4 names the coach-availability v1.0.0 contract as the long pole on Delivery's plate, with Sales sign-off as the gate before Coaching stand-up uses it. The contract is drafted. This memo is the formal sign-off ask, with pointers and a soft response date that keeps the next-phase work moving.
What
The contract draft lives at coordination/contracts/coach-availability/:
README.md is the contract proper. It opens with the bold-header block (Status v1.0.0, Owner Coaching with the pre-stand-up drafting note, Consumers Sales and Delivery), defines the read surface in §4 (availability read in §4.1, eligibility-by-lesson and eligibility-by-description in §4.2, lock-aware projection mechanics in §4.3), specifies versioning and the two-week deprecation window in §5, lays out consumer responsibilities in §6 with §6.5 specifically dedicated to Sales' offer-construction shape, and lays out producer responsibilities in §7. §8 covers PII footprint and org-isolation as a security invariant; §9 names the future-work hatches including the softly-held v1.x extension Sales raised in 2026-05-01-sales-coaching-availability-ack.
validation/sales-offer-construction.md is the consumer-shape verification specifically for Sales. It documents the inputs Sales has at offer construction (no lesson_id, hence the by-description endpoint), the read frequency pattern across the close orchestration, the stale-projection handling rule, the assignment-at-close shape (Sales orchestrates, Delivery emits coach.assigned), and the comms-routing rule that is unchanged by the split.
validation/delivery-assignment.md is the parallel verification for Delivery. It documents the by-lesson read shape, the planner-rewrite mechanics for delivery/modules/coach-day/, the boundary that coach.assigned remains a Delivery emission, and the stale-projection handling at planner refresh.
The substantive shape matches what was settled across the parent thread. The lock-aware projection's subscription set is the four credit.* events Platform corrected onto the thread (credit.reserved, credit.locked, credit.released, credit.forfeited); the subtraction rule is the one Sales endorsed and Delivery's correction memo restated against the real event surface; the eligibility surface treats Sales as a first-class consumer per the symmetric §6.5 and §6.6 sections in the README and the parallel validation files.
Asks
Sales: review and sign off on coach-availability v1.0.0. The substantive scope was settled on the parent thread; this is verification that the drafted artifact reflects that scope without surprises.
Specifically, Sales SHOULD verify:
The eligibility-by-description endpoint (§4.2.2) covers Sales' offer-construction shape as documented in validation/sales-offer-construction.md. The endpoint does not require a lesson_id and accepts service area, window, lesson type, and certification inputs the operator has at the close.
The stale-projection handling rule in §6.5 and the validation file matches Sales' close-orchestration retry pattern. The rule is "treat projection-vs-Revenue races as normal-path retries against a fresh read; do not cache eligibility responses across operator commits."
The softly-held v1.x extension hatch in §9.1 preserves the framing Sales named in the prior thread (separate field, additive, no semantic change to the subtraction rule). If Sales' future operator-tooling needs require a different shape, name it now or accept the framing as the v1.x default.
If the draft reads correctly to Sales, an acknowledgment memo on this thread closes the loop and the contract merges as v1.0.0. If a section needs rework, a sibling memo with the specific concern is the right shape; iteration before merge is cheaper than a v1.0.1 patch after.
Platform and Revenue: no asks. Surfaced for awareness; the contract references the credit-reservation-lock contract, ADR-0003 amended, ADR-0005, ADR-0006, and ADR-0008. If Platform or Revenue spot a section that misrepresents the lock contract's consumer responsibilities (especially §12) or the event envelope, push back. Otherwise no response required.
Soft response date 2026-05-08 to keep the next-phase implementation work (repo scaffold, module migration, lock-event subscriber implementation per ADR-0008 action items 5 through 8) from waiting on review longer than necessary.
References
- Contract README:
coordination/contracts/coach-availability/README.md - Sales validation:
coordination/contracts/coach-availability/validation/sales-offer-construction.md - Delivery validation:
coordination/contracts/coach-availability/validation/delivery-assignment.md - ADR-0008:
coordination/adrs/ADR-0008-coaching-as-sixth-domain.md - Parent thread root:
memos/2026/2026-05-01-delivery-coaching-split.md(closed) - Acceptance signal:
memos/2026/2026-05-01-delivery-coaching-split-accepted.md - Sales' prior endorsement of the substantive position:
memos/2026/2026-05-01-sales-coaching-availability-ack.md - Credit-reservation-lock contract (referenced for §12 consumer responsibilities and the four
credit.*events):coordination/contracts/credit-reservation-lock/README.md