FAILURE MAP
← Case archive

FA-74905 / CRDT convergence / Member archive

LWW register with Lamport stamps: an adopted value is re-stamped as a local write · case 05

After relaying a value, a replica makes it win or lose ties it should not.

Member previewVariant 5 · 3 implementations · 8 checks per implementation

Case contract

Each replica holds a register [value, clock, writer] and a Lamport clock, all starting at [None, 0, ""] and 0. ["set", r, v] increments r's clock and stamps v with (clock, r). ["send", s, d] delivers s's register to d: d's clock becomes max(own, incoming clock) and d adopts the incoming register when (clock, writer) is lexicographically larger. Return values and clocks per replica.

Why this case matters

Last-writer-wins registers need total, replica-independent stamp ordering to converge.

One recorded failure

Sample boundary fixture

This sample comes from the broken implementation of a controlled reproducer.

Boundary fixtureActualExpectedOutcome
ring gossip converges{"clocks": [1, 1, 1], "values": ["C", "B", "C"]}{"clocks": [1, 1, 1], "values": ["C", "C", "C"]}Failed

MEMBER ARCHIVE

The complete case is available to members.

This record includes three runnable implementations, regression fixtures, execution results, and source hashes.

Member access is invitation-based. Sign in with your invited account to inspect the sources.

Sign in to the archive ↗