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
Values may contain the FNC1 placeholder · case 01
A serial number containing "#" is decoded as two fields.
Values may contain the FNC1 placeholder · case 02
A serial number containing "#" is decoded as two fields.
Values may contain the FNC1 placeholder · case 03
A serial number containing "#" is decoded as two fields.
Values may contain the FNC1 placeholder · case 04
A serial number containing "#" is decoded as two fields.
Values may contain the FNC1 placeholder · case 05
A serial number containing "#" is decoded as two fields.
Plain Code 128 scans are parsed as GS1 · case 01
Internal Code 128 labels whose text happens to start with digits are interpreted as GTINs.
Plain Code 128 scans are parsed as GS1 · case 02
Internal Code 128 labels whose text happens to start with digits are interpreted as GTINs.
Plain Code 128 scans are parsed as GS1 · case 03
Internal Code 128 labels whose text happens to start with digits are interpreted as GTINs.
Plain Code 128 scans are parsed as GS1 · case 04
Internal Code 128 labels whose text happens to start with digits are interpreted as GTINs.
Plain Code 128 scans are parsed as GS1 · case 05
Internal Code 128 labels whose text happens to start with digits are interpreted as GTINs.
A separator after a fixed-length field is reported as an unknown AI · case 01
Labels from printers that add FNC1 after every field fail to parse.
A separator after a fixed-length field is reported as an unknown AI · case 02
Labels from printers that add FNC1 after every field fail to parse.
A separator after a fixed-length field is reported as an unknown AI · case 03
Labels from printers that add FNC1 after every field fail to parse.
A separator after a fixed-length field is reported as an unknown AI · case 04
Labels from printers that add FNC1 after every field fail to parse.
A separator after a fixed-length field is reported as an unknown AI · case 05
Labels from printers that add FNC1 after every field fail to parse.
Fixed-length field swallows a separator · case 01
A truncated GTIN followed by a separator parses as a GTIN containing GS and shifts every later field.
Fixed-length field swallows a separator · case 02
A truncated GTIN followed by a separator parses as a GTIN containing GS and shifts every later field.
Fixed-length field swallows a separator · case 03
A truncated GTIN followed by a separator parses as a GTIN containing GS and shifts every later field.
Fixed-length field swallows a separator · case 04
A truncated GTIN followed by a separator parses as a GTIN containing GS and shifts every later field.
Fixed-length field swallows a separator · case 05
A truncated GTIN followed by a separator parses as a GTIN containing GS and shifts every later field.
Over-long count field is accepted · case 01
A missing separator after AI 30 merges the next field into the count without an error.
Over-long count field is accepted · case 02
A missing separator after AI 30 merges the next field into the count without an error.
Over-long count field is accepted · case 03
A missing separator after AI 30 merges the next field into the count without an error.
Over-long count field is accepted · case 04
A missing separator after AI 30 merges the next field into the count without an error.
Over-long count field is accepted · case 05
A missing separator after AI 30 merges the next field into the count without an error.
Empty variable field swallows the following separator · case 01
A blank batch number followed by GS is parsed as a batch containing the next field.
Empty variable field swallows the following separator · case 02
A blank batch number followed by GS is parsed as a batch containing the next field.
Empty variable field swallows the following separator · case 03
A blank batch number followed by GS is parsed as a batch containing the next field.
Empty variable field swallows the following separator · case 04
A blank batch number followed by GS is parsed as a batch containing the next field.
Empty variable field swallows the following separator · case 05
A blank batch number followed by GS is parsed as a batch containing the next field.
Truncated GTIN at the end of a scan is accepted · case 01
A partially read symbol yields a 12-digit GTIN without error.
Truncated GTIN at the end of a scan is accepted · case 02
A partially read symbol yields a 12-digit GTIN without error.
Truncated GTIN at the end of a scan is accepted · case 03
A partially read symbol yields a 12-digit GTIN without error.
Truncated GTIN at the end of a scan is accepted · case 04
A partially read symbol yields a 12-digit GTIN without error.
Truncated GTIN at the end of a scan is accepted · case 05
A partially read symbol yields a 12-digit GTIN without error.
QR numeric remainder of two digits is sized as 8 bits · case 01
Capacity checks reject payloads that would still fit, forcing a larger symbol version.
QR numeric remainder of two digits is sized as 8 bits · case 02
Capacity checks reject payloads that would still fit, forcing a larger symbol version.
QR numeric remainder of two digits is sized as 8 bits · case 03
Capacity checks reject payloads that would still fit, forcing a larger symbol version.
QR numeric remainder of two digits is sized as 8 bits · case 04
Capacity checks reject payloads that would still fit, forcing a larger symbol version.
QR numeric remainder of two digits is sized as 8 bits · case 05
Capacity checks reject payloads that would still fit, forcing a larger symbol version.
Version 9 and 26 use the wider count indicator · case 01
Symbols at versions 9 and 26 are built with a count field two bits too wide and fail to decode.
Version 9 and 26 use the wider count indicator · case 02
Symbols at versions 9 and 26 are built with a count field two bits too wide and fail to decode.
Version 9 and 26 use the wider count indicator · case 03
Symbols at versions 9 and 26 are built with a count field two bits too wide and fail to decode.
Version 9 and 26 use the wider count indicator · case 04
Symbols at versions 9 and 26 are built with a count field two bits too wide and fail to decode.
Version 9 and 26 use the wider count indicator · case 05
Symbols at versions 9 and 26 are built with a count field two bits too wide and fail to decode.
Odd alphanumeric character is sized as a full pair · case 01
Odd-length alphanumeric payloads are overestimated by five bits and may bump the version.
Odd alphanumeric character is sized as a full pair · case 02
Odd-length alphanumeric payloads are overestimated by five bits and may bump the version.
Odd alphanumeric character is sized as a full pair · case 03
Odd-length alphanumeric payloads are overestimated by five bits and may bump the version.
Odd alphanumeric character is sized as a full pair · case 04
Odd-length alphanumeric payloads are overestimated by five bits and may bump the version.
Odd alphanumeric character is sized as a full pair · case 05
Odd-length alphanumeric payloads are overestimated by five bits and may bump the version.
Byte mode counts characters instead of UTF-8 bytes · case 01
Payloads with accented letters or the euro sign overflow the chosen version and are truncated by the encoder.
Byte mode counts characters instead of UTF-8 bytes · case 02
Payloads with accented letters or the euro sign overflow the chosen version and are truncated by the encoder.
Byte mode counts characters instead of UTF-8 bytes · case 03
Payloads with accented letters or the euro sign overflow the chosen version and are truncated by the encoder.
Byte mode counts characters instead of UTF-8 bytes · case 04
Payloads with accented letters or the euro sign overflow the chosen version and are truncated by the encoder.
Byte mode counts characters instead of UTF-8 bytes · case 05
Payloads with accented letters or the euro sign overflow the chosen version and are truncated by the encoder.
Alphanumeric mode accepts lowercase letters · case 01
Lowercase URLs are sized as alphanumeric but the encoder has no values for them.
Alphanumeric mode accepts lowercase letters · case 02
Lowercase URLs are sized as alphanumeric but the encoder has no values for them.
Alphanumeric mode accepts lowercase letters · case 03
Lowercase URLs are sized as alphanumeric but the encoder has no values for them.
Alphanumeric mode accepts lowercase letters · case 04
Lowercase URLs are sized as alphanumeric but the encoder has no values for them.
Alphanumeric mode accepts lowercase letters · case 05
Lowercase URLs are sized as alphanumeric but the encoder has no values for them.
Count equal to two to the indicator width is accepted · case 01
A 256-byte segment at version 9 wraps its 8-bit count to zero.
Count equal to two to the indicator width is accepted · case 02
A 256-byte segment at version 9 wraps its 8-bit count to zero.
Count equal to two to the indicator width is accepted · case 03
A 256-byte segment at version 9 wraps its 8-bit count to zero.
Count equal to two to the indicator width is accepted · case 04
A 256-byte segment at version 9 wraps its 8-bit count to zero.
Count equal to two to the indicator width is accepted · case 05
A 256-byte segment at version 9 wraps its 8-bit count to zero.
Byte mode count indicator follows the numeric progression · case 01
Byte segments at versions 10-26 are written with a 12-bit count and misparse.
Byte mode count indicator follows the numeric progression · case 02
Byte segments at versions 10-26 are written with a 12-bit count and misparse.
Byte mode count indicator follows the numeric progression · case 03
Byte segments at versions 10-26 are written with a 12-bit count and misparse.
Byte mode count indicator follows the numeric progression · case 04
Byte segments at versions 10-26 are written with a 12-bit count and misparse.
Byte mode count indicator follows the numeric progression · case 05
Byte segments at versions 10-26 are written with a 12-bit count and misparse.
QR alphanumeric pairs weight the second character · case 01
Scanned text has every pair of characters swapped, so "AC" reads as "CA".
QR alphanumeric pairs weight the second character · case 02
Scanned text has every pair of characters swapped, so "AC" reads as "CA".
QR alphanumeric pairs weight the second character · case 03
Scanned text has every pair of characters swapped, so "AC" reads as "CA".
QR alphanumeric pairs weight the second character · case 04
Scanned text has every pair of characters swapped, so "AC" reads as "CA".
QR alphanumeric pairs weight the second character · case 05
Scanned text has every pair of characters swapped, so "AC" reads as "CA".
QR alphanumeric pairs are written in 10 bits · case 01
Every pair value above 1023 overflows its field and the rest of the stream is misaligned.
QR alphanumeric pairs are written in 10 bits · case 02
Every pair value above 1023 overflows its field and the rest of the stream is misaligned.
QR alphanumeric pairs are written in 10 bits · case 03
Every pair value above 1023 overflows its field and the rest of the stream is misaligned.
QR alphanumeric pairs are written in 10 bits · case 04
Every pair value above 1023 overflows its field and the rest of the stream is misaligned.
QR alphanumeric pairs are written in 10 bits · case 05
Every pair value above 1023 overflows its field and the rest of the stream is misaligned.
QR alphanumeric trailing character is written in 5 bits · case 01
Odd-length data ending in a character with value 32 or more corrupts the terminator.
QR alphanumeric trailing character is written in 5 bits · case 02
Odd-length data ending in a character with value 32 or more corrupts the terminator.
QR alphanumeric trailing character is written in 5 bits · case 03
Odd-length data ending in a character with value 32 or more corrupts the terminator.
QR alphanumeric trailing character is written in 5 bits · case 04
Odd-length data ending in a character with value 32 or more corrupts the terminator.
QR alphanumeric trailing character is written in 5 bits · case 05
Odd-length data ending in a character with value 32 or more corrupts the terminator.
Last alphanumeric pair is dropped · case 01
Even-length strings lose their final two characters.
Last alphanumeric pair is dropped · case 02
Even-length strings lose their final two characters.
Last alphanumeric pair is dropped · case 03
Even-length strings lose their final two characters.
Last alphanumeric pair is dropped · case 04
Even-length strings lose their final two characters.
Last alphanumeric pair is dropped · case 05
Even-length strings lose their final two characters.
QR alphanumeric space is given value 44 · case 01
Text containing spaces or punctuation decodes with shifted symbols.
QR alphanumeric space is given value 44 · case 02
Text containing spaces or punctuation decodes with shifted symbols.
QR alphanumeric space is given value 44 · case 03
Text containing spaces or punctuation decodes with shifted symbols.
QR alphanumeric space is given value 44 · case 04
Text containing spaces or punctuation decodes with shifted symbols.
QR alphanumeric space is given value 44 · case 05
Text containing spaces or punctuation decodes with shifted symbols.
QR terminator overflows a nearly full symbol · case 01
Payloads that fill all but a few bits get an extra codeword and the symbol is rejected as too long.
QR terminator overflows a nearly full symbol · case 02
Payloads that fill all but a few bits get an extra codeword and the symbol is rejected as too long.
QR terminator overflows a nearly full symbol · case 03
Payloads that fill all but a few bits get an extra codeword and the symbol is rejected as too long.
QR terminator overflows a nearly full symbol · case 04
Payloads that fill all but a few bits get an extra codeword and the symbol is rejected as too long.
QR terminator overflows a nearly full symbol · case 05
Payloads that fill all but a few bits get an extra codeword and the symbol is rejected as too long.
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 ↗