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
Own pawn beside the destination creates an ep square · case 01
e2-e4 next to a white pawn on f4 sets ep to e3.
Own pawn beside the destination creates an ep square · case 02
e2-e4 next to a white pawn on f4 sets ep to e3.
Own pawn beside the destination creates an ep square · case 03
e2-e4 next to a white pawn on f4 sets ep to e3.
Own pawn beside the destination creates an ep square · case 04
e2-e4 next to a white pawn on f4 sets ep to e3.
Own pawn beside the destination creates an ep square · case 05
e2-e4 next to a white pawn on f4 sets ep to e3.
Ranks 0 and 9 accepted in UCI squares · case 01
"e2e9" passes syntax validation.
Ranks 0 and 9 accepted in UCI squares · case 02
"e2e9" passes syntax validation.
Ranks 0 and 9 accepted in UCI squares · case 03
"e2e9" passes syntax validation.
Ranks 0 and 9 accepted in UCI squares · case 04
"e2e9" passes syntax validation.
Ranks 0 and 9 accepted in UCI squares · case 05
"e2e9" passes syntax validation.
Promotion to king accepted · case 01
"e7e8k" is reported ok.
Promotion to king accepted · case 02
"e7e8k" is reported ok.
Promotion to king accepted · case 03
"e7e8k" is reported ok.
Promotion to king accepted · case 04
"e7e8k" is reported ok.
Promotion to king accepted · case 05
"e7e8k" is reported ok.
Rook reaching the eighth rank asked for a promotion · case 01
"a1a8" for a rook returns "promotion required".
Rook reaching the eighth rank asked for a promotion · case 02
"a1a8" for a rook returns "promotion required".
Rook reaching the eighth rank asked for a promotion · case 03
"a1a8" for a rook returns "promotion required".
Rook reaching the eighth rank asked for a promotion · case 04
"a1a8" for a rook returns "promotion required".
Rook reaching the eighth rank asked for a promotion · case 05
"a1a8" for a rook returns "promotion required".
Null move string accepted · case 01
"e2e2" is reported ok.
Null move string accepted · case 02
"e2e2" is reported ok.
Null move string accepted · case 03
"e2e2" is reported ok.
Null move string accepted · case 04
"e2e2" is reported ok.
Null move string accepted · case 05
"e2e2" is reported ok.
Overlong UCI strings pass validation · case 01
"e7e8qq" is treated as a promotion with suffix "qq".
Overlong UCI strings pass validation · case 02
"e7e8qq" is treated as a promotion with suffix "qq".
Overlong UCI strings pass validation · case 03
"e7e8qq" is treated as a promotion with suffix "qq".
Overlong UCI strings pass validation · case 04
"e7e8qq" is treated as a promotion with suffix "qq".
Overlong UCI strings pass validation · case 05
"e7e8qq" is treated as a promotion with suffix "qq".
Mating SAN with "#" cannot be resolved · case 01
"Qf7#" fails to resolve while "Qe5+" works.
Mating SAN with "#" cannot be resolved · case 02
"Qf7#" fails to resolve while "Qe5+" works.
Mating SAN with "#" cannot be resolved · case 03
"Qf7#" fails to resolve while "Qe5+" works.
Mating SAN with "#" cannot be resolved · case 04
"Qf7#" fails to resolve while "Qe5+" works.
Mating SAN with "#" cannot be resolved · case 05
"Qf7#" fails to resolve while "Qe5+" works.
Rank disambiguator compared with the file letter · case 01
"R1a3" is reported illegal although the a1 rook can play it.
Rank disambiguator compared with the file letter · case 02
"R1a3" is reported illegal although the a1 rook can play it.
Rank disambiguator compared with the file letter · case 03
"R1a3" is reported illegal although the a1 rook can play it.
Rank disambiguator compared with the file letter · case 04
"R1a3" is reported illegal although the a1 rook can play it.
Rank disambiguator compared with the file letter · case 05
"R1a3" is reported illegal although the a1 rook can play it.
SAN without "x" accepted as a capture · case 01
"Nf3" onto a black pawn resolves instead of requiring "Nxf3".
SAN without "x" accepted as a capture · case 02
"Nf3" onto a black pawn resolves instead of requiring "Nxf3".
SAN without "x" accepted as a capture · case 03
"Nf3" onto a black pawn resolves instead of requiring "Nxf3".
SAN without "x" accepted as a capture · case 04
"Nf3" onto a black pawn resolves instead of requiring "Nxf3".
SAN without "x" accepted as a capture · case 05
"Nf3" onto a black pawn resolves instead of requiring "Nxf3".
Black pawn double step cannot be resolved · case 01
"d5" for a black pawn on d7 is reported illegal.
Black pawn double step cannot be resolved · case 02
"d5" for a black pawn on d7 is reported illegal.
Black pawn double step cannot be resolved · case 03
"d5" for a black pawn on d7 is reported illegal.
Black pawn double step cannot be resolved · case 04
"d5" for a black pawn on d7 is reported illegal.
Black pawn double step cannot be resolved · case 05
"d5" for a black pawn on d7 is reported illegal.
Pawn resolves a capture toward its own side · case 01
"exd3" resolves for a white pawn on e4.
Pawn resolves a capture toward its own side · case 02
"exd3" resolves for a white pawn on e4.
Pawn resolves a capture toward its own side · case 03
"exd3" resolves for a white pawn on e4.
Pawn resolves a capture toward its own side · case 04
"exd3" resolves for a white pawn on e4.
Pawn resolves a capture toward its own side · case 05
"exd3" resolves for a white pawn on e4.
Ambiguous SAN silently resolved to one piece · case 01
"Nd2" with knights on b1 and f3 returns one origin instead of "ambiguous".
Ambiguous SAN silently resolved to one piece · case 02
"Nd2" with knights on b1 and f3 returns one origin instead of "ambiguous".
Ambiguous SAN silently resolved to one piece · case 03
"Nd2" with knights on b1 and f3 returns one origin instead of "ambiguous".
Ambiguous SAN silently resolved to one piece · case 04
"Nd2" with knights on b1 and f3 returns one origin instead of "ambiguous".
Ambiguous SAN silently resolved to one piece · case 05
"Nd2" with knights on b1 and f3 returns one origin instead of "ambiguous".
Enemy piece of the same type forces a disambiguator · case 01
With a black knight on f3, the white move Nb1-d2 is written "Nbd2".
Enemy piece of the same type forces a disambiguator · case 02
With a black knight on f3, the white move Nb1-d2 is written "Nbd2".
Enemy piece of the same type forces a disambiguator · case 03
With a black knight on f3, the white move Nb1-d2 is written "Nbd2".
Enemy piece of the same type forces a disambiguator · case 04
With a black knight on f3, the white move Nb1-d2 is written "Nbd2".
Enemy piece of the same type forces a disambiguator · case 05
With a black knight on f3, the white move Nb1-d2 is written "Nbd2".
Rank disambiguator chosen when the file suffices · case 01
Nb1-d2 with a knight on f3 is written "N1d2" instead of "Nbd2".
Rank disambiguator chosen when the file suffices · case 02
Nb1-d2 with a knight on f3 is written "N1d2" instead of "Nbd2".
Rank disambiguator chosen when the file suffices · case 03
Nb1-d2 with a knight on f3 is written "N1d2" instead of "Nbd2".
Rank disambiguator chosen when the file suffices · case 04
Nb1-d2 with a knight on f3 is written "N1d2" instead of "Nbd2".
Rank disambiguator chosen when the file suffices · case 05
Nb1-d2 with a knight on f3 is written "N1d2" instead of "Nbd2".
Blocked rook counted as a competitor · case 01
Rh1-d1 with the a1 rook shielded by a bishop on c1 is written "Rhd1".
Blocked rook counted as a competitor · case 02
Rh1-d1 with the a1 rook shielded by a bishop on c1 is written "Rhd1".
Blocked rook counted as a competitor · case 03
Rh1-d1 with the a1 rook shielded by a bishop on c1 is written "Rhd1".
Blocked rook counted as a competitor · case 04
Rh1-d1 with the a1 rook shielded by a bishop on c1 is written "Rhd1".
Blocked rook counted as a competitor · case 05
Rh1-d1 with the a1 rook shielded by a bishop on c1 is written "Rhd1".
Black moves written with lower-case piece letters · case 01
A black rook capture is written "rxa2".
Black moves written with lower-case piece letters · case 02
A black rook capture is written "rxa2".
Black moves written with lower-case piece letters · case 03
A black rook capture is written "rxa2".
Black moves written with lower-case piece letters · case 04
A black rook capture is written "rxa2".
Black moves written with lower-case piece letters · case 05
A black rook capture is written "rxa2".
Queen twin on a diagonal not detected · case 01
Qa1-d4 with another queen able to reach d4 diagonally is written without a disambiguator.
Queen twin on a diagonal not detected · case 02
Qa1-d4 with another queen able to reach d4 diagonally is written without a disambiguator.
Queen twin on a diagonal not detected · case 03
Qa1-d4 with another queen able to reach d4 diagonally is written without a disambiguator.
Queen twin on a diagonal not detected · case 04
Qa1-d4 with another queen able to reach d4 diagonally is written without a disambiguator.
Queen twin on a diagonal not detected · case 05
Qa1-d4 with another queen able to reach d4 diagonally is written without a disambiguator.
Chess960 king moved two squares as in standard chess · case 01
King b1 castling kingside is treated as landing on d1, so attacks on g1 are never checked.
Chess960 king moved two squares as in standard chess · case 02
King b1 castling kingside is treated as landing on d1, so attacks on g1 are never checked.
Chess960 king moved two squares as in standard chess · case 03
King b1 castling kingside is treated as landing on d1, so attacks on g1 are never checked.
Chess960 king moved two squares as in standard chess · case 04
King b1 castling kingside is treated as landing on d1, so attacks on g1 are never checked.
Chess960 king moved two squares as in standard chess · case 05
King b1 castling kingside is treated as landing on d1, so attacks on g1 are never checked.
Castling rook blocks its own king · case 01
King b1 with rook c1 cannot castle kingside because the king must pass the rook's square.
Castling rook blocks its own king · case 02
King b1 with rook c1 cannot castle kingside because the king must pass the rook's square.
Castling rook blocks its own king · case 03
King b1 with rook c1 cannot castle kingside because the king must pass the rook's square.
Castling rook blocks its own king · case 04
King b1 with rook c1 cannot castle kingside because the king must pass the rook's square.
Castling rook blocks its own king · case 05
King b1 with rook c1 cannot castle kingside because the king must pass the rook's square.
Rook destination occupancy ignored · case 01
King g1, rook h1 castles kingside with a bishop on f1.
Rook destination occupancy ignored · case 02
King g1, rook h1 castles kingside with a bishop on f1.
Rook destination occupancy ignored · case 03
King g1, rook h1 castles kingside with a bishop on f1.
Rook destination occupancy ignored · case 04
King g1, rook h1 castles kingside with a bishop on f1.
Rook destination occupancy ignored · case 05
King g1, rook h1 castles kingside with a bishop on f1.
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 ↗