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
Contact impulse is allowed to pull bodies together · case 01
Separating bodies stick to each other as if glued.
Contact impulse is allowed to pull bodies together · case 02
Separating bodies stick to each other as if glued.
Contact impulse is allowed to pull bodies together · case 03
Separating bodies stick to each other as if glued.
Contact impulse is allowed to pull bodies together · case 04
Separating bodies stick to each other as if glued.
Contact impulse is allowed to pull bodies together · case 05
Separating bodies stick to each other as if glued.
Contact impulse multiplies by the inverse mass sum · case 01
Light bodies get tiny impulses and heavy bodies are over-corrected.
Contact impulse multiplies by the inverse mass sum · case 02
Light bodies get tiny impulses and heavy bodies are over-corrected.
Contact impulse multiplies by the inverse mass sum · case 03
Light bodies get tiny impulses and heavy bodies are over-corrected.
Contact impulse multiplies by the inverse mass sum · case 04
Light bodies get tiny impulses and heavy bodies are over-corrected.
Contact impulse multiplies by the inverse mass sum · case 05
Light bodies get tiny impulses and heavy bodies are over-corrected.
Normal impulse clamps the increment instead of the accumulated total · case 01
Warm-started contacts can never reduce their impulse and stacks pop apart.
Normal impulse clamps the increment instead of the accumulated total · case 02
Warm-started contacts can never reduce their impulse and stacks pop apart.
Normal impulse clamps the increment instead of the accumulated total · case 03
Warm-started contacts can never reduce their impulse and stacks pop apart.
Normal impulse clamps the increment instead of the accumulated total · case 04
Warm-started contacts can never reduce their impulse and stacks pop apart.
Normal impulse clamps the increment instead of the accumulated total · case 05
Warm-started contacts can never reduce their impulse and stacks pop apart.
Friction limit uses this iteration normal correction instead of the accumulated normal impulse · case 01
Friction vanishes on resting contacts once the normal impulse has converged.
Friction limit uses this iteration normal correction instead of the accumulated normal impulse · case 02
Friction vanishes on resting contacts once the normal impulse has converged.
Friction limit uses this iteration normal correction instead of the accumulated normal impulse · case 03
Friction vanishes on resting contacts once the normal impulse has converged.
Friction limit uses this iteration normal correction instead of the accumulated normal impulse · case 04
Friction vanishes on resting contacts once the normal impulse has converged.
Friction limit uses this iteration normal correction instead of the accumulated normal impulse · case 05
Friction vanishes on resting contacts once the normal impulse has converged.
Friction clamps each increment rather than the accumulated tangent impulse · case 01
Sliding contacts accumulate unbounded friction over iterations.
Friction clamps each increment rather than the accumulated tangent impulse · case 02
Sliding contacts accumulate unbounded friction over iterations.
Friction clamps each increment rather than the accumulated tangent impulse · case 03
Sliding contacts accumulate unbounded friction over iterations.
Friction clamps each increment rather than the accumulated tangent impulse · case 04
Sliding contacts accumulate unbounded friction over iterations.
Friction clamps each increment rather than the accumulated tangent impulse · case 05
Sliding contacts accumulate unbounded friction over iterations.
Warm-start impulses are stored but never applied to velocities · case 01
The solver double-applies impulses and contacts bounce on the frame after warm starting.
Warm-start impulses are stored but never applied to velocities · case 02
The solver double-applies impulses and contacts bounce on the frame after warm starting.
Warm-start impulses are stored but never applied to velocities · case 03
The solver double-applies impulses and contacts bounce on the frame after warm starting.
Warm-start impulses are stored but never applied to velocities · case 04
The solver double-applies impulses and contacts bounce on the frame after warm starting.
Warm-start impulses are stored but never applied to velocities · case 05
The solver double-applies impulses and contacts bounce on the frame after warm starting.
Friction impulse increment has the sliding direction sign reversed · case 01
Friction accelerates sliding instead of opposing it.
Friction impulse increment has the sliding direction sign reversed · case 02
Friction accelerates sliding instead of opposing it.
Friction impulse increment has the sliding direction sign reversed · case 03
Friction accelerates sliding instead of opposing it.
Friction impulse increment has the sliding direction sign reversed · case 04
Friction accelerates sliding instead of opposing it.
Friction impulse increment has the sliding direction sign reversed · case 05
Friction accelerates sliding instead of opposing it.
Cached normal impulse ignores the warm-start factor · case 01
Changing the warm factor has no effect on normal impulses and damping settings misbehave.
Cached normal impulse ignores the warm-start factor · case 02
Changing the warm factor has no effect on normal impulses and damping settings misbehave.
Cached normal impulse ignores the warm-start factor · case 03
Changing the warm factor has no effect on normal impulses and damping settings misbehave.
Cached normal impulse ignores the warm-start factor · case 04
Changing the warm factor has no effect on normal impulses and damping settings misbehave.
Cached normal impulse ignores the warm-start factor · case 05
Changing the warm factor has no effect on normal impulses and damping settings misbehave.
Linear damping uses the explicit 1 - c*dt factor · case 01
High damping at coarse steps flips the velocity sign and the body jitters.
Linear damping uses the explicit 1 - c*dt factor · case 02
High damping at coarse steps flips the velocity sign and the body jitters.
Linear damping uses the explicit 1 - c*dt factor · case 03
High damping at coarse steps flips the velocity sign and the body jitters.
Linear damping uses the explicit 1 - c*dt factor · case 04
High damping at coarse steps flips the velocity sign and the body jitters.
Linear damping uses the explicit 1 - c*dt factor · case 05
High damping at coarse steps flips the velocity sign and the body jitters.
Maximum speed is enforced per axis · case 01
Diagonal motion exceeds the speed cap by up to sqrt(2) and changes direction.
Maximum speed is enforced per axis · case 02
Diagonal motion exceeds the speed cap by up to sqrt(2) and changes direction.
Maximum speed is enforced per axis · case 03
Diagonal motion exceeds the speed cap by up to sqrt(2) and changes direction.
Maximum speed is enforced per axis · case 04
Diagonal motion exceeds the speed cap by up to sqrt(2) and changes direction.
Maximum speed is enforced per axis · case 05
Diagonal motion exceeds the speed cap by up to sqrt(2) and changes direction.
Sleep timer keeps accumulating across moving frames · case 01
Bodies that move briefly fall asleep mid-motion.
Sleep timer keeps accumulating across moving frames · case 02
Bodies that move briefly fall asleep mid-motion.
Sleep timer keeps accumulating across moving frames · case 03
Bodies that move briefly fall asleep mid-motion.
Sleep timer keeps accumulating across moving frames · case 04
Bodies that move briefly fall asleep mid-motion.
Sleep timer keeps accumulating across moving frames · case 05
Bodies that move briefly fall asleep mid-motion.
Sleep accumulates when either linear or angular speed is low · case 01
Spinning bodies with no linear motion fall asleep and freeze.
Sleep accumulates when either linear or angular speed is low · case 02
Spinning bodies with no linear motion fall asleep and freeze.
Sleep accumulates when either linear or angular speed is low · case 03
Spinning bodies with no linear motion fall asleep and freeze.
Sleep accumulates when either linear or angular speed is low · case 04
Spinning bodies with no linear motion fall asleep and freeze.
Sleep accumulates when either linear or angular speed is low · case 05
Spinning bodies with no linear motion fall asleep and freeze.
Sleeping bodies ignore incoming impulses · case 01
A sleeping crate hit by a kick stays frozen.
Sleeping bodies ignore incoming impulses · case 02
A sleeping crate hit by a kick stays frozen.
Sleeping bodies ignore incoming impulses · case 03
A sleeping crate hit by a kick stays frozen.
Sleeping bodies ignore incoming impulses · case 04
A sleeping crate hit by a kick stays frozen.
Sleeping bodies ignore incoming impulses · case 05
A sleeping crate hit by a kick stays frozen.
Angular velocity is damped with the linear coefficient · case 01
Tuning angular damping has no effect.
Angular velocity is damped with the linear coefficient · case 02
Tuning angular damping has no effect.
Angular velocity is damped with the linear coefficient · case 03
Tuning angular damping has no effect.
Angular velocity is damped with the linear coefficient · case 04
Tuning angular damping has no effect.
Angular velocity is damped with the linear coefficient · case 05
Tuning angular damping has no effect.
Falling asleep does not zero velocities · case 01
Sleeping bodies report residual motion and wake-up comparisons drift.
Falling asleep does not zero velocities · case 02
Sleeping bodies report residual motion and wake-up comparisons drift.
Falling asleep does not zero velocities · case 03
Sleeping bodies report residual motion and wake-up comparisons drift.
Falling asleep does not zero velocities · case 04
Sleeping bodies report residual motion and wake-up comparisons drift.
Falling asleep does not zero velocities · case 05
Sleeping bodies report residual motion and wake-up comparisons drift.
Body sleeps only after strictly exceeding the required rest time · case 01
Bodies sleep one frame late relative to the contract.
Body sleeps only after strictly exceeding the required rest time · case 02
Bodies sleep one frame late relative to the contract.
Body sleeps only after strictly exceeding the required rest time · case 03
Bodies sleep one frame late relative to the contract.
Body sleeps only after strictly exceeding the required rest time · case 04
Bodies sleep one frame late relative to the contract.
Body sleeps only after strictly exceeding the required rest time · case 05
Bodies sleep one frame late relative to the contract.
Period detector counts downward crossings as well · case 01
The measured period is half the true oscillation period.
Period detector counts downward crossings as well · case 02
The measured period is half the true oscillation period.
Period detector counts downward crossings as well · case 03
The measured period is half the true oscillation period.
Period detector counts downward crossings as well · case 04
The measured period is half the true oscillation period.
Period detector counts downward crossings as well · case 05
The measured period is half the true oscillation period.
Crossing time interpolates from the wrong endpoint · case 01
Crossing times jitter by up to one sample and the period estimate is noisy.
Crossing time interpolates from the wrong endpoint · case 02
Crossing times jitter by up to one sample and the period estimate is noisy.
Crossing time interpolates from the wrong endpoint · case 03
Crossing times jitter by up to one sample and the period estimate is noisy.
Crossing time interpolates from the wrong endpoint · case 04
Crossing times jitter by up to one sample and the period estimate is noisy.
Crossing time interpolates from the wrong endpoint · case 05
Crossing times jitter by up to one sample and the period estimate is noisy.
Mean period divides the span by the crossing count · case 01
The period is underestimated by a factor (n-1)/n.
Mean period divides the span by the crossing count · case 02
The period is underestimated by a factor (n-1)/n.
Mean period divides the span by the crossing count · case 03
The period is underestimated by a factor (n-1)/n.
Mean period divides the span by the crossing count · case 04
The period is underestimated by a factor (n-1)/n.
Mean period divides the span by the crossing count · case 05
The period is underestimated by a factor (n-1)/n.
Reference period uses one over omega · case 01
Relative error is dominated by a 2*pi factor.
Reference period uses one over omega · case 02
Relative error is dominated by a 2*pi factor.
Reference period uses one over omega · case 03
Relative error is dominated by a 2*pi factor.
Reference period uses one over omega · case 04
Relative error is dominated by a 2*pi factor.
Reference period uses one over omega · case 05
Relative error is dominated by a 2*pi factor.
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 ↗