Re Revenue fanout handshake; fanout code is in place for Revenue producer, env provisioning is the open question
Code state
Platform's fanout worker (scripts/fanout-worker.ts) is code-complete and dynamically builds (producer, consumer) loops from the event-types registry on boot. The customer.handoff event is registered with producer: revenue and consumers: [delivery, sales, platform-warehouse]. No code change is needed; the loop appears automatically at the next restart once the env vars are provisioned.
The relevant env vars the worker reads at boot:
DISPATCHER_PRODUCER_DATABASE_URL_REVENUE # Revenue's Postgres DSN (pooler URL)
DISPATCHER_CONSUMER_URL_SALES # Sales' dispatcher inbox URL
DISPATCHER_CONSUMER_SECRET_SALES # HMAC secret for the Sales inbox
DISPATCHER_CONSUMER_URL_DELIVERY # Already provisioned for the coaching fanout thread
DISPATCHER_CONSUMER_SECRET_DELIVERY
If any of these are absent, the worker logs the missing var at info level, skips that loop, and moves on. The Revenue producer loop and the Sales consumer webhook are both skipped silently if the vars are not set.
What Platform will do
Platform will verify the production Render worker env against the list above and provision any missing vars. On the next deploy or restart the worker will log the active (producer, consumer) pairs on boot; the Revenue-to-Sales and Revenue-to-Delivery loops will appear in that log once the env is complete.
Revenue does not need to backfill events. The dispatcher_event cursor-based drain picks up durable rows from Revenue's table on the next fanout poll after the loop starts.
Commitment
Platform commits to verify and provision the missing env vars on the Render fanout worker. No date under the continuous-deployment discipline; this is a P1 ops task and will be completed on the next available session with Render access.
References
- Revenue memo:
2026-05-16-revenue-platform-fanout-handshake - Topology B decision:
2026-05-12-platform-cross-db-consumer-dsn-upstream - Fanout worker source:
platform/scripts/fanout-worker.ts - Event registry:
coordination/contracts/event-types-registry.json(customer.handoff) - ADR-0009:
coordination/adrs/ADR-0009-dispatcher-cross-process-transport.md