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
Upvalues: scope exit leaves its lowest slot on the stack · case 01
Locals declared after a scope ends get shifted slot numbers.
Upvalues: scope exit leaves its lowest slot on the stack · case 02
Locals declared after a scope ends get shifted slot numbers.
Upvalues: scope exit leaves its lowest slot on the stack · case 03
Locals declared after a scope ends get shifted slot numbers.
Upvalues: scope exit leaves its lowest slot on the stack · case 04
Locals declared after a scope ends get shifted slot numbers.
Upvalues: scope exit leaves its lowest slot on the stack · case 05
Locals declared after a scope ends get shifted slot numbers.
Structured control: branch depth counted from the outermost label · case 01
br_if 1 inside a loop jumps back to the loop instead of leaving the enclosing block, so loops never end.
Structured control: branch depth counted from the outermost label · case 02
br_if 1 inside a loop jumps back to the loop instead of leaving the enclosing block, so loops never end.
Structured control: branch depth counted from the outermost label · case 03
br_if 1 inside a loop jumps back to the loop instead of leaving the enclosing block, so loops never end.
Structured control: branch depth counted from the outermost label · case 04
br_if 1 inside a loop jumps back to the loop instead of leaving the enclosing block, so loops never end.
Structured control: branch depth counted from the outermost label · case 05
br_if 1 inside a loop jumps back to the loop instead of leaving the enclosing block, so loops never end.
Structured control: branching to a loop leaves it · case 01
Loops run their body once and fall out as if the branch targeted a block.
Structured control: branching to a loop leaves it · case 02
Loops run their body once and fall out as if the branch targeted a block.
Structured control: branching to a loop leaves it · case 03
Loops run their body once and fall out as if the branch targeted a block.
Structured control: branching to a loop leaves it · case 04
Loops run their body once and fall out as if the branch targeted a block.
Structured control: branching to a loop leaves it · case 05
Loops run their body once and fall out as if the branch targeted a block.
Structured control: branching to a loop pops the loop label · case 01
After a continue-style branch the label stack is one level short, so later branches exit the wrong construct.
Structured control: branching to a loop pops the loop label · case 02
After a continue-style branch the label stack is one level short, so later branches exit the wrong construct.
Structured control: branching to a loop pops the loop label · case 03
After a continue-style branch the label stack is one level short, so later branches exit the wrong construct.
Structured control: branching to a loop pops the loop label · case 04
After a continue-style branch the label stack is one level short, so later branches exit the wrong construct.
Structured control: branching to a loop pops the loop label · case 05
After a continue-style branch the label stack is one level short, so later branches exit the wrong construct.
Structured control: untaken br_if leaves its condition behind · case 01
Code after a failed conditional branch computes with an extra zero on the stack.
Structured control: untaken br_if leaves its condition behind · case 02
Code after a failed conditional branch computes with an extra zero on the stack.
Structured control: untaken br_if leaves its condition behind · case 03
Code after a failed conditional branch computes with an extra zero on the stack.
Structured control: untaken br_if leaves its condition behind · case 04
Code after a failed conditional branch computes with an extra zero on the stack.
Structured control: untaken br_if leaves its condition behind · case 05
Code after a failed conditional branch computes with an extra zero on the stack.
Structured control: branch results discarded · case 01
Blocks that produce a value via br end with an empty stack.
Structured control: branch results discarded · case 02
Blocks that produce a value via br end with an empty stack.
Structured control: branch results discarded · case 03
Blocks that produce a value via br end with an empty stack.
Structured control: branch results discarded · case 04
Blocks that produce a value via br end with an empty stack.
Structured control: branch results discarded · case 05
Blocks that produce a value via br end with an empty stack.
Structured control: branch does not unwind to the label height · case 01
Intermediate operands pushed inside a block survive a branch out of it.
Structured control: branch does not unwind to the label height · case 02
Intermediate operands pushed inside a block survive a branch out of it.
Structured control: branch does not unwind to the label height · case 03
Intermediate operands pushed inside a block survive a branch out of it.
Structured control: branch does not unwind to the label height · case 04
Intermediate operands pushed inside a block survive a branch out of it.
Structured control: branch does not unwind to the label height · case 05
Intermediate operands pushed inside a block survive a branch out of it.
Branch relaxation: fit test measured from the branch start · case 01
Forward branches near the limit stay short and overflow; backward ones are widened needlessly.
Branch relaxation: fit test measured from the branch start · case 02
Forward branches near the limit stay short and overflow; backward ones are widened needlessly.
Branch relaxation: fit test measured from the branch start · case 03
Forward branches near the limit stay short and overflow; backward ones are widened needlessly.
Branch relaxation: fit test measured from the branch start · case 04
Forward branches near the limit stay short and overflow; backward ones are widened needlessly.
Branch relaxation: fit test measured from the branch start · case 05
Forward branches near the limit stay short and overflow; backward ones are widened needlessly.
Branch relaxation: wide branches encoded with the short-form base · case 01
Every widened branch lands one or two bytes past its label.
Branch relaxation: wide branches encoded with the short-form base · case 02
Every widened branch lands one or two bytes past its label.
Branch relaxation: wide branches encoded with the short-form base · case 03
Every widened branch lands one or two bytes past its label.
Branch relaxation: wide branches encoded with the short-form base · case 04
Every widened branch lands one or two bytes past its label.
Branch relaxation: wide branches encoded with the short-form base · case 05
Every widened branch lands one or two bytes past its label.
Branch relaxation: displacement -128 considered out of range · case 01
Backward branches of exactly -128 bytes are widened, growing code for no reason.
Branch relaxation: displacement -128 considered out of range · case 02
Backward branches of exactly -128 bytes are widened, growing code for no reason.
Branch relaxation: displacement -128 considered out of range · case 03
Backward branches of exactly -128 bytes are widened, growing code for no reason.
Branch relaxation: displacement -128 considered out of range · case 04
Backward branches of exactly -128 bytes are widened, growing code for no reason.
Branch relaxation: displacement -128 considered out of range · case 05
Backward branches of exactly -128 bytes are widened, growing code for no reason.
Branch relaxation: single relaxation pass · case 01
A branch pushed out of range by another branch widening stays short and wraps.
Branch relaxation: single relaxation pass · case 02
A branch pushed out of range by another branch widening stays short and wraps.
Branch relaxation: single relaxation pass · case 03
A branch pushed out of range by another branch widening stays short and wraps.
Branch relaxation: single relaxation pass · case 04
A branch pushed out of range by another branch widening stays short and wraps.
Branch relaxation: single relaxation pass · case 05
A branch pushed out of range by another branch widening stays short and wraps.
Branch relaxation: wide conditional branch sized like wide jump · case 01
Code after a widened jz is laid out one byte too early.
Branch relaxation: wide conditional branch sized like wide jump · case 02
Code after a widened jz is laid out one byte too early.
Branch relaxation: wide conditional branch sized like wide jump · case 03
Code after a widened jz is laid out one byte too early.
Branch relaxation: wide conditional branch sized like wide jump · case 04
Code after a widened jz is laid out one byte too early.
Branch relaxation: wide conditional branch sized like wide jump · case 05
Code after a widened jz is laid out one byte too early.
LEB128 immediates: decoding stops on continuation bytes · case 01
Multi-byte immediates are cut after their first byte and single-byte ones swallow the next operand.
LEB128 immediates: decoding stops on continuation bytes · case 02
Multi-byte immediates are cut after their first byte and single-byte ones swallow the next operand.
LEB128 immediates: decoding stops on continuation bytes · case 03
Multi-byte immediates are cut after their first byte and single-byte ones swallow the next operand.
LEB128 immediates: decoding stops on continuation bytes · case 04
Multi-byte immediates are cut after their first byte and single-byte ones swallow the next operand.
LEB128 immediates: decoding stops on continuation bytes · case 05
Multi-byte immediates are cut after their first byte and single-byte ones swallow the next operand.
LEB128 immediates: signed values never sign-extend · case 01
Negative signed immediates decode as large positive numbers.
LEB128 immediates: signed values never sign-extend · case 02
Negative signed immediates decode as large positive numbers.
LEB128 immediates: signed values never sign-extend · case 03
Negative signed immediates decode as large positive numbers.
LEB128 immediates: signed values never sign-extend · case 04
Negative signed immediates decode as large positive numbers.
LEB128 immediates: signed values never sign-extend · case 05
Negative signed immediates decode as large positive numbers.
LEB128 immediates: maximum length rounded down · case 01
Legal five-byte u32 immediates are rejected as too long.
LEB128 immediates: maximum length rounded down · case 02
Legal five-byte u32 immediates are rejected as too long.
LEB128 immediates: maximum length rounded down · case 03
Legal five-byte u32 immediates are rejected as too long.
LEB128 immediates: maximum length rounded down · case 04
Legal five-byte u32 immediates are rejected as too long.
LEB128 immediates: maximum length rounded down · case 05
Legal five-byte u32 immediates are rejected as too long.
LEB128 immediates: s32 accepts 2^31 · case 01
A positive signed immediate one past the int32 maximum is accepted.
LEB128 immediates: s32 accepts 2^31 · case 02
A positive signed immediate one past the int32 maximum is accepted.
LEB128 immediates: s32 accepts 2^31 · case 03
A positive signed immediate one past the int32 maximum is accepted.
LEB128 immediates: s32 accepts 2^31 · case 04
A positive signed immediate one past the int32 maximum is accepted.
LEB128 immediates: s32 accepts 2^31 · case 05
A positive signed immediate one past the int32 maximum is accepted.
LEB128 immediates: u32 immediates sign-extended · case 01
Unsigned 32-bit immediates whose last byte has bit 6 set become negative.
LEB128 immediates: u32 immediates sign-extended · case 02
Unsigned 32-bit immediates whose last byte has bit 6 set become negative.
LEB128 immediates: u32 immediates sign-extended · case 03
Unsigned 32-bit immediates whose last byte has bit 6 set become negative.
LEB128 immediates: u32 immediates sign-extended · case 04
Unsigned 32-bit immediates whose last byte has bit 6 set become negative.
LEB128 immediates: u32 immediates sign-extended · case 05
Unsigned 32-bit immediates whose last byte has bit 6 set become negative.
Generators: falsy non-None first send accepted · case 01
send(0) to a fresh generator starts it instead of raising TypeError.
Generators: falsy non-None first send accepted · case 02
send(0) to a fresh generator starts it instead of raising TypeError.
Generators: falsy non-None first send accepted · case 03
send(0) to a fresh generator starts it instead of raising TypeError.
Generators: falsy non-None first send accepted · case 04
send(0) to a fresh generator starts it instead of raising TypeError.
Generators: falsy non-None first send accepted · case 05
send(0) to a fresh generator starts it instead of raising TypeError.
Generators: next() does not deliver None to the yield expression · case 01
A body that discards its yield result pops the wrong operand after next().
Generators: next() does not deliver None to the yield expression · case 02
A body that discards its yield result pops the wrong operand after next().
Generators: next() does not deliver None to the yield expression · case 03
A body that discards its yield result pops the wrong operand after next().
Generators: next() does not deliver None to the yield expression · case 04
A body that discards its yield result pops the wrong operand after next().
Generators: next() does not deliver None to the yield expression · case 05
A body that discards its yield result pops the wrong operand after next().
Generators: catch-all handler ignores thrown exceptions · case 01
A generator guarded by an Exception handler dies when throw() delivers ValueError.
Generators: catch-all handler ignores thrown exceptions · case 02
A generator guarded by an Exception handler dies when throw() delivers ValueError.
Generators: catch-all handler ignores thrown exceptions · case 03
A generator guarded by an Exception handler dies when throw() delivers ValueError.
Generators: catch-all handler ignores thrown exceptions · case 04
A generator guarded by an Exception handler dies when throw() delivers ValueError.
Generators: catch-all handler ignores thrown exceptions · case 05
A generator guarded by an Exception handler dies when throw() delivers ValueError.
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 ↗