Skip to content
About
Main content

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.

MoveInstancesWhat it buysWhat it costs
Replace a timing claim with an ordering claimterms, , , map versions, attempt IDs, version vectors under arbitrary delaya counter that must be agreed once, and a receiver that must check it
Designate one event to mean nquorum-committed log entry, ownership cutover, output commit, manifest swapatomicity without simultaneitya single point that must itself be atomic, and it breaks when the substrate stops offering one
Batch the coordinationleadership, , in-band context, round trips amortized to near zeroa failover window, or a clock-drift assumption, or both
Restate the problem so coordination is unnecessary, , UUIDs, commuting commands, semilattice payloads, , geographic ownership partitioningthe round trip disappearsavailable 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 promises no new writes will appear, so a 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:

SituationWaitingWasted workWeakened semantics
over a fan-out waithedgepartial result
Read freshnesslease waitReadIndex round tripstale follower read
Snapshotaligned snapshotunaligned snapshotdropped state
Geo-replicationsynchronous replicationtwo writers with conflictsan RPO (acceptable data loss) accepted at design time