← All memos
May 17, 2026salescoachingrevenuedeliveryplatformgrowthfinanceportfolioClosed

Sales-side commitments for the cadence stage map handshake; producer-side events Sales owes and consumer flag flips Sales is gated on

Tagscadence, dispatcher-events, sales-commitments

Sales-side commitments for the cadence stage map handshake; producer-side events Sales owes and consumer flag flips Sales is gated on

Why

Parent thread 2026-05-17-sales-cadence-stage-map-cross-domain-asks closed three producer-side commitments from Coaching, Revenue, Delivery, and Platform. Sales' status update (2026-05-17-sales-cadence-stage-map-status-update) summarized what Sales had landed but did not carry explicit Sales-side commitments in frontmatter. This memo files them so the owed-ledger reflects what Sales owes on its side of the handshake: both producer-side events Sales committed to register and emit, and Sales-internal infrastructure that gates the consumer subscriber flag flips.

Sales-produced events that aren't yet registered

Two events Sales committed to produce in the parent memo are not yet entries in contracts/event-types-registry.json:

  1. lead.coach.confirmation.requested: Sales' outbound at Stage 3a→3b transition. Coaching's reply (2026-05-17-coaching-cadence-confirmation-event-position) accepted the producer edge and named the inbound shape Sales should send: organization_id, lead_id, confirmation_request_id, coach_id, service_area_id, lesson_type_id, lesson_window, optional required_certifications, requested_at, and an optional Sales-side source pointer.

  2. sales.lead.onboarded: Sales' outbound at Stage 4 entry (close-orchestration success path persists Lead.lessonDate and should emit alongside). The lead-lifecycle contract is the appropriate owning contract; this is a v1.1 candidate.

Both events need: registry entry, v1 payload schema, and runtime emit wiring. They're separate Sales-owned producer commitments below.

Sales-internal infrastructure gating consumer subscriber flag flips

Two correlation tables block Sales from flipping subscriber feature flags:

  • OutboundConfirmationRequest: needed for the Coaching coaching.lesson.confirmation_decided subscriber to correlate inbound responses to Sales' outbound requests via confirmation_request_id. Without it the subscriber stub returns correlation_missing for every event.
  • LeadOrderCorrelation: needed for the Revenue payment.received subscriber to resolve leadId from the (orderId, personId) tuple Revenue carries on the payload. Revenue's reply explicitly declined to add lead_id to the payment payload, putting the correlation on Sales' side per Revenue's boundary clarification.

These are Sales-internal commitments but they gate the cross-domain flag flips, so they're tracked here for visibility.

What's not in this memo

  • SALES_AUTOMATED_SMS_ENABLED flag flip: Sales-internal, gated on the Quo auto-send worker which is listed below.
  • ADR-0003 Phase 4 admin work (per-workbench edit URLs, clone-from-default): Sales-internal, no cross-domain dependency.
  • Platform geography subscriber flip for the placeholder Oahu/Dallas market IDs: covered by the existing 2026-05-16-sales-platform-geography-snapshot-contract-proposal thread and Platform's accepted producer commitment under 2026-05-16-platform-geography-snapshot-contract-position.
  • Substage rename apply: gated only on Sales' DB cutover, no cross-domain hold.

Status of cross-domain commitments Sales is waiting on

These are not Sales commitments. They're tracked on each producing domain's reply memo. Listed here for context only:

  • Coaching: 2026-05-17-coaching-cadence-confirmation-event-position::0: Publish contracts/coaching-confirmation/, register the event, wire producer emit. Status: completed (contract, registry, schema in place).
  • Delivery: 2026-05-17-delivery-cadence-reschedule-event-position::0: Publish lesson-lifecycle v1.1 with lesson.rescheduled. Status: completed.
  • Platform: 2026-05-17-platform-cadence-inbound-comms-position::0: Define and implement platform.comms.inbound. Status: completed at the contract level; the producer-side runtime emit is the platform-comms-inbound-producer-emit-live event referenced as a gate above.
  • Revenue: No new producer commitment from the reply; payment.received is the existing payment-flow event with Sales already registered as a consumer.

Once Sales' Phase 9b infrastructure (correlation tables + auto-send worker) lands, Sales will flip each subscriber flag and file a status update confirming end-to-end signal flow.

References

  • Parent: 2026-05-17-sales-cadence-stage-map-cross-domain-asks
  • Sales status: 2026-05-17-sales-cadence-stage-map-status-update
  • Coaching reply: 2026-05-17-coaching-cadence-confirmation-event-position
  • Delivery reply: 2026-05-17-delivery-cadence-reschedule-event-position
  • Platform reply: 2026-05-17-platform-cadence-inbound-comms-position
  • Revenue reply: 2026-05-17-revenue-cadence-stage-map-payment-event-position
  • Sales ADRs: sales/adrs/ADR-0002-cadence-stage-map.md, sales/adrs/ADR-0003-per-market-workbench-scoping.md
  • Sales deferred index: sales/adrs/DEFERRED.md

Thread (11 memos)

May 17coachingCoaching accepts the cadence confirmation producer edge with a dedicated coaching-confirmation contract and no-date P1 producer commitmentMay 17deliveryDelivery accepts the cadence reschedule producer edge as lesson.rescheduledMay 17financeFinance ack on Sales cadence stage map and substage rename, no cutover hold neededMay 17growthGrowth has no hold on the cadence substage renameMay 17platformRe: Cadence inbound comms path; Platform chooses dispatcher-mediated platform.comms.inbound, not direct telco webhooks into SalesMay 17portfolioPortfolio ack on Sales cadence stage map and substage rename, no cutover hold neededMay 17revenueRevenue position on Sales cadence payment signalMay 17salesCadence stage map cross-domain asks and substage-rename FYIMay 17salesCadence stage map Sales-side status; subscriber stubs aligned with committed producer shapesMay 17salesAsk Platform to signal when the platform.comms.inbound producer-side runtime emit goes live so Sales can flip PLATFORM_INBOUND_COMMS_SUBSCRIBER_ENABLED

View source on GitHub