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
Return resumes at the pulled address · case 01
Execution returns onto the last byte of the call instruction.
Return resumes at the pulled address · case 02
Execution returns onto the last byte of the call instruction.
Return resumes at the pulled address · case 03
Execution returns onto the last byte of the call instruction.
Return resumes at the pulled address · case 04
Execution returns onto the last byte of the call instruction.
Return resumes at the pulled address · case 05
Execution returns onto the last byte of the call instruction.
Stack pointer sticks at zero · case 01
Pushing past the bottom of the stack page overwrites the same byte repeatedly.
Stack pointer sticks at zero · case 02
Pushing past the bottom of the stack page overwrites the same byte repeatedly.
Stack pointer sticks at zero · case 03
Pushing past the bottom of the stack page overwrites the same byte repeatedly.
Stack pointer sticks at zero · case 04
Pushing past the bottom of the stack page overwrites the same byte repeatedly.
Stack pointer sticks at zero · case 05
Pushing past the bottom of the stack page overwrites the same byte repeatedly.
Pull past the page top leaves the stack page · case 01
Pulling with sp at 0xFF reads 0x200 and reports sp 0x100.
Pull past the page top leaves the stack page · case 02
Pulling with sp at 0xFF reads 0x200 and reports sp 0x100.
Pull past the page top leaves the stack page · case 03
Pulling with sp at 0xFF reads 0x200 and reports sp 0x100.
Pull past the page top leaves the stack page · case 04
Pulling with sp at 0xFF reads 0x200 and reports sp 0x100.
Pull past the page top leaves the stack page · case 05
Pulling with sp at 0xFF reads 0x200 and reports sp 0x100.
Zero-page indexed address leaves page zero · case 01
zp,X with a large index addresses page one instead of wrapping inside page zero.
Zero-page indexed address leaves page zero · case 02
zp,X with a large index addresses page one instead of wrapping inside page zero.
Zero-page indexed address leaves page zero · case 03
zp,X with a large index addresses page one instead of wrapping inside page zero.
Zero-page indexed address leaves page zero · case 04
zp,X with a large index addresses page one instead of wrapping inside page zero.
Zero-page indexed address leaves page zero · case 05
zp,X with a large index addresses page one instead of wrapping inside page zero.
Indirect jump pointer high byte read from the next page · case 01
JMP (xxFF) fetches its high byte from the following page instead of wrapping within the page.
Indirect jump pointer high byte read from the next page · case 02
JMP (xxFF) fetches its high byte from the following page instead of wrapping within the page.
Indirect jump pointer high byte read from the next page · case 03
JMP (xxFF) fetches its high byte from the following page instead of wrapping within the page.
Indirect jump pointer high byte read from the next page · case 04
JMP (xxFF) fetches its high byte from the following page instead of wrapping within the page.
Indirect jump pointer high byte read from the next page · case 05
JMP (xxFF) fetches its high byte from the following page instead of wrapping within the page.
Indexed indirect pointer high byte read from page one · case 01
(zp,X) with a pointer at 0xFF reads its high byte from 0x100.
Indexed indirect pointer high byte read from page one · case 02
(zp,X) with a pointer at 0xFF reads its high byte from 0x100.
Indexed indirect pointer high byte read from page one · case 03
(zp,X) with a pointer at 0xFF reads its high byte from 0x100.
Indexed indirect pointer high byte read from page one · case 04
(zp,X) with a pointer at 0xFF reads its high byte from 0x100.
Indexed indirect pointer high byte read from page one · case 05
(zp,X) with a pointer at 0xFF reads its high byte from 0x100.
Y index added before the pointer fetch · case 01
(zp),Y dereferences the wrong zero-page pointer.
Y index added before the pointer fetch · case 02
(zp),Y dereferences the wrong zero-page pointer.
Y index added before the pointer fetch · case 03
(zp),Y dereferences the wrong zero-page pointer.
Y index added before the pointer fetch · case 04
(zp),Y dereferences the wrong zero-page pointer.
Y index added before the pointer fetch · case 05
(zp),Y dereferences the wrong zero-page pointer.
Absolute Y-indexed mode adds the X register · case 01
abs,Y accesses the address offset by X, so table lookups indexed by Y read the wrong element.
Absolute Y-indexed mode adds the X register · case 02
abs,Y accesses the address offset by X, so table lookups indexed by Y read the wrong element.
Absolute Y-indexed mode adds the X register · case 03
abs,Y accesses the address offset by X, so table lookups indexed by Y read the wrong element.
Absolute Y-indexed mode adds the X register · case 04
abs,Y accesses the address offset by X, so table lookups indexed by Y read the wrong element.
Absolute Y-indexed mode adds the X register · case 05
abs,Y accesses the address offset by X, so table lookups indexed by Y read the wrong element.
I-type immediate zero-extended · case 01
addi with a negative immediate adds a large positive constant.
I-type immediate zero-extended · case 02
addi with a negative immediate adds a large positive constant.
I-type immediate zero-extended · case 03
addi with a negative immediate adds a large positive constant.
I-type immediate zero-extended · case 04
addi with a negative immediate adds a large positive constant.
I-type immediate zero-extended · case 05
addi with a negative immediate adds a large positive constant.
Store offset low bits taken from the rs2 field · case 01
Store addresses use the source register number as the low offset bits.
Store offset low bits taken from the rs2 field · case 02
Store addresses use the source register number as the low offset bits.
Store offset low bits taken from the rs2 field · case 03
Store addresses use the source register number as the low offset bits.
Store offset low bits taken from the rs2 field · case 04
Store addresses use the source register number as the low offset bits.
Store offset low bits taken from the rs2 field · case 05
Store addresses use the source register number as the low offset bits.
Branch immediate bits 11 and 12 swapped · case 01
Branches with only one of offset bits 11/12 set go to the wrong target and may flip direction.
Branch immediate bits 11 and 12 swapped · case 02
Branches with only one of offset bits 11/12 set go to the wrong target and may flip direction.
Branch immediate bits 11 and 12 swapped · case 03
Branches with only one of offset bits 11/12 set go to the wrong target and may flip direction.
Branch immediate bits 11 and 12 swapped · case 04
Branches with only one of offset bits 11/12 set go to the wrong target and may flip direction.
Branch immediate bits 11 and 12 swapped · case 05
Branches with only one of offset bits 11/12 set go to the wrong target and may flip direction.
U-type immediate returned unshifted · case 01
lui loads the 20-bit field without shifting it into the upper bits.
U-type immediate returned unshifted · case 02
lui loads the 20-bit field without shifting it into the upper bits.
U-type immediate returned unshifted · case 03
lui loads the 20-bit field without shifting it into the upper bits.
U-type immediate returned unshifted · case 04
lui loads the 20-bit field without shifting it into the upper bits.
U-type immediate returned unshifted · case 05
lui loads the 20-bit field without shifting it into the upper bits.
Jump offset bits 10:1 not scaled · case 01
jal targets are off by half of their low offset bits.
Jump offset bits 10:1 not scaled · case 02
jal targets are off by half of their low offset bits.
Jump offset bits 10:1 not scaled · case 03
jal targets are off by half of their low offset bits.
Jump offset bits 10:1 not scaled · case 04
jal targets are off by half of their low offset bits.
Jump offset bits 10:1 not scaled · case 05
jal targets are off by half of their low offset bits.
Signed division rounds toward negative infinity · case 01
div of a negative by a positive value returns a quotient one too small.
Signed division rounds toward negative infinity · case 02
div of a negative by a positive value returns a quotient one too small.
Signed division rounds toward negative infinity · case 03
div of a negative by a positive value returns a quotient one too small.
Signed division rounds toward negative infinity · case 04
div of a negative by a positive value returns a quotient one too small.
Signed division rounds toward negative infinity · case 05
div of a negative by a positive value returns a quotient one too small.
Signed division by zero yields zero · case 01
div by zero returns 0 instead of all ones.
Signed division by zero yields zero · case 02
div by zero returns 0 instead of all ones.
Signed division by zero yields zero · case 03
div by zero returns 0 instead of all ones.
Signed division by zero yields zero · case 04
div by zero returns 0 instead of all ones.
Signed division by zero yields zero · case 05
div by zero returns 0 instead of all ones.
Unsigned remainder by zero yields zero · case 01
remu by zero returns 0 instead of the dividend.
Unsigned remainder by zero yields zero · case 02
remu by zero returns 0 instead of the dividend.
Unsigned remainder by zero yields zero · case 03
remu by zero returns 0 instead of the dividend.
Unsigned remainder by zero yields zero · case 04
remu by zero returns 0 instead of the dividend.
Unsigned remainder by zero yields zero · case 05
remu by zero returns 0 instead of the dividend.
Signed remainder takes the divisor sign · case 01
rem of a negative dividend by a positive divisor returns a positive remainder.
Signed remainder takes the divisor sign · case 02
rem of a negative dividend by a positive divisor returns a positive remainder.
Signed remainder takes the divisor sign · case 03
rem of a negative dividend by a positive divisor returns a positive remainder.
Signed remainder takes the divisor sign · case 04
rem of a negative dividend by a positive divisor returns a positive remainder.
Signed remainder takes the divisor sign · case 05
rem of a negative dividend by a positive divisor returns a positive remainder.
Signed operands never recognised as negative · case 01
div and rem treat negative register values as huge unsigned numbers.
Signed operands never recognised as negative · case 02
div and rem treat negative register values as huge unsigned numbers.
Signed operands never recognised as negative · case 03
div and rem treat negative register values as huge unsigned numbers.
Signed operands never recognised as negative · case 04
div and rem treat negative register values as huge unsigned numbers.
Signed operands never recognised as negative · case 05
div and rem treat negative register values as huge unsigned numbers.
Loads assemble bytes big-endian · case 01
Multi-byte loads return byte-swapped values.
Loads assemble bytes big-endian · case 02
Multi-byte loads return byte-swapped values.
Loads assemble bytes big-endian · case 03
Multi-byte loads return byte-swapped values.
Loads assemble bytes big-endian · case 04
Multi-byte loads return byte-swapped values.
Loads assemble bytes big-endian · case 05
Multi-byte loads return byte-swapped values.
Unsigned byte load sign-extends · case 01
lbu of a byte with bit 7 set returns a negative value.
Unsigned byte load sign-extends · case 02
lbu of a byte with bit 7 set returns a negative value.
Unsigned byte load sign-extends · case 03
lbu of a byte with bit 7 set returns a negative value.
Unsigned byte load sign-extends · case 04
lbu of a byte with bit 7 set returns a negative value.
Unsigned byte load sign-extends · case 05
lbu of a byte with bit 7 set returns a negative value.
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 ↗