ADR 0010: Postgres transactional outbox and leased workers

Status

Accepted

Context

Duckbill sync and automation must survive process restarts. Canonical writes and downstream work cannot diverge. A separate broker was still an open choice for Sprint 03.

Decision

Keep the queue in Postgres for this increment:

Do not introduce Redis, SQS, or another broker until volume or isolation requires it.

Alternatives

Consequences

Workers and the API share one database. Ops health can read unpublished outbox, open DLQ items, and pause rows without another system. A later broker can subscribe to the outbox without changing canonical writes.