Iron Core Outbox — Component Map

Neon Core DB + transactional Outbox → CF Workers Cron publisher → Workers VPC HTTP produce → Pulsar · Owner: Thy (SA) · DBA: Bernard · Network: Arjun · Argo PIC: Johny · Room: Database · 2026-10-19
Locked Designed Available Open

Wave 1: Core on Neon Free (not latency-sensitive). Durable fan-out = Outbox (no CF Queue). Publisher on Cloudflare Workers Cron via HTTP produce to Pulsar broker web :8080 over Workers VPC. Missed tick OK — next run drains backlog. One publisher path only (DOKS/Argo is fallback).

1 · Write path (same DB txn)
App / service
User System, upgrades, Core writes
Designed
→same txn
Neon Core DB
User / settings / business rows
Designed
+Outbox row
Outbox table
status=pending · indexed
Locked
2 · Publisher (CF Wave 1 preferred)
Workers Cron
Claim pending · ~15–60s
Designed
→SQL / Hyperdrive
SKIP LOCKED
pending → publishing
Locked
→HTTP produce
VPC Service
http → broker :8080
Open
→POST /topics
Pulsar
DOKS · in-cluster topics
Designed
→mark done
published
+ published_at
Locked
3 · Failure / retry (no event drop)
Pulsar / VPC down
Produce fails
Locked
→do not mark
Stay unpublished
pending / failed + attempts
Locked
→next tick
Retry claim
Drain backlog
Designed
↛no CF Queue
No CF Queue W1
Outbox is the buffer
Locked
4 · Cleaner (separate Cron)
Cleaner Cron
Separate from publisher
Designed
→published > 14d
Purge / archive
Keep failed until cleared
Designed
5 · Fallback (do not run both)
Argo CronWorkflow
DOKS · Johny PIC
Available
→native client
DOKS publisher
In-cluster → Pulsar
Open
⚠Argo 0/0 now
Stage 1 parked
Needs node + scale-up
Open

Status machine & indexes

pending→ publishing→ published / failed
  • Claim: FOR UPDATE SKIP LOCKED on pending — no single global cursor
  • Index: (status, id) for publisher; (status, published_at) for cleaner
  • Retention: published ~14 days then purge; failed until cleared
  • Consumers: at-least-once + idempotent on Pulsar side

Locks & open

  • Anson: Core not latency-sensitive; free-tier Neon; Outbox required
  • Arjun: Workers VPC HTTP produce; verify broker :8080 before VPC Service
  • Not Wave 1: binary Pulsar 6650, CF Queue, Debezium dual-path
  • Open: Anson GO on CF vs DOKS path; Bernard DDL; produce VPC Service