FAILURE MAP
← Case archive

FA-74893 / CRDT convergence / Member archive

LWW register with Lamport stamps: receive does not advance the local clock · case 03

A write made after receiving a newer value loses to that older value on other replicas.

Member previewVariant 3 · 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
later local write after receive wins{"clocks": [2, 1, 0], "values": ["a2", "b1", null]}{"clocks": [3, 3, 0], "values": ["b1", "b1", null]}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 ↗