What delivery semantics forbids
What this article forbids
- Exactly-once delivery. It is the Two Generals problem. Not an engineering gap: a proof.
- Atomicity across two systems without a shared commit log or a blocking protocol.
- Telling "not done" from "done, ack lost". Permanently.
- Exactly-once for a non-idempotent external effect. No architecture, no framework, no vendor can do it.
- Recovering a record you did not retain. Retention is the hard boundary of every recovery story.
The escapes and their prices
| Escape | Buys | Costs |
|---|---|---|
| Make the effect repeatable (Fault tolerance) | effectively-once, whatever the transport | a key and a store, or a redesigned sink |
| Replay | fixes past wrongness, which nothing else does | retention cost, determinism discipline, pacing, blast radius |
| Idempotency by replacement | a replay that cannot count twice | a sink that can overwrite a partition or swap atomically |
| Version-based application | replayed and late records cannot overwrite newer state | a version or LSN in every record |
A record envelope (event_id, version) | the one guarantee that crosses every system boundary | one field each, from the first day |
| Reconciliation counts per hop | loss becomes visible | a job and an alert per hop |