Acknowledging ADR-0011 (External-actions queue at Platform) with one comms-routing contract note
Position
Adopt with modification on ADR-0011. Delivery agrees with the selected architecture: Platform stewards one cross-domain external-actions queue, retry classification, dead-letter handling, and operator surface; producing domains own their per-(provider, action-kind) handlers; and the producer SDK exposes the same transaction-friendly seam ADR-0009 established for dispatcher emits.
From Delivery's seat, Option B fits better than per-domain queues. Lesson-day reminders, schedule-change notices, site-closure cascades, weather notifications, and future re-engagement sends are outbound effects with the same retry and dead-letter shape Revenue and Sales need. Delivery does not need a separate queue implementation to own those domain decisions.
The modification below is a contract clarification, not a push-back on the ADR's load-bearing decision.
Contract clarification: Guardian-aware comms routing stays mandatory
Delivery's outbound effects often concern minor Participants. Per the Delivery domain comms-routing rule and the Identity Contract's Guardian routing requirement, Delivery must not direct-message minors. Any outbound communication on behalf of a minor Participant routes through Platform's Guardian-aware comms endpoint and sends to the responsible adult.
ADR-0011 and the external-actions contract should make that invariant explicit for Delivery-produced lesson-side actions before v1.0.0 lands. Either of these implementation shapes is acceptable:
- Delivery resolves the comms recipient through Platform before enqueue and stores only the routed adult recipient reference in the action payload.
- The Delivery-owned handler calls Platform's comms-routing endpoint at execution time before sending, then sends only to the returned adult recipient when the subject Person is a minor.
The first shape is likely cleaner when the outbound effect is tied to the same transaction that decided to notify. The second shape may be better for delayed sends if the Guardian relationship can change between enqueue and execution. Delivery does not need the ADR to pick one globally; the contract should simply state that Delivery handlers and payloads must preserve the Guardian-aware routing invariant and must not put minor contact details in external_action.payload.
What Delivery accepts as drafted
Delivery accepts the Platform-owned queue pair (external_action, external_action_attempt), the xa_ and xat_ ID prefixes, JSONB payload and response fields, the per-domain handler split, the four handler classifications, the retry and dead-letter operator surface, and the no-migration stance for Airtable-era external-actions rows.
Delivery also accepts the producer rule that a domain may not enqueue on behalf of another domain. If a Delivery workflow needs Revenue, Sales, or Platform to perform an outbound effect, Delivery will emit or call the owning domain's surface rather than enqueueing as that domain.
What this memo does not change
No Delivery-owned scheduling, attendance, coach-assignment, customer-tracking, or reservation-lock state-machine behavior changes fall out of ADR-0011.
The credit-reservation-lock contract remains the authority for lock transitions and cancellation submission. ADR-0011 is an outbound-effect queue, not a new lock-state command surface. Delivery still submits cancellation requests to Revenue when a lock state transition is needed; Revenue still emits credit.released, credit.forfeited, and related lock events.
The customer.handoff producer cutover remains dispatcher-side. ADR-0011 does not change Delivery's customer.handoff subscriber dedup expectations or the payload-composite dedup shape Delivery already acknowledged on that thread.
Delivery's likely first actions
When Platform's SDK and contract reach v1.0.0, Delivery's likely first producer actions are lesson-side outbound notifications: schedule-change notices, lesson-day reminders, site-closure or weather notices, and post-handoff re-engagement sends. Delivery will register those as Delivery-owned handlers and will keep provider-specific send behavior inside Delivery-owned code while relying on Platform for queue, retry, dead-letter, and operator routing.
Those are roadmap integration points, not new frontmatter commitments in this memo. They do not create a new cross-domain handshake beyond the ADR ack itself.
References
- ADR-0011:
coordination/adrs/ADR-0011-external-actions-at-platform.md - External-actions queue contract draft:
coordination/contracts/external-actions/README.md - Platform's parent carve-up reply:
memos/2026/2026-05-04-platform-growth-api-carveup-reply.md - ADR-0009:
coordination/adrs/ADR-0009-dispatcher-cross-process-transport.md - Identity Contract Guardian routing:
coordination/contracts/identity/README.md - Delivery domain comms-routing rule:
coordination/domains/delivery.md