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
Fat margin is applied only to the upper corner · case 01
Jitter toward negative axes forces constant reinsertions.
Fat margin is applied only to the upper corner · case 02
Jitter toward negative axes forces constant reinsertions.
Fat margin is applied only to the upper corner · case 03
Jitter toward negative axes forces constant reinsertions.
Fat margin is applied only to the upper corner · case 04
Jitter toward negative axes forces constant reinsertions.
Fat margin is applied only to the upper corner · case 05
Jitter toward negative axes forces constant reinsertions.
Displacement multiplier is applied to x only · case 01
Falling bodies escape their fat boxes while sideways movers are fine.
Displacement multiplier is applied to x only · case 02
Falling bodies escape their fat boxes while sideways movers are fine.
Displacement multiplier is applied to x only · case 03
Falling bodies escape their fat boxes while sideways movers are fine.
Displacement multiplier is applied to x only · case 04
Falling bodies escape their fat boxes while sideways movers are fine.
Displacement multiplier is applied to x only · case 05
Falling bodies escape their fat boxes while sideways movers are fine.
Oversized fat boxes are never rebuilt · case 01
After a fast move stops, the huge fat box keeps generating false pairs.
Oversized fat boxes are never rebuilt · case 02
After a fast move stops, the huge fat box keeps generating false pairs.
Oversized fat boxes are never rebuilt · case 03
After a fast move stops, the huge fat box keeps generating false pairs.
Oversized fat boxes are never rebuilt · case 04
After a fast move stops, the huge fat box keeps generating false pairs.
Oversized fat boxes are never rebuilt · case 05
After a fast move stops, the huge fat box keeps generating false pairs.
Fat box size test uses half perimeter instead of area · case 01
The shrink rule triggers at the wrong sizes.
Fat box size test uses half perimeter instead of area · case 02
The shrink rule triggers at the wrong sizes.
Fat box size test uses half perimeter instead of area · case 03
The shrink rule triggers at the wrong sizes.
Fat box size test uses half perimeter instead of area · case 04
The shrink rule triggers at the wrong sizes.
Fat box size test uses half perimeter instead of area · case 05
The shrink rule triggers at the wrong sizes.
Vertical motion extension tests the x displacement sign · case 01
Bodies moving diagonally extend the wrong vertical side.
Vertical motion extension tests the x displacement sign · case 02
Bodies moving diagonally extend the wrong vertical side.
Vertical motion extension tests the x displacement sign · case 03
Bodies moving diagonally extend the wrong vertical side.
Vertical motion extension tests the x displacement sign · case 04
Bodies moving diagonally extend the wrong vertical side.
Vertical motion extension tests the x displacement sign · case 05
Bodies moving diagonally extend the wrong vertical side.
SAH build splits along the shorter centroid extent · case 01
Long thin scenes are cut across their narrow side and both children overlap heavily.
SAH build splits along the shorter centroid extent · case 02
Long thin scenes are cut across their narrow side and both children overlap heavily.
SAH build splits along the shorter centroid extent · case 03
Long thin scenes are cut across their narrow side and both children overlap heavily.
SAH build splits along the shorter centroid extent · case 04
Long thin scenes are cut across their narrow side and both children overlap heavily.
SAH build splits along the shorter centroid extent · case 05
Long thin scenes are cut across their narrow side and both children overlap heavily.
Primitives are ordered by their minimum edge instead of centroid · case 01
Large primitives are placed on the wrong side of the split.
Primitives are ordered by their minimum edge instead of centroid · case 02
Large primitives are placed on the wrong side of the split.
Primitives are ordered by their minimum edge instead of centroid · case 03
Large primitives are placed on the wrong side of the split.
Primitives are ordered by their minimum edge instead of centroid · case 04
Large primitives are placed on the wrong side of the split.
Primitives are ordered by their minimum edge instead of centroid · case 05
Large primitives are placed on the wrong side of the split.
SAH weights each child area by the other child count · case 01
Unbalanced splits are costed backwards.
SAH weights each child area by the other child count · case 02
Unbalanced splits are costed backwards.
SAH weights each child area by the other child count · case 03
Unbalanced splits are costed backwards.
SAH weights each child area by the other child count · case 04
Unbalanced splits are costed backwards.
SAH weights each child area by the other child count · case 05
Unbalanced splits are costed backwards.
SAH always splits because the leaf cost is ignored · case 01
Tiny nodes are split although a leaf is cheaper, deepening the tree.
SAH always splits because the leaf cost is ignored · case 02
Tiny nodes are split although a leaf is cheaper, deepening the tree.
SAH always splits because the leaf cost is ignored · case 03
Tiny nodes are split although a leaf is cheaper, deepening the tree.
SAH always splits because the leaf cost is ignored · case 04
Tiny nodes are split although a leaf is cheaper, deepening the tree.
SAH always splits because the leaf cost is ignored · case 05
Tiny nodes are split although a leaf is cheaper, deepening the tree.
SAH skips the last candidate split position · case 01
Splitting off a single outlier on the far side is never considered.
SAH skips the last candidate split position · case 02
Splitting off a single outlier on the far side is never considered.
SAH skips the last candidate split position · case 03
Splitting off a single outlier on the far side is never considered.
SAH skips the last candidate split position · case 04
Splitting off a single outlier on the far side is never considered.
SAH skips the last candidate split position · case 05
Splitting off a single outlier on the far side is never considered.
SAH normalizes by the parent perimeter at half scale · case 01
Split costs are halved relative to the leaf cost so splitting wins too often.
SAH normalizes by the parent perimeter at half scale · case 02
Split costs are halved relative to the leaf cost so splitting wins too often.
SAH normalizes by the parent perimeter at half scale · case 03
Split costs are halved relative to the leaf cost so splitting wins too often.
SAH normalizes by the parent perimeter at half scale · case 04
Split costs are halved relative to the leaf cost so splitting wins too often.
SAH normalizes by the parent perimeter at half scale · case 05
Split costs are halved relative to the leaf cost so splitting wins too often.
BVH traversal prunes nodes that only touch the query on x · case 01
Queries flush against an object edge return nothing.
BVH traversal prunes nodes that only touch the query on x · case 02
Queries flush against an object edge return nothing.
BVH traversal prunes nodes that only touch the query on x · case 03
Queries flush against an object edge return nothing.
BVH traversal prunes nodes that only touch the query on x · case 04
Queries flush against an object edge return nothing.
BVH traversal prunes nodes that only touch the query on x · case 05
Queries flush against an object edge return nothing.
Leaves are accepted without testing their own bounds · case 01
Every leaf under an overlapping parent is returned as a hit.
Leaves are accepted without testing their own bounds · case 02
Every leaf under an overlapping parent is returned as a hit.
Leaves are accepted without testing their own bounds · case 03
Every leaf under an overlapping parent is returned as a hit.
Leaves are accepted without testing their own bounds · case 04
Every leaf under an overlapping parent is returned as a hit.
Leaves are accepted without testing their own bounds · case 05
Every leaf under an overlapping parent is returned as a hit.
BVH query reports node indices instead of leaf ids · case 01
Callers look up the wrong objects for every hit.
BVH query reports node indices instead of leaf ids · case 02
Callers look up the wrong objects for every hit.
BVH query reports node indices instead of leaf ids · case 03
Callers look up the wrong objects for every hit.
BVH query reports node indices instead of leaf ids · case 04
Callers look up the wrong objects for every hit.
BVH query reports node indices instead of leaf ids · case 05
Callers look up the wrong objects for every hit.
Objects straddling the x midline are pushed into the left child · case 01
Queries on the right half miss objects that extend across the midline.
Objects straddling the x midline are pushed into the left child · case 02
Queries on the right half miss objects that extend across the midline.
Objects straddling the x midline are pushed into the left child · case 03
Queries on the right half miss objects that extend across the midline.
Objects straddling the x midline are pushed into the left child · case 04
Queries on the right half miss objects that extend across the midline.
Objects straddling the x midline are pushed into the left child · case 05
Queries on the right half miss objects that extend across the midline.
Objects starting exactly on the midline are treated as straddlers · case 01
Boundary-aligned objects pile up in parent nodes and inflate every query.
Objects starting exactly on the midline are treated as straddlers · case 02
Boundary-aligned objects pile up in parent nodes and inflate every query.
Objects starting exactly on the midline are treated as straddlers · case 03
Boundary-aligned objects pile up in parent nodes and inflate every query.
Objects starting exactly on the midline are treated as straddlers · case 04
Boundary-aligned objects pile up in parent nodes and inflate every query.
Objects starting exactly on the midline are treated as straddlers · case 05
Boundary-aligned objects pile up in parent nodes and inflate every query.
Quadtree splits when a node reaches capacity rather than exceeding it · case 01
Nodes split one object early, creating extra nodes.
Quadtree splits when a node reaches capacity rather than exceeding it · case 02
Nodes split one object early, creating extra nodes.
Quadtree splits when a node reaches capacity rather than exceeding it · case 03
Nodes split one object early, creating extra nodes.
Quadtree splits when a node reaches capacity rather than exceeding it · case 04
Nodes split one object early, creating extra nodes.
Quadtree splits when a node reaches capacity rather than exceeding it · case 05
Nodes split one object early, creating extra nodes.
Quadtree allows one level below the maximum depth · case 01
Degenerate clusters create nodes deeper than configured.
Quadtree allows one level below the maximum depth · case 02
Degenerate clusters create nodes deeper than configured.
Quadtree allows one level below the maximum depth · case 03
Degenerate clusters create nodes deeper than configured.
Quadtree allows one level below the maximum depth · case 04
Degenerate clusters create nodes deeper than configured.
Quadtree allows one level below the maximum depth · case 05
Degenerate clusters create nodes deeper than configured.
Child node origins are laid out column-major while indices are row-major · case 01
Objects are stored in a child covering the wrong region and queries miss them.
Child node origins are laid out column-major while indices are row-major · case 02
Objects are stored in a child covering the wrong region and queries miss them.
Child node origins are laid out column-major while indices are row-major · case 03
Objects are stored in a child covering the wrong region and queries miss them.
Child node origins are laid out column-major while indices are row-major · case 04
Objects are stored in a child covering the wrong region and queries miss them.
Child node origins are laid out column-major while indices are row-major · case 05
Objects are stored in a child covering the wrong region and queries miss them.
Splitting a node does not push existing objects down · case 01
Objects inserted before the split remain in the parent and appear in unrelated queries.
Splitting a node does not push existing objects down · case 02
Objects inserted before the split remain in the parent and appear in unrelated queries.
Splitting a node does not push existing objects down · case 03
Objects inserted before the split remain in the parent and appear in unrelated queries.
Splitting a node does not push existing objects down · case 04
Objects inserted before the split remain in the parent and appear in unrelated queries.
Splitting a node does not push existing objects down · case 05
Objects inserted before the split remain in the parent and appear in unrelated queries.
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 ↗