Understand the failure.
Verify the repair.
Small, reproducible software failures. The broken implementation, the fix that didn’t work, and the one that passed—preserved together.
Explore the cases ↓How results are verified ↗WHAT THE ARCHIVE CONTAINS
100840 executable cases. 20168 are open.
Every case records the implementation that fails, the fix that did not work, and the repair that passed its checks—with recorded outputs and source hashes. This release adds 100840 cases across 20168 failure mechanisms and 254 domains.
The open tier gives you the failure and the unsuccessful fix for one case in every mechanism. The remaining 80672 cases, 5 variants per mechanism, are member-only: the verified repair, its recorded checks, and the full fixture suite are held in the member archive. Read the methodology ↗
A RECORD OF WHAT WENT WRONG
Browse the archive / 100840
LWW register with Lamport stamps: an adopted value is re-stamped as a local write · case 01
After relaying a value, a replica makes it win or lose ties it should not.
LWW register with Lamport stamps: an adopted value is re-stamped as a local write · case 02
After relaying a value, a replica makes it win or lose ties it should not.
LWW register with Lamport stamps: an adopted value is re-stamped as a local write · case 03
After relaying a value, a replica makes it win or lose ties it should not.
LWW register with Lamport stamps: an adopted value is re-stamped as a local write · case 04
After relaying a value, a replica makes it win or lose ties it should not.
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.
LWW register with Lamport stamps: writer id outranks the clock · case 01
A replica with a large id wins even with a much older write.
LWW register with Lamport stamps: writer id outranks the clock · case 02
A replica with a large id wins even with a much older write.
LWW register with Lamport stamps: writer id outranks the clock · case 03
A replica with a large id wins even with a much older write.
LWW register with Lamport stamps: writer id outranks the clock · case 04
A replica with a large id wins even with a much older write.
LWW register with Lamport stamps: writer id outranks the clock · case 05
A replica with a large id wins even with a much older write.
LWW element set with add bias: equal add and remove timestamps hide the element · case 01
An element added and removed at the same timestamp disappears, contrary to the add-wins tie rule.
LWW element set with add bias: equal add and remove timestamps hide the element · case 02
An element added and removed at the same timestamp disappears, contrary to the add-wins tie rule.
LWW element set with add bias: equal add and remove timestamps hide the element · case 03
An element added and removed at the same timestamp disappears, contrary to the add-wins tie rule.
LWW element set with add bias: equal add and remove timestamps hide the element · case 04
An element added and removed at the same timestamp disappears, contrary to the add-wins tie rule.
LWW element set with add bias: equal add and remove timestamps hide the element · case 05
An element added and removed at the same timestamp disappears, contrary to the add-wins tie rule.
LWW element set with add bias: merge overwrites newer timestamps with older ones · case 01
Merging an older replica state resurrects or hides elements depending on delivery order.
LWW element set with add bias: merge overwrites newer timestamps with older ones · case 02
Merging an older replica state resurrects or hides elements depending on delivery order.
LWW element set with add bias: merge overwrites newer timestamps with older ones · case 03
Merging an older replica state resurrects or hides elements depending on delivery order.
LWW element set with add bias: merge overwrites newer timestamps with older ones · case 04
Merging an older replica state resurrects or hides elements depending on delivery order.
LWW element set with add bias: merge overwrites newer timestamps with older ones · case 05
Merging an older replica state resurrects or hides elements depending on delivery order.
LWW element set with add bias: merge omits the remove map · case 01
Removes never reach other replicas, which keep showing deleted elements.
LWW element set with add bias: merge omits the remove map · case 02
Removes never reach other replicas, which keep showing deleted elements.
LWW element set with add bias: merge omits the remove map · case 03
Removes never reach other replicas, which keep showing deleted elements.
LWW element set with add bias: merge omits the remove map · case 04
Removes never reach other replicas, which keep showing deleted elements.
LWW element set with add bias: merge omits the remove map · case 05
Removes never reach other replicas, which keep showing deleted elements.
LWW element set with add bias: a delayed local add lowers the stored timestamp · case 01
An old add delivered late makes a newer element lose to an intermediate remove.
LWW element set with add bias: a delayed local add lowers the stored timestamp · case 02
An old add delivered late makes a newer element lose to an intermediate remove.
LWW element set with add bias: a delayed local add lowers the stored timestamp · case 03
An old add delivered late makes a newer element lose to an intermediate remove.
LWW element set with add bias: a delayed local add lowers the stored timestamp · case 04
An old add delivered late makes a newer element lose to an intermediate remove.
LWW element set with add bias: a delayed local add lowers the stored timestamp · case 05
An old add delivered late makes a newer element lose to an intermediate remove.
Observed-remove set with unique tags: add tags collide across replicas · case 01
Removing an element at one replica also cancels a concurrent add of the same element elsewhere.
Observed-remove set with unique tags: add tags collide across replicas · case 02
Removing an element at one replica also cancels a concurrent add of the same element elsewhere.
Observed-remove set with unique tags: add tags collide across replicas · case 03
Removing an element at one replica also cancels a concurrent add of the same element elsewhere.
Observed-remove set with unique tags: add tags collide across replicas · case 04
Removing an element at one replica also cancels a concurrent add of the same element elsewhere.
Observed-remove set with unique tags: add tags collide across replicas · case 05
Removing an element at one replica also cancels a concurrent add of the same element elsewhere.
Observed-remove set with unique tags: remove deletes locally without tombstones · case 01
Removed elements come back as soon as a peer that still holds them merges in.
Observed-remove set with unique tags: remove deletes locally without tombstones · case 02
Removed elements come back as soon as a peer that still holds them merges in.
Observed-remove set with unique tags: remove deletes locally without tombstones · case 03
Removed elements come back as soon as a peer that still holds them merges in.
Observed-remove set with unique tags: remove deletes locally without tombstones · case 04
Removed elements come back as soon as a peer that still holds them merges in.
Observed-remove set with unique tags: remove deletes locally without tombstones · case 05
Removed elements come back as soon as a peer that still holds them merges in.
Observed-remove set with unique tags: merge does not carry tombstones · case 01
A remove never takes effect on replicas other than the one where it happened.
Observed-remove set with unique tags: merge does not carry tombstones · case 02
A remove never takes effect on replicas other than the one where it happened.
Observed-remove set with unique tags: merge does not carry tombstones · case 03
A remove never takes effect on replicas other than the one where it happened.
Observed-remove set with unique tags: merge does not carry tombstones · case 04
A remove never takes effect on replicas other than the one where it happened.
Observed-remove set with unique tags: merge does not carry tombstones · case 05
A remove never takes effect on replicas other than the one where it happened.
Observed-remove set with unique tags: merge filters only elements the sender still holds · case 01
An element removed at the sender stays visible at the receiver after merge.
Observed-remove set with unique tags: merge filters only elements the sender still holds · case 02
An element removed at the sender stays visible at the receiver after merge.
Observed-remove set with unique tags: merge filters only elements the sender still holds · case 03
An element removed at the sender stays visible at the receiver after merge.
Observed-remove set with unique tags: merge filters only elements the sender still holds · case 04
An element removed at the sender stays visible at the receiver after merge.
Observed-remove set with unique tags: merge filters only elements the sender still holds · case 05
An element removed at the sender stays visible at the receiver after merge.
Observed-remove set with unique tags: elements with no live tags remain members · case 01
A fully removed element keeps appearing in the membership list after merge.
Observed-remove set with unique tags: elements with no live tags remain members · case 02
A fully removed element keeps appearing in the membership list after merge.
Observed-remove set with unique tags: elements with no live tags remain members · case 03
A fully removed element keeps appearing in the membership list after merge.
Observed-remove set with unique tags: elements with no live tags remain members · case 04
A fully removed element keeps appearing in the membership list after merge.
Observed-remove set with unique tags: elements with no live tags remain members · case 05
A fully removed element keeps appearing in the membership list after merge.
Multi-value register: equal version vectors dominate each other · case 01
Merging a replica with an identical copy of its state erases the register value.
Multi-value register: equal version vectors dominate each other · case 02
Merging a replica with an identical copy of its state erases the register value.
Multi-value register: equal version vectors dominate each other · case 03
Merging a replica with an identical copy of its state erases the register value.
Multi-value register: equal version vectors dominate each other · case 04
Merging a replica with an identical copy of its state erases the register value.
Multi-value register: equal version vectors dominate each other · case 05
Merging a replica with an identical copy of its state erases the register value.
Multi-value register: a new write summarizes only the first sibling · case 01
A write meant to resolve a conflict leaves the other concurrent value alive.
Multi-value register: a new write summarizes only the first sibling · case 02
A write meant to resolve a conflict leaves the other concurrent value alive.
Multi-value register: a new write summarizes only the first sibling · case 03
A write meant to resolve a conflict leaves the other concurrent value alive.
Multi-value register: a new write summarizes only the first sibling · case 04
A write meant to resolve a conflict leaves the other concurrent value alive.
Multi-value register: a new write summarizes only the first sibling · case 05
A write meant to resolve a conflict leaves the other concurrent value alive.
Multi-value register: repeated writes by one replica reuse the same counter · case 01
A replica's second write carries the same vector as its first and loses against the stale value.
Multi-value register: repeated writes by one replica reuse the same counter · case 02
A replica's second write carries the same vector as its first and loses against the stale value.
Multi-value register: repeated writes by one replica reuse the same counter · case 03
A replica's second write carries the same vector as its first and loses against the stale value.
Multi-value register: repeated writes by one replica reuse the same counter · case 04
A replica's second write carries the same vector as its first and loses against the stale value.
Multi-value register: repeated writes by one replica reuse the same counter · case 05
A replica's second write carries the same vector as its first and loses against the stale value.
Multi-value register: merge only prunes against incoming siblings · case 01
A stale incoming value survives next to the newer local value that supersedes it.
Multi-value register: merge only prunes against incoming siblings · case 02
A stale incoming value survives next to the newer local value that supersedes it.
Multi-value register: merge only prunes against incoming siblings · case 03
A stale incoming value survives next to the newer local value that supersedes it.
Multi-value register: merge only prunes against incoming siblings · case 04
A stale incoming value survives next to the newer local value that supersedes it.
Multi-value register: merge only prunes against incoming siblings · case 05
A stale incoming value survives next to the newer local value that supersedes it.
Multi-value register: repeated merges duplicate the same sibling · case 01
Every re-merge of already known state adds another copy of the same value.
Multi-value register: repeated merges duplicate the same sibling · case 02
Every re-merge of already known state adds another copy of the same value.
Multi-value register: repeated merges duplicate the same sibling · case 03
Every re-merge of already known state adds another copy of the same value.
Multi-value register: repeated merges duplicate the same sibling · case 04
Every re-merge of already known state adds another copy of the same value.
Multi-value register: repeated merges duplicate the same sibling · case 05
Every re-merge of already known state adds another copy of the same value.
Delta causal context join: one-sided dots are tested against their own context · case 01
New additions known to only one replica disappear on join.
Delta causal context join: one-sided dots are tested against their own context · case 02
New additions known to only one replica disappear on join.
Delta causal context join: one-sided dots are tested against their own context · case 03
New additions known to only one replica disappear on join.
Delta causal context join: one-sided dots are tested against their own context · case 04
New additions known to only one replica disappear on join.
Delta causal context join: one-sided dots are tested against their own context · case 05
New additions known to only one replica disappear on join.
Delta causal context join: coverage ignores the dot cloud · case 01
A dot removed after out-of-order delivery comes back on join.
Delta causal context join: coverage ignores the dot cloud · case 02
A dot removed after out-of-order delivery comes back on join.
Delta causal context join: coverage ignores the dot cloud · case 03
A dot removed after out-of-order delivery comes back on join.
Delta causal context join: coverage ignores the dot cloud · case 04
A dot removed after out-of-order delivery comes back on join.
Delta causal context join: coverage ignores the dot cloud · case 05
A dot removed after out-of-order delivery comes back on join.
Delta causal context join: the newest dot in the vector is treated as unseen · case 01
An element removed at the peer survives when its dot equals the peer's vector entry.
Delta causal context join: the newest dot in the vector is treated as unseen · case 02
An element removed at the peer survives when its dot equals the peer's vector entry.
Delta causal context join: the newest dot in the vector is treated as unseen · case 03
An element removed at the peer survives when its dot equals the peer's vector entry.
Delta causal context join: the newest dot in the vector is treated as unseen · case 04
An element removed at the peer survives when its dot equals the peer's vector entry.
Delta causal context join: the newest dot in the vector is treated as unseen · case 05
An element removed at the peer survives when its dot equals the peer's vector entry.
Delta causal context join: the joined vector takes the second state's entries · case 01
The joined context regresses, later letting removed dots reappear.
Delta causal context join: the joined vector takes the second state's entries · case 02
The joined context regresses, later letting removed dots reappear.
Delta causal context join: the joined vector takes the second state's entries · case 03
The joined context regresses, later letting removed dots reappear.
Delta causal context join: the joined vector takes the second state's entries · case 04
The joined context regresses, later letting removed dots reappear.
Delta causal context join: the joined vector takes the second state's entries · case 05
The joined context regresses, later letting removed dots reappear.
INSPECTABLE BY DESIGN
Every result has a runnable source.
Runnable implementations with recorded outputs, source hashes, and explicit contracts. Related variants share a failure mechanism and belong together in evaluation splits.
Read the methodology ↗