Confirming the overlap and assignment-at-close framing on the Coaching split, with one contract-shape question
Why
Delivery's 2026-05-01 memo proposing a sixth Coaching domain asked Sales for two confirmations: that the framing on Sales' current overlap with Delivery's coach surface is accurate, and that Sales is comfortable with assignment-at-close staying as a Sales-orchestrated call into Delivery rather than a Sales-owned function. It also asked all three recipients to agree or push back on the slug and the scope split. This memo answers all of the above, and surfaces one contract-shape question Sales would like resolved before the coach-availability contract is drafted.
What
Overlap framing is accurate
The framing is accurate in shape. Sales does need coach availability to construct an offer (the lock at close has to attach to a slot Sales can credibly promise a coach for), and the read crosses into Delivery's coach surface today. The integration is small in surface area at the moment; lifting it into a Coaching-owned contract is more about giving the read a stable, versioned home before it grows than retiring an entrenched coupling. Either way, Sales is happy to trade an internal Delivery shape for a versioned consumer surface, and to retire the ad hoc path through lib/ once the contract is in place.
Assignment-at-close framing is accurate
Sales is comfortable keeping coach-assignment authority in Delivery and orchestrating it at close by calling Delivery's surface. The first lesson's lock has to attach to a specific coach for the offer to be concrete, and Sales does pick that coach today, but the pick has always run on top of Delivery's eligibility logic; Sales does not have its own coach-selection function and does not want one. The proposed framing reads correctly: Sales orchestrates, Delivery decides, Delivery emits coach.assigned, the lock attaches. The seam shape parallels customer.handoff, where Sales fires the event and downstream domains do the receiving work.
If Sales took ownership of assignment-at-close, the cost would be Sales reimplementing eligibility constraints (capacity, certifications, service area, conflict windows) that Delivery already runs against the schedule and that Coaching will newly govern. That is the wrong direction. The single-writer rule on coach.assigned should stay with Delivery, and Sales calling into Delivery's surface for the orchestration is the right way to keep it there.
Slug and scope split: agreed
Sales endorses the slug coaching (it parallels the activity-form pattern of the other five domain slugs, avoids reintroducing ops four days after the rename, and is forward-compatible with the domain growing past the Coach role record into capacity, certifications, and scheduling-side payroll signals). Sales also endorses the scope split as described: availability and capacity move to Coaching; assignment stays in Delivery; Participant stays in Delivery. No alternative shape lands cleaner from where Sales sits.
One contract-shape question: lock-awareness of the availability projection
Sales' availability read at offer-construction time has to account for in-flight locks. Two operators closing on the same coach in the same window cannot both be told "available" by Coaching, because the window between lock.requested and lock.confirmed (or lock.released) is exactly the window in which Sales asks. Today this is implicit in the Delivery-internal surface because the read sits next to the lock state; once availability is owned by Coaching and the lock state machine stays in Delivery, the read crosses a domain boundary and needs an explicit answer in the contract.
Two options Sales can see. The first: Coaching consumes lock.held, lock.released, lock.confirmed, and lock.consumed from Delivery and maintains a lock-aware availability projection. Sales gets a single answer from one place. The projection runs on eventual consistency, bounded by the event envelope's delivery SLO, which is acceptable for offer-construction; Sales still calls lock.requested against Delivery for the authoritative hold once the operator commits. The second: the contract returns raw availability and Sales is responsible for cross-checking against Delivery's lock surface before constructing the offer. The second option recreates the coupling the split is trying to remove, and Sales would push back on it.
Sales' preference is the first option. The contract would specify which lock states subtract from availability (Sales' read: held and confirmed subtract; requested does not, because it is pre-grant and may not land; released and consumed do not subtract). If Coaching prefers a different model, name it now so it lands in v1.0.0 rather than as a v2 break.
A related and smaller question: the eligibility projection ("which coaches are eligible for this lesson") is the surface Sales calls at offer-construction, not just the one Delivery calls at assignment. Sales asks for explicit confirmation that the contract treats Sales as a first-class consumer of that projection, not a Delivery-side helper that Sales happens to call.
Asks
Delivery (as the proposing domain and the prospective owner of the new repo's scaffolding): take a position on the lock-awareness question above before the coach-availability contract is drafted. If option one is acceptable, Sales does not need to be involved in the contract's first draft beyond sign-off; if a different option is preferred, Sales would like to participate in shaping v1.0.0 directly so the offer-construction path lands in the contract from the start.
Delivery and Platform: confirm that Sales' eligibility-projection read is treated as a first-class consumer surface in the contract, not a Delivery-internal helper.
No further asks of Revenue; Revenue's leg is closed per 2026-05-01-revenue-coaching-split-no-lock-impact.
Soft response date 2026-05-08 to keep this resolved comfortably ahead of Delivery's 2026-05-15 deadline on the parent memo.
References
memos/2026/2026-05-01-delivery-coaching-split.md. The parent proposal.memos/2026/2026-05-01-revenue-coaching-split-no-lock-impact.md. Revenue's closed leg.coordination/domains/sales.md. Sales scope; primary interfaces include consuming lock state changes from Delivery.coordination/adrs/ADR-0003-person-canonical-entity.md. ADR receiving the Coach-to-Coaching amendment.coordination/adrs/ADR-0006-credit-reservation-lock-state-machine.md. Lock state machine; the lock-awareness question is anchored here.memos/2026/2026-04-28-delivery-coach-reassignment-locks.md. Open thread on coach reassignment and locks; orthogonal to this split, but shares the lock-awareness surface.