The four escapes and the three currencies
The consolidated escape table
Every escape here is one of four moves. This table is the compression worth keeping.
| Move | Instances | What it buys | What it costs |
|---|---|---|---|
| Replace a timing claim with an ordering claim | terms, epochs, fencing tokens, map versions, attempt IDs, version vectors | safety under arbitrary delay | a counter that must be agreed once, and a receiver that must check it |
| Designate one event to mean n | quorum-committed log entry, ownership cutover, output commit, manifest swap | atomicity without simultaneity | a single point that must itself be atomic, and it breaks when the substrate stops offering one |
| Batch the coordination | leadership, leases, in-band context, closed timestamps | round trips amortized to near zero | a failover window, or a clock-drift assumption, or both |
| Restate the problem so coordination is unnecessary | CALM, escrow, UUIDs, commuting commands, semilattice gossip payloads, partial results, geographic ownership partitioning | the round trip disappears | available only when the semantics permit |
(Escrow means pre-allocating a share of a budget to each node, so only transfers between nodes need coordination. Closed timestamps are timestamps below which a replica promises no new writes will appear, so a follower can serve reads at them.)
The fourth row has no engineering cost and is used last. This has now been true in three different areas of the platform: declare your intent and reformulate the operation; use immutability and algebra; and here, CALM. It is no longer only an observation about how practitioners behave. It is a structural fact about where the cheap wins sit: all of them are at the interface between the mechanism and the semantics, which is exactly the boundary that no single engineer owns.
The three-currency structure runs through everything above: waiting, wasted work, or weakened semantics. Examples:
| Situation | Waiting | Wasted work | Weakened semantics |
|---|---|---|---|
| Tail over a fan-out | quorum wait | hedge | partial result |
| Read freshness | lease wait | ReadIndex round trip | stale follower read |
| Snapshot | aligned snapshot | unaligned snapshot | dropped state |
| Geo-replication | synchronous replication | two writers with conflicts | an RPO (acceptable data loss) accepted at design time |