FAILURE MAP
← Case archive

FA-75311 / CRDT convergence / Open access

State vector diff: the local vector reports the last clock instead of the next one · case 01

The advertised state vector is one behind, so peers resend the last clock of every client.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The local vector stores the final covered clock rather than the next expected clock.

THE FAILURE

The local vector stores the final covered clock rather than the next expected clock.

Unsuccessful approach: Counting structs per client ignores struct lengths.

Case contract

The local store holds structs [client, clock, length] covering clocks clock..clock+length-1. The remote state vector maps client ids (decimal strings, as decoded from JSON) to the next clock it expects; absent clients expect 0. Send, sorted by client then clock, every struct part the remote lacks, slicing a partly known struct to start at the expected clock. Also return the local state vector.

Why this case matters

Delta sync in sequence CRDTs exchanges state vectors to ship only the structs the peer is missing.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(structs, remote):
    send = []
    local = {}
    for client, clock, length in sorted(structs):
        local[str(client)] = max(local.get(str(client), 0), clock + length - 1)
        start = remote.get(str(client), 0)
        if clock + length > start:
            if clock < start:
                send.append([client, start, clock + length - start])
            else:
                send.append([client, clock, length])
    return {'send': send, 'state_vector': sorted([k, v] for k, v in local.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {
    1: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 2, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 6, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 1}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('single client store', [[[4, 0, 3]], {'4': 1}], {'send': [[4, 1, 2]], 'state_vector': [['4', 3]]})],
    2: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 3], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 3, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 3], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 7, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 2}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 2, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 3], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('single client store', [[[4, 0, 4]], {'4': 1}], {'send': [[4, 1, 3]], 'state_vector': [['4', 4]]})],
    3: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 4], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 4, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 4], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 3], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 8, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 3}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 3, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 4], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('single client store', [[[4, 0, 5]], {'4': 1}], {'send': [[4, 1, 4]], 'state_vector': [['4', 5]]})],
    4: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 5], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 5, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 5], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 4], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 9, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 4}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 4, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 5], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('single client store', [[[4, 0, 6]], {'4': 1}], {'send': [[4, 1, 5]], 'state_vector': [['4', 6]]})],
    5: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 6], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 6, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 6], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 5], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 10, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 5}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 5, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 6], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('single client store', [[[4, 0, 7]], {'4': 1}], {'send': [[4, 1, 6]], 'state_vector': [['4', 7]]})],
}[N]
for label, args, expected in cases:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
empty remote vector gets everything{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
remote caught up gets nothing{'send': [], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
boundary between structs{'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
partial struct is sliced{'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
remote ahead of local{'send': [], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
unknown remote clients count from zero{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
late struct partially known{'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 8], ['2', 1], ['7', 2]]}{'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
single client store{'send': [[4, 1, 2]], 'state_vector': [['4', 2]]}{'send': [[4, 1, 2]], 'state_vector': [['4', 3]]}Failed

SHA-256 / fe4906ec6ebb6c018e7a3ad3472fd820e3df93be6a080d8844bc0eca480c32fc

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(structs, remote):
    send = []
    local = {}
    for client, clock, length in sorted(structs):
        local[str(client)] = local.get(str(client), 0) + 1
        start = remote.get(str(client), 0)
        if clock + length > start:
            if clock < start:
                send.append([client, start, clock + length - start])
            else:
                send.append([client, clock, length])
    return {'send': send, 'state_vector': sorted([k, v] for k, v in local.items())}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
cases = {
    1: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 2, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 6, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 1}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 2], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}), ('single client store', [[[4, 0, 3]], {'4': 1}], {'send': [[4, 1, 2]], 'state_vector': [['4', 3]]})],
    2: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 3], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 3, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 3], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 7, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 2}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 2, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 3], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 3], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 3], ['7', 3]]}), ('single client store', [[[4, 0, 4]], {'4': 1}], {'send': [[4, 1, 3]], 'state_vector': [['4', 4]]})],
    3: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 4], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 4, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 4], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 3], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 8, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 3}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 3, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 4], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 4], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 4], ['7', 3]]}), ('single client store', [[[4, 0, 5]], {'4': 1}], {'send': [[4, 1, 4]], 'state_vector': [['4', 5]]})],
    4: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 5], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 5, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 5], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 4], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 9, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 4}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 4, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 5], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 5], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 5], ['7', 3]]}), ('single client store', [[[4, 0, 6]], {'4': 1}], {'send': [[4, 1, 5]], 'state_vector': [['4', 6]]})],
    5: [('empty remote vector gets everything', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 6], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('remote caught up gets nothing', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 9, '2': 6, '7': 3}], {'send': [], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('boundary between structs', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 3, '7': 2}], {'send': [[1, 3, 2], [1, 5, 4], [2, 0, 6], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('partial struct is sliced', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 4, '2': 1}], {'send': [[1, 4, 1], [1, 5, 4], [2, 1, 5], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('remote ahead of local', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 20, '2': 10, '7': 9}], {'send': [], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('unknown remote clients count from zero', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'2': 5}], {'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 5, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('late struct partially known', [[[1, 0, 3], [1, 3, 2], [2, 0, 6], [1, 5, 4], [7, 0, 2], [7, 2, 1]], {'1': 7, '7': 1}], {'send': [[1, 7, 2], [2, 0, 6], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 6], ['7', 3]]}), ('single client store', [[[4, 0, 7]], {'4': 1}], {'send': [[4, 1, 6]], 'state_vector': [['4', 7]]})],
}[N]
for label, args, expected in cases:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
empty remote vector gets everything{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
remote caught up gets nothing{'send': [], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
boundary between structs{'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [[1, 3, 2], [1, 5, 4], [2, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
partial struct is sliced{'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [[1, 4, 1], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
remote ahead of local{'send': [], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
unknown remote clients count from zero{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [[1, 0, 3], [1, 3, 2], [1, 5, 4], [2, 1, 1], [7, 0, 2], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
late struct partially known{'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 3], ['2', 1], ['7', 2]]}{'send': [[1, 7, 2], [2, 0, 2], [7, 1, 1], [7, 2, 1]], 'state_vector': [['1', 9], ['2', 2], ['7', 3]]}Failed
single client store{'send': [[4, 1, 2]], 'state_vector': [['4', 1]]}{'send': [[4, 1, 2]], 'state_vector': [['4', 3]]}Failed

SHA-256 / 1d73fa9098ed847562a55ecc0ba600af9fd3587ee99811a985958c0ef8898772

HELD IN THE MEMBER ARCHIVE

The verified repair and its recorded checks are member-only.

This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.

Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.

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

Sign in to the archive ↗

Verification & scope

A deterministic, bounded teaching model of one replicated data type with stipulated operation and merge rules; it is not a production CRDT library and makes no claim of conformance to any specific published design. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.

Observations recorded using Python 3.12.14 at 2026-09-29T14:49:05.271767+00:00.

Case digest / ebcef68e9ccb877e25fbe75a5d7a8d5c74ecfcc36ca6115ea7c6b5c82fc863e4