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
Piece shielded by a friend still treated as pinned · case 01
A rook with a pawn between it and the king cannot leave the file.
Piece shielded by a friend still treated as pinned · case 02
A rook with a pawn between it and the king cannot leave the file.
Piece shielded by a friend still treated as pinned · case 03
A rook with a pawn between it and the king cannot leave the file.
Piece shielded by a friend still treated as pinned · case 04
A rook with a pawn between it and the king cannot leave the file.
Piece shielded by a friend still treated as pinned · case 05
A rook with a pawn between it and the king cannot leave the file.
Bishop on the king's file pins a knight · case 01
A knight between its king and an enemy bishop on the same file may not move.
Bishop on the king's file pins a knight · case 02
A knight between its king and an enemy bishop on the same file may not move.
Bishop on the king's file pins a knight · case 03
A knight between its king and an enemy bishop on the same file may not move.
Bishop on the king's file pins a knight · case 04
A knight between its king and an enemy bishop on the same file may not move.
Bishop on the king's file pins a knight · case 05
A knight between its king and an enemy bishop on the same file may not move.
Pinned bishop may switch to another line through its king · case 01
A bishop pinned on the c1-g5 diagonal may move to c3 or e1.
Pinned bishop may switch to another line through its king · case 02
A bishop pinned on the c1-g5 diagonal may move to c3 or e1.
Pinned bishop may switch to another line through its king · case 03
A bishop pinned on the c1-g5 diagonal may move to c3 or e1.
Pinned bishop may switch to another line through its king · case 04
A bishop pinned on the c1-g5 diagonal may move to c3 or e1.
Pinned bishop may switch to another line through its king · case 05
A bishop pinned on the c1-g5 diagonal may move to c3 or e1.
Friendly queen behind a piece pins it · case 01
A knight between its king and its own queen may not move.
Friendly queen behind a piece pins it · case 02
A knight between its king and its own queen may not move.
Friendly queen behind a piece pins it · case 03
A knight between its king and its own queen may not move.
Friendly queen behind a piece pins it · case 04
A knight between its king and its own queen may not move.
Friendly queen behind a piece pins it · case 05
A knight between its king and its own queen may not move.
Double check answered by a blocking move · case 01
With rook and knight both giving check, a queen interposition is accepted.
Double check answered by a blocking move · case 02
With rook and knight both giving check, a queen interposition is accepted.
Double check answered by a blocking move · case 03
With rook and knight both giving check, a queen interposition is accepted.
Double check answered by a blocking move · case 04
With rook and knight both giving check, a queen interposition is accepted.
Double check answered by a blocking move · case 05
With rook and knight both giving check, a queen interposition is accepted.
Capturing the checking piece is not an evasion · case 01
A rook capturing the checking rook is rejected.
Capturing the checking piece is not an evasion · case 02
A rook capturing the checking rook is rejected.
Capturing the checking piece is not an evasion · case 03
A rook capturing the checking rook is rejected.
Capturing the checking piece is not an evasion · case 04
A rook capturing the checking rook is rejected.
Capturing the checking piece is not an evasion · case 05
A rook capturing the checking rook is rejected.
Knight check treated as blockable · case 01
A queen move to a square between king and a checking knight is accepted.
Knight check treated as blockable · case 02
A queen move to a square between king and a checking knight is accepted.
Knight check treated as blockable · case 03
A queen move to a square between king and a checking knight is accepted.
Knight check treated as blockable · case 04
A queen move to a square between king and a checking knight is accepted.
Knight check treated as blockable · case 05
A queen move to a square between king and a checking knight is accepted.
File check walked as a diagonal · case 01
Interposing on the checking file is rejected while unrelated diagonal squares are accepted.
File check walked as a diagonal · case 02
Interposing on the checking file is rejected while unrelated diagonal squares are accepted.
File check walked as a diagonal · case 03
Interposing on the checking file is rejected while unrelated diagonal squares are accepted.
File check walked as a diagonal · case 04
Interposing on the checking file is rejected while unrelated diagonal squares are accepted.
File check walked as a diagonal · case 05
Interposing on the checking file is rejected while unrelated diagonal squares are accepted.
FEN placement read bottom-up · case 01
White pieces listed on the last FEN row appear on rank 8.
FEN placement read bottom-up · case 02
White pieces listed on the last FEN row appear on rank 8.
FEN placement read bottom-up · case 03
White pieces listed on the last FEN row appear on rank 8.
FEN placement read bottom-up · case 04
White pieces listed on the last FEN row appear on rank 8.
FEN placement read bottom-up · case 05
White pieces listed on the last FEN row appear on rank 8.
Digit runs advance one file only · case 01
"4k3" places the king on b8 and every rank fails the eight-file check.
Digit runs advance one file only · case 02
"4k3" places the king on b8 and every rank fails the eight-file check.
Digit runs advance one file only · case 03
"4k3" places the king on b8 and every rank fails the eight-file check.
Digit runs advance one file only · case 04
"4k3" places the king on b8 and every rank fails the eight-file check.
Digit runs advance one file only · case 05
"4k3" places the king on b8 and every rank fails the eight-file check.
Positions without castling rights rejected · case 01
Every FEN with "-" in the castling field is reported invalid.
Positions without castling rights rejected · case 02
Every FEN with "-" in the castling field is reported invalid.
Positions without castling rights rejected · case 03
Every FEN with "-" in the castling field is reported invalid.
Positions without castling rights rejected · case 04
Every FEN with "-" in the castling field is reported invalid.
Positions without castling rights rejected · case 05
Every FEN with "-" in the castling field is reported invalid.
En passant square on the wrong side accepted · case 01
With white to move, an ep square on rank 3 is accepted.
En passant square on the wrong side accepted · case 02
With white to move, an ep square on rank 3 is accepted.
En passant square on the wrong side accepted · case 03
With white to move, an ep square on rank 3 is accepted.
En passant square on the wrong side accepted · case 04
With white to move, an ep square on rank 3 is accepted.
En passant square on the wrong side accepted · case 05
With white to move, an ep square on rank 3 is accepted.
Fullmove number zero accepted · case 01
A FEN ending in "0 0" parses as a valid position.
Fullmove number zero accepted · case 02
A FEN ending in "0 0" parses as a valid position.
Fullmove number zero accepted · case 03
A FEN ending in "0 0" parses as a valid position.
Fullmove number zero accepted · case 04
A FEN ending in "0 0" parses as a valid position.
Fullmove number zero accepted · case 05
A FEN ending in "0 0" parses as a valid position.
Two white kings accepted · case 01
A FEN with two white kings parses successfully.
Two white kings accepted · case 02
A FEN with two white kings parses successfully.
Two white kings accepted · case 03
A FEN with two white kings parses successfully.
Two white kings accepted · case 04
A FEN with two white kings parses successfully.
Two white kings accepted · case 05
A FEN with two white kings parses successfully.
King move keeps the queenside right · case 01
After Ke1-f1, white still holds the Q castling right.
King move keeps the queenside right · case 02
After Ke1-f1, white still holds the Q castling right.
King move keeps the queenside right · case 03
After Ke1-f1, white still holds the Q castling right.
King move keeps the queenside right · case 04
After Ke1-f1, white still holds the Q castling right.
King move keeps the queenside right · case 05
After Ke1-f1, white still holds the Q castling right.
Capturing a rook in its corner keeps the victim's right · case 01
After Bxh8, black still holds the k right.
Capturing a rook in its corner keeps the victim's right · case 02
After Bxh8, black still holds the k right.
Capturing a rook in its corner keeps the victim's right · case 03
After Bxh8, black still holds the k right.
Capturing a rook in its corner keeps the victim's right · case 04
After Bxh8, black still holds the k right.
Capturing a rook in its corner keeps the victim's right · case 05
After Bxh8, black still holds the k right.
En passant target set to the landing square · case 01
After e2-e4 the ep square is reported as e4 instead of e3.
En passant target set to the landing square · case 02
After e2-e4 the ep square is reported as e4 instead of e3.
En passant target set to the landing square · case 03
After e2-e4 the ep square is reported as e4 instead of e3.
En passant target set to the landing square · case 04
After e2-e4 the ep square is reported as e4 instead of e3.
En passant target set to the landing square · case 05
After e2-e4 the ep square is reported as e4 instead of e3.
Captures do not reset the fifty-move clock · case 01
A knight capture increments the halfmove clock.
Captures do not reset the fifty-move clock · case 02
A knight capture increments the halfmove clock.
Captures do not reset the fifty-move clock · case 03
A knight capture increments the halfmove clock.
Captures do not reset the fifty-move clock · case 04
A knight capture increments the halfmove clock.
Captures do not reset the fifty-move clock · case 05
A knight capture increments the halfmove clock.
Exhausted castling rights rendered as an empty field · case 01
After the last right is lost, the rights field is "" instead of "-".
Exhausted castling rights rendered as an empty field · case 02
After the last right is lost, the rights field is "" instead of "-".
Exhausted castling rights rendered as an empty field · case 03
After the last right is lost, the rights field is "" instead of "-".
Exhausted castling rights rendered as an empty field · case 04
After the last right is lost, the rights field is "" instead of "-".
Exhausted castling rights rendered as an empty field · case 05
After the last right is lost, the rights field is "" instead of "-".
Rook sliding two ranks creates an en passant square · case 01
Rd1-d3 next to a black pawn sets ep to d2.
Rook sliding two ranks creates an en passant square · case 02
Rd1-d3 next to a black pawn sets ep to d2.
Rook sliding two ranks creates an en passant square · case 03
Rd1-d3 next to a black pawn sets ep to d2.
Rook sliding two ranks creates an en passant square · case 04
Rd1-d3 next to a black pawn sets ep to d2.
Rook sliding two ranks creates an en passant square · case 05
Rd1-d3 next to a black pawn sets ep to d2.
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 ↗