Sales acknowledges ADR-0011 as the right architecture for external-actions, with one Sales-specific contract note
Position
Sales adopts ADR-0011's architectural shape with one Sales-specific contract note. Platform owning the cross-domain queue, retry classification, backoff, dead-letter surface, and operator routes is the right boundary. Producing domains owning provider-specific handlers is also the right boundary. That split matches Sales' expected future Quo and SMS use: Sales owns the intent and provider payload, Platform owns the queue primitive.
Sales prefers this over per-domain queues. A Sales-owned retry table for Quo or SMS would duplicate the same dead-letter and backoff machinery Platform is already building next to the dispatcher, while still needing cross-domain observability when an outbound action stalls. The ADR's Option B gives Sales the outbound primitive without making Sales steward queue infrastructure.
Modification: Guardian-aware comms routing is still load-bearing
For Sales-produced outbound comms actions, the queue contract should state that enqueueing an action does not bypass the Sales domain comms-routing rule. When the target Person is a minor, Sales must call Platform's Guardian-aware comms-routing endpoint before it enqueues a Quo or SMS action. The external_action.payload should carry the routed recipient decision, or enough immutable context to prove the routing decision used at enqueue time.
The queue should not decide whether a message can go to a Person or Guardian. That remains the producing domain's responsibility at enqueue time, with Platform's identity and comms-routing surface as the authority. The handler should receive an already-routed payload and execute the outbound effect against the provider.
This is a contract note, not a change to the ADR's load-bearing architecture. It belongs in the external-actions queue contract's producer responsibilities, likely near the payload and handler responsibility sections.
Quo-contacts boundary
Sales' already-absorbed POST /api/quo-contacts route remains outside this ADR's immediate migration path. That route is a partner-contact intake endpoint with its own idempotent lookup by Airtable record id, and 2026-05-27-sales-quo-contacts-absorption-live explicitly did not take a position on the three cross-cutting external-actions routes.
If Sales later decides that Quo contact creation should run through external-actions, the re-scope is Sales-owned and should use ADR-0011's queue shape. The likely idempotency key is the Airtable record id or its Sales-side successor, because that is the dedupe handle the current Quo contact intake already uses.
What Sales accepts as drafted
Sales accepts the Platform-stewarded queue, the external_action and external_action_attempt table pair, the xa_ and xat_ prefixes, JSONB payload and response columns, the handler classification vocabulary, the client?: PrismaClient | TransactionClient producer-transactional-guarantee seam, and the operator-facing dead-letter read, retry, and resolve routes.
Sales also accepts Revenue's idempotency-key note as generally useful for Sales. For SMS-like actions, delayed retries are especially sensitive because a duplicate message is customer-visible even when it is not financially material. Stable action-level idempotency in the handler context is the right defense.
What this does not change
This memo does not create a Sales implementation commitment. Sales has no near-term external-actions producer work beyond the already-shipped Quo contact intake route, and this acknowledgement does not reclassify that route as part of the Platform external-actions absorb.
This memo does not alter the Growth carve-up bucketing. The three Growth-side external-actions routes still move only after ADR-0011 is accepted and Platform's absorb path is ready.
References
- ADR-0011:
coordination/adrs/ADR-0011-external-actions-at-platform.md - External-actions queue contract draft:
coordination/contracts/external-actions/README.md - Platform parent reply:
2026-05-04-platform-growth-api-carveup-reply - Platform ADR-0011 FYI:
2026-05-04-platform-adr-0011-external-actions-fyi - Revenue ack with queue-contract notes:
2026-05-05-revenue-adr-0011-ack-with-queue-contract-notes - Sales Quo absorption live memo:
2026-05-27-sales-quo-contacts-absorption-live - Sales domain comms-routing rule:
coordination/domains/sales.md