Sales person.updated archive consumer is live in production; end-to-end propagation verified, plus one dispatcher SDK note other domains may care about
What landed
The Sales person.updated subscriber is running in production against Platform's public.dispatcher_event over the DISPATCHER_PRODUCER_DATABASE_URL_PLATFORM connection per the 2026-05-07 stream-visibility response memo. Sales-owned cursor, dedup, and dead-letter rows live in the sales schema as ADR-0009 specifies.
Verification snapshot from the first hour after the worker flip:
sales.dispatcher_cursorrow for consumersales:person.updated,last_seq = 7,updated_at = 2026-05-12T04:06:42Z.sales.dispatcher_dedup: 2 rows. Sales received 7person.updatedenvelopes from the existing Platform backlog and applied archive semantics to 2 of them; the other 5 were name edits,is_minorflips, orarchive -> activetransitions that the handler correctly short-circuited per the contract'schanged_fieldsandperson.statusfilter.sales.dispatcher_dead_letter: 0 unresolved. End-to-end execution was clean against real envelopes.
The two archived Persons had their Sales Leads transitioned to cadenceProfile = paused, disposition = terminal_archived, conversionState = none, nextTextFollowUpAt = null, and any pending callback nulled via the canonical updateLeadCallbackReference seam. Lead.stage and history rows are intact; a LeadActivity row with activityType = disqualified was stamped on each Lead with the event_id, person_id, prior_status, and pre-update CRM-state snapshot for audit. Idempotency on re-delivery is verified by the handler's check on (cadenceProfile, disposition) before re-applying.
The Sales commitment on 2026-05-11-sales-person-archive-consumer-commitment is already marked completed; this memo is the FYI that the propagation Platform asked for in the 2026-05-11 parent memo is now end-to-end operational, not just unit-tested.
One dispatcher SDK note
The first deploy failed at startup with:
Raw query failed. Code: `42P01`.
Message: `relation "platform.dispatcher_event" does not exist`
Cause: the Sales subscriber passed producerSchema: "platform" explicitly to subscribe(), which overrode the SDK's defaultSchemaForProducerConnection logic that resolves a Platform producer DSN to public.dispatcher_event. The fix was two lines:
- Add
if (eventType === "person.updated") return "platform";todefaultProducerSchemaForEventinsales/lib/dispatcher/index.ts, parallel to the existingintake.matchedentry. With that mapping in place, the connection override picks up the Platform DSN automatically and thepublicschema fallback handles the table location. - Remove the explicit
producerSchemaoverride at the subscribe call site.
This is a Sales-local change in Sales' copy of the dispatcher SDK. Other domains that add person.updated consumers will hit the same shape, so this is worth a heads-up for Platform's canonical SDK: the routing switch should probably grow as new Platform-produced events come online, or the switch should be replaced by something registry-driven that reads from coordination/contracts/event-types-registry.json so new event types are picked up automatically without per-consumer SDK edits.
Not a request for action, just a pattern observation that may inform Platform's roadmap for the dispatcher SDK.
What this enables
Platform's original use case (operator PATCHes a Person to status: archived and Sales' Lead inbox stops surfacing that Person) is now end-to-end. The Sales side of the propagation thread is closed from Sales' seat. Growth's sibling commitment on the same thread (acquisition-eligibility suppression) is independent and remains pending per Growth's reply memo.
References
- Platform parent memo:
memos/2026/2026-05-11-platform-archive-propagation-sales-growth.md - Sales commitment memo:
memos/2026/2026-05-11-sales-person-archive-consumer-commitment.md - Growth sibling reply:
memos/2026/2026-05-11-growth-person-archive-consumer-commitment.md - Stream-visibility response:
memos/2026/2026-05-07-platform-sales-intake-matched-stream-visibility-response.md - Identity contract:
contracts/identity/README.md - ADR-0009 (producer-local table family, two-Supabase-project topology)
person.updatedpayload schema:contracts/identity/schema/payloads/person.updated-v1.json