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
Arithmetic right shift loses the sign bit · case 01
asr of a negative value turns it positive.
Arithmetic right shift loses the sign bit · case 02
asr of a negative value turns it positive.
Arithmetic right shift loses the sign bit · case 03
asr of a negative value turns it positive.
Arithmetic right shift loses the sign bit · case 04
asr of a negative value turns it positive.
Arithmetic right shift loses the sign bit · case 05
asr of a negative value turns it positive.
Logical shift carry taken after shifting · case 01
lsr reports bit 1 of the original value as carry.
Logical shift carry taken after shifting · case 02
lsr reports bit 1 of the original value as carry.
Logical shift carry taken after shifting · case 03
lsr reports bit 1 of the original value as carry.
Logical shift carry taken after shifting · case 04
lsr reports bit 1 of the original value as carry.
Logical shift carry taken after shifting · case 05
lsr reports bit 1 of the original value as carry.
RAM mirrors decoded as separate memory · case 01
A byte written at 0x0801 is not visible at 0x0001.
RAM mirrors decoded as separate memory · case 02
A byte written at 0x0801 is not visible at 0x0001.
RAM mirrors decoded as separate memory · case 03
A byte written at 0x0801 is not visible at 0x0001.
RAM mirrors decoded as separate memory · case 04
A byte written at 0x0801 is not visible at 0x0001.
RAM mirrors decoded as separate memory · case 05
A byte written at 0x0801 is not visible at 0x0001.
Video registers not mirrored · case 01
Writing 0x2008 does not affect register 0 and reading 0x3FF8 returns 0.
Video registers not mirrored · case 02
Writing 0x2008 does not affect register 0 and reading 0x3FF8 returns 0.
Video registers not mirrored · case 03
Writing 0x2008 does not affect register 0 and reading 0x3FF8 returns 0.
Video registers not mirrored · case 04
Writing 0x2008 does not affect register 0 and reading 0x3FF8 returns 0.
Video registers not mirrored · case 05
Writing 0x2008 does not affect register 0 and reading 0x3FF8 returns 0.
Unmapped reads return zero · case 01
Reading unmapped space returns 0 instead of the last value on the data bus.
Unmapped reads return zero · case 02
Reading unmapped space returns 0 instead of the last value on the data bus.
Unmapped reads return zero · case 03
Reading unmapped space returns 0 instead of the last value on the data bus.
Unmapped reads return zero · case 04
Reading unmapped space returns 0 instead of the last value on the data bus.
Unmapped reads return zero · case 05
Reading unmapped space returns 0 instead of the last value on the data bus.
16 KiB ROM not mirrored into the upper window · case 01
Reads from 0xC000 upward return bytes past the end of a 16 KiB ROM.
16 KiB ROM not mirrored into the upper window · case 02
Reads from 0xC000 upward return bytes past the end of a 16 KiB ROM.
16 KiB ROM not mirrored into the upper window · case 03
Reads from 0xC000 upward return bytes past the end of a 16 KiB ROM.
16 KiB ROM not mirrored into the upper window · case 04
Reads from 0xC000 upward return bytes past the end of a 16 KiB ROM.
16 KiB ROM not mirrored into the upper window · case 05
Reads from 0xC000 upward return bytes past the end of a 16 KiB ROM.
Writes to unmapped space do not drive the bus · case 01
A read of unmapped space after an unmapped write returns an older bus value.
Writes to unmapped space do not drive the bus · case 02
A read of unmapped space after an unmapped write returns an older bus value.
Writes to unmapped space do not drive the bus · case 03
A read of unmapped space after an unmapped write returns an older bus value.
Writes to unmapped space do not drive the bus · case 04
A read of unmapped space after an unmapped write returns an older bus value.
Writes to unmapped space do not drive the bus · case 05
A read of unmapped space after an unmapped write returns an older bus value.
Disabled SRAM still decoded · case 01
With SRAM disabled, reads of 0x6000-0x7FFF return memory contents instead of open bus.
Disabled SRAM still decoded · case 02
With SRAM disabled, reads of 0x6000-0x7FFF return memory contents instead of open bus.
Disabled SRAM still decoded · case 03
With SRAM disabled, reads of 0x6000-0x7FFF return memory contents instead of open bus.
Disabled SRAM still decoded · case 04
With SRAM disabled, reads of 0x6000-0x7FFF return memory contents instead of open bus.
Disabled SRAM still decoded · case 05
With SRAM disabled, reads of 0x6000-0x7FFF return memory contents instead of open bus.
Relative-jump VM: JMP displacement measured from the opcode byte · case 01
Backward loops land two bytes early and re-execute the wrong instruction; forward jumps fall short.
Relative-jump VM: JMP displacement measured from the opcode byte · case 02
Backward loops land two bytes early and re-execute the wrong instruction; forward jumps fall short.
Relative-jump VM: JMP displacement measured from the opcode byte · case 03
Backward loops land two bytes early and re-execute the wrong instruction; forward jumps fall short.
Relative-jump VM: JMP displacement measured from the opcode byte · case 04
Backward loops land two bytes early and re-execute the wrong instruction; forward jumps fall short.
Relative-jump VM: JMP displacement measured from the opcode byte · case 05
Backward loops land two bytes early and re-execute the wrong instruction; forward jumps fall short.
Relative-jump VM: JZ branches on a nonzero condition · case 01
Loops exit immediately and guard blocks run exactly when they should be skipped.
Relative-jump VM: JZ branches on a nonzero condition · case 02
Loops exit immediately and guard blocks run exactly when they should be skipped.
Relative-jump VM: JZ branches on a nonzero condition · case 03
Loops exit immediately and guard blocks run exactly when they should be skipped.
Relative-jump VM: JZ branches on a nonzero condition · case 04
Loops exit immediately and guard blocks run exactly when they should be skipped.
Relative-jump VM: JZ branches on a nonzero condition · case 05
Loops exit immediately and guard blocks run exactly when they should be skipped.
Relative-jump VM: SUB subtracts second-from-top from top · case 01
Decrementing counters increase and swapped operands produce negated differences.
Relative-jump VM: SUB subtracts second-from-top from top · case 02
Decrementing counters increase and swapped operands produce negated differences.
Relative-jump VM: SUB subtracts second-from-top from top · case 03
Decrementing counters increase and swapped operands produce negated differences.
Relative-jump VM: SUB subtracts second-from-top from top · case 04
Decrementing counters increase and swapped operands produce negated differences.
Relative-jump VM: SUB subtracts second-from-top from top · case 05
Decrementing counters increase and swapped operands produce negated differences.
Relative-jump VM: SWAP duplicates instead of exchanging · case 01
After SWAP both top slots hold the same value and the original top is lost.
Relative-jump VM: SWAP duplicates instead of exchanging · case 02
After SWAP both top slots hold the same value and the original top is lost.
Relative-jump VM: SWAP duplicates instead of exchanging · case 03
After SWAP both top slots hold the same value and the original top is lost.
Relative-jump VM: SWAP duplicates instead of exchanging · case 04
After SWAP both top slots hold the same value and the original top is lost.
Relative-jump VM: SWAP duplicates instead of exchanging · case 05
After SWAP both top slots hold the same value and the original top is lost.
Relative-jump VM: fuel limit allows one extra instruction · case 01
A program given exactly one unit too little fuel still halts normally.
Relative-jump VM: fuel limit allows one extra instruction · case 02
A program given exactly one unit too little fuel still halts normally.
Relative-jump VM: fuel limit allows one extra instruction · case 03
A program given exactly one unit too little fuel still halts normally.
Relative-jump VM: fuel limit allows one extra instruction · case 04
A program given exactly one unit too little fuel still halts normally.
Relative-jump VM: fuel limit allows one extra instruction · case 05
A program given exactly one unit too little fuel still halts normally.
JVM int32 opcodes: wraparound leaves 0x80000000 positive · case 01
Overflowing MAX_VALUE + 1 reports 2147483648 instead of MIN_VALUE.
JVM int32 opcodes: wraparound leaves 0x80000000 positive · case 02
Overflowing MAX_VALUE + 1 reports 2147483648 instead of MIN_VALUE.
JVM int32 opcodes: wraparound leaves 0x80000000 positive · case 03
Overflowing MAX_VALUE + 1 reports 2147483648 instead of MIN_VALUE.
JVM int32 opcodes: wraparound leaves 0x80000000 positive · case 04
Overflowing MAX_VALUE + 1 reports 2147483648 instead of MIN_VALUE.
JVM int32 opcodes: wraparound leaves 0x80000000 positive · case 05
Overflowing MAX_VALUE + 1 reports 2147483648 instead of MIN_VALUE.
JVM int32 opcodes: idiv uses floor division · case 01
Negative quotients are one lower than the bytecode semantics require (-9 / 2 gives -5).
JVM int32 opcodes: idiv uses floor division · case 02
Negative quotients are one lower than the bytecode semantics require (-9 / 2 gives -5).
JVM int32 opcodes: idiv uses floor division · case 03
Negative quotients are one lower than the bytecode semantics require (-9 / 2 gives -5).
JVM int32 opcodes: idiv uses floor division · case 04
Negative quotients are one lower than the bytecode semantics require (-9 / 2 gives -5).
JVM int32 opcodes: idiv uses floor division · case 05
Negative quotients are one lower than the bytecode semantics require (-9 / 2 gives -5).
JVM int32 opcodes: MIN_VALUE / -1 escapes the int range · case 01
Dividing MIN_VALUE by -1 yields 2147483648, a value no int slot can hold.
JVM int32 opcodes: MIN_VALUE / -1 escapes the int range · case 02
Dividing MIN_VALUE by -1 yields 2147483648, a value no int slot can hold.
JVM int32 opcodes: MIN_VALUE / -1 escapes the int range · case 03
Dividing MIN_VALUE by -1 yields 2147483648, a value no int slot can hold.
JVM int32 opcodes: MIN_VALUE / -1 escapes the int range · case 04
Dividing MIN_VALUE by -1 yields 2147483648, a value no int slot can hold.
JVM int32 opcodes: MIN_VALUE / -1 escapes the int range · case 05
Dividing MIN_VALUE by -1 yields 2147483648, a value no int slot can hold.
JVM int32 opcodes: irem follows the divisor sign · case 01
Remainders of negative dividends come out positive (-10 % 3 gives 2).
JVM int32 opcodes: irem follows the divisor sign · case 02
Remainders of negative dividends come out positive (-10 % 3 gives 2).
JVM int32 opcodes: irem follows the divisor sign · case 03
Remainders of negative dividends come out positive (-10 % 3 gives 2).
JVM int32 opcodes: irem follows the divisor sign · case 04
Remainders of negative dividends come out positive (-10 % 3 gives 2).
JVM int32 opcodes: irem follows the divisor sign · case 05
Remainders of negative dividends come out positive (-10 % 3 gives 2).
JVM int32 opcodes: ishl shifts by the full count · case 01
Shifting by 32 clears the value instead of leaving it unchanged.
JVM int32 opcodes: ishl shifts by the full count · case 02
Shifting by 32 clears the value instead of leaving it unchanged.
JVM int32 opcodes: ishl shifts by the full count · case 03
Shifting by 32 clears the value instead of leaving it unchanged.
JVM int32 opcodes: ishl shifts by the full count · case 04
Shifting by 32 clears the value instead of leaving it unchanged.
JVM int32 opcodes: ishl shifts by the full count · case 05
Shifting by 32 clears the value instead of leaving it unchanged.
JVM int32 opcodes: iushr sign-extends · case 01
Unsigned right shifts of negative ints stay negative.
JVM int32 opcodes: iushr sign-extends · case 02
Unsigned right shifts of negative ints stay negative.
JVM int32 opcodes: iushr sign-extends · case 03
Unsigned right shifts of negative ints stay negative.
JVM int32 opcodes: iushr sign-extends · case 04
Unsigned right shifts of negative ints stay negative.
JVM int32 opcodes: iushr sign-extends · case 05
Unsigned right shifts of negative ints stay negative.
Stack-depth verifier: dup_x1 accepted with one operand · case 01
A method using dup_x1 on a single-item stack verifies and later corrupts the frame.
Stack-depth verifier: dup_x1 accepted with one operand · case 02
A method using dup_x1 on a single-item stack verifies and later corrupts the frame.
Stack-depth verifier: dup_x1 accepted with one operand · case 03
A method using dup_x1 on a single-item stack verifies and later corrupts the frame.
Stack-depth verifier: dup_x1 accepted with one operand · case 04
A method using dup_x1 on a single-item stack verifies and later corrupts the frame.
Stack-depth verifier: dup_x1 accepted with one operand · case 05
A method using dup_x1 on a single-item stack verifies and later corrupts the frame.
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 ↗