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
Back camera mount offset has the wrong sign · case 01
Every back-camera photo is tagged a half turn away from upright.
Back camera mount offset has the wrong sign · case 02
Every back-camera photo is tagged a half turn away from upright.
Back camera mount offset has the wrong sign · case 03
Every back-camera photo is tagged a half turn away from upright.
Back camera mount offset has the wrong sign · case 04
Every back-camera photo is tagged a half turn away from upright.
Back camera mount offset has the wrong sign · case 05
Every back-camera photo is tagged a half turn away from upright.
Front camera tags omit the mirror · case 01
Selfies are saved with unmirrored tags, so text on shirts reads correctly in the preview but the file shows it reversed.
Front camera tags omit the mirror · case 02
Selfies are saved with unmirrored tags, so text on shirts reads correctly in the preview but the file shows it reversed.
Front camera tags omit the mirror · case 03
Selfies are saved with unmirrored tags, so text on shirts reads correctly in the preview but the file shows it reversed.
Front camera tags omit the mirror · case 04
Selfies are saved with unmirrored tags, so text on shirts reads correctly in the preview but the file shows it reversed.
Front camera tags omit the mirror · case 05
Selfies are saved with unmirrored tags, so text on shirts reads correctly in the preview but the file shows it reversed.
Baking a transposed photo keeps the stored dimension tags · case 01
Tag-5 and tag-7 photos report landscape pixel dimensions after being baked to portrait.
Baking a transposed photo keeps the stored dimension tags · case 02
Tag-5 and tag-7 photos report landscape pixel dimensions after being baked to portrait.
Baking a transposed photo keeps the stored dimension tags · case 03
Tag-5 and tag-7 photos report landscape pixel dimensions after being baked to portrait.
Baking a transposed photo keeps the stored dimension tags · case 04
Tag-5 and tag-7 photos report landscape pixel dimensions after being baked to portrait.
Baking a transposed photo keeps the stored dimension tags · case 05
Tag-5 and tag-7 photos report landscape pixel dimensions after being baked to portrait.
Baking a rotated scan leaves X and Y resolution unswapped · case 01
Anisotropic scans print stretched after their pixels were rotated upright.
Baking a rotated scan leaves X and Y resolution unswapped · case 02
Anisotropic scans print stretched after their pixels were rotated upright.
Baking a rotated scan leaves X and Y resolution unswapped · case 03
Anisotropic scans print stretched after their pixels were rotated upright.
Baking a rotated scan leaves X and Y resolution unswapped · case 04
Anisotropic scans print stretched after their pixels were rotated upright.
Baking a rotated scan leaves X and Y resolution unswapped · case 05
Anisotropic scans print stretched after their pixels were rotated upright.
Baking writes null dimension tags for a lone width · case 01
Files that recorded only PixelXDimension gain a null PixelXDimension and a moved width.
Baking writes null dimension tags for a lone width · case 02
Files that recorded only PixelXDimension gain a null PixelXDimension and a moved width.
Baking writes null dimension tags for a lone width · case 03
Files that recorded only PixelXDimension gain a null PixelXDimension and a moved width.
Baking writes null dimension tags for a lone width · case 04
Files that recorded only PixelXDimension gain a null PixelXDimension and a moved width.
Baking writes null dimension tags for a lone width · case 05
Files that recorded only PixelXDimension gain a null PixelXDimension and a moved width.
Baking adds an Orientation tag to files that never had one · case 01
Metadata diffs show a new Orientation key on images that were stored without it.
Baking adds an Orientation tag to files that never had one · case 02
Metadata diffs show a new Orientation key on images that were stored without it.
Baking adds an Orientation tag to files that never had one · case 03
Metadata diffs show a new Orientation key on images that were stored without it.
Baking adds an Orientation tag to files that never had one · case 04
Metadata diffs show a new Orientation key on images that were stored without it.
Baking adds an Orientation tag to files that never had one · case 05
Metadata diffs show a new Orientation key on images that were stored without it.
Baked XMP orientation is written as a number · case 01
The XMP serializer emits a typed value that differs from the text property it replaces.
Baked XMP orientation is written as a number · case 02
The XMP serializer emits a typed value that differs from the text property it replaces.
Baked XMP orientation is written as a number · case 03
The XMP serializer emits a typed value that differs from the text property it replaces.
Baked XMP orientation is written as a number · case 04
The XMP serializer emits a typed value that differs from the text property it replaces.
Baked XMP orientation is written as a number · case 05
The XMP serializer emits a typed value that differs from the text property it replaces.
Regenerated thumbnail keeps a thumbnail orientation tag · case 01
Viewers that trust the thumbnail tag show a stale value for the regenerated thumbnail.
Regenerated thumbnail keeps a thumbnail orientation tag · case 02
Viewers that trust the thumbnail tag show a stale value for the regenerated thumbnail.
Regenerated thumbnail keeps a thumbnail orientation tag · case 03
Viewers that trust the thumbnail tag show a stale value for the regenerated thumbnail.
Regenerated thumbnail keeps a thumbnail orientation tag · case 04
Viewers that trust the thumbnail tag show a stale value for the regenerated thumbnail.
Regenerated thumbnail keeps a thumbnail orientation tag · case 05
Viewers that trust the thumbnail tag show a stale value for the regenerated thumbnail.
Metadata scan continues into entropy-coded data · case 01
Byte sequences after the start of scan are misread as an Exif segment in some files.
Metadata scan continues into entropy-coded data · case 02
Byte sequences after the start of scan are misread as an Exif segment in some files.
Metadata scan continues into entropy-coded data · case 03
Byte sequences after the start of scan are misread as an Exif segment in some files.
Metadata scan continues into entropy-coded data · case 04
Byte sequences after the start of scan are misread as an Exif segment in some files.
Metadata scan continues into entropy-coded data · case 05
Byte sequences after the start of scan are misread as an Exif segment in some files.
Any APP1 beginning with "Exif" is chosen · case 01
A malformed APP1 whose identifier lacks the null padding shadows the real Exif segment.
Any APP1 beginning with "Exif" is chosen · case 02
A malformed APP1 whose identifier lacks the null padding shadows the real Exif segment.
Any APP1 beginning with "Exif" is chosen · case 03
A malformed APP1 whose identifier lacks the null padding shadows the real Exif segment.
Any APP1 beginning with "Exif" is chosen · case 04
A malformed APP1 whose identifier lacks the null padding shadows the real Exif segment.
Any APP1 beginning with "Exif" is chosen · case 05
A malformed APP1 whose identifier lacks the null padding shadows the real Exif segment.
Exif is accepted from an APP0 segment · case 01
A JFIF extension that embeds an Exif-looking blob in APP0 is used as the orientation source.
Exif is accepted from an APP0 segment · case 02
A JFIF extension that embeds an Exif-looking blob in APP0 is used as the orientation source.
Exif is accepted from an APP0 segment · case 03
A JFIF extension that embeds an Exif-looking blob in APP0 is used as the orientation source.
Exif is accepted from an APP0 segment · case 04
A JFIF extension that embeds an Exif-looking blob in APP0 is used as the orientation source.
Exif is accepted from an APP0 segment · case 05
A JFIF extension that embeds an Exif-looking blob in APP0 is used as the orientation source.
Exif segment index is reported relative to the segment after SOI · case 01
The writer rewrites the segment before the Exif block when updating orientation.
Exif segment index is reported relative to the segment after SOI · case 02
The writer rewrites the segment before the Exif block when updating orientation.
Exif segment index is reported relative to the segment after SOI · case 03
The writer rewrites the segment before the Exif block when updating orientation.
Exif segment index is reported relative to the segment after SOI · case 04
The writer rewrites the segment before the Exif block when updating orientation.
Exif segment index is reported relative to the segment after SOI · case 05
The writer rewrites the segment before the Exif block when updating orientation.
Segment length limit ignores the length field itself · case 01
A 65534-byte APP1 payload is accepted although its length field would overflow.
Segment length limit ignores the length field itself · case 02
A 65534-byte APP1 payload is accepted although its length field would overflow.
Segment length limit ignores the length field itself · case 03
A 65534-byte APP1 payload is accepted although its length field would overflow.
Segment length limit ignores the length field itself · case 04
A 65534-byte APP1 payload is accepted although its length field would overflow.
Segment length limit ignores the length field itself · case 05
A 65534-byte APP1 payload is accepted although its length field would overflow.
SOI is accepted anywhere in the segment list · case 01
Streams whose first segment is not SOI are scanned as JPEG.
SOI is accepted anywhere in the segment list · case 02
Streams whose first segment is not SOI are scanned as JPEG.
SOI is accepted anywhere in the segment list · case 03
Streams whose first segment is not SOI are scanned as JPEG.
SOI is accepted anywhere in the segment list · case 04
Streams whose first segment is not SOI are scanned as JPEG.
SOI is accepted anywhere in the segment list · case 05
Streams whose first segment is not SOI are scanned as JPEG.
Canvas rotation for tag 6 translates by the image width · case 01
Clockwise-rotated photos are drawn partly outside the canvas on non-square images.
Canvas rotation for tag 6 translates by the image width · case 02
Clockwise-rotated photos are drawn partly outside the canvas on non-square images.
Canvas rotation for tag 6 translates by the image width · case 03
Clockwise-rotated photos are drawn partly outside the canvas on non-square images.
Canvas rotation for tag 6 translates by the image width · case 04
Clockwise-rotated photos are drawn partly outside the canvas on non-square images.
Canvas rotation for tag 6 translates by the image width · case 05
Clockwise-rotated photos are drawn partly outside the canvas on non-square images.
Canvas rotation for tag 8 shifts by the height · case 01
Counter-clockwise photos are cut off at the bottom of the canvas.
Canvas rotation for tag 8 shifts by the height · case 02
Counter-clockwise photos are cut off at the bottom of the canvas.
Canvas rotation for tag 8 shifts by the height · case 03
Counter-clockwise photos are cut off at the bottom of the canvas.
Canvas rotation for tag 8 shifts by the height · case 04
Counter-clockwise photos are cut off at the bottom of the canvas.
Canvas rotation for tag 8 shifts by the height · case 05
Counter-clockwise photos are cut off at the bottom of the canvas.
Canvas mirror uses the pixel-index offset · case 01
Mirrored images are drawn one pixel to the left with a transparent column on the right.
Canvas mirror uses the pixel-index offset · case 02
Mirrored images are drawn one pixel to the left with a transparent column on the right.
Canvas mirror uses the pixel-index offset · case 03
Mirrored images are drawn one pixel to the left with a transparent column on the right.
Canvas mirror uses the pixel-index offset · case 04
Mirrored images are drawn one pixel to the left with a transparent column on the right.
Canvas mirror uses the pixel-index offset · case 05
Mirrored images are drawn one pixel to the left with a transparent column on the right.
Transverse canvas translation swaps its offsets · case 01
Tag-7 photos are shifted out of the canvas when width and height differ.
Transverse canvas translation swaps its offsets · case 02
Tag-7 photos are shifted out of the canvas when width and height differ.
Transverse canvas translation swaps its offsets · case 03
Tag-7 photos are shifted out of the canvas when width and height differ.
Transverse canvas translation swaps its offsets · case 04
Tag-7 photos are shifted out of the canvas when width and height differ.
Transverse canvas translation swaps its offsets · case 05
Tag-7 photos are shifted out of the canvas when width and height differ.
Canvas keeps stored size for transpose tags · case 01
Tag 5 and 7 images are clipped into a canvas with the stored aspect ratio.
Canvas keeps stored size for transpose tags · case 02
Tag 5 and 7 images are clipped into a canvas with the stored aspect ratio.
Canvas keeps stored size for transpose tags · case 03
Tag 5 and 7 images are clipped into a canvas with the stored aspect ratio.
Canvas keeps stored size for transpose tags · case 04
Tag 5 and 7 images are clipped into a canvas with the stored aspect ratio.
Canvas keeps stored size for transpose tags · case 05
Tag 5 and 7 images are clipped into a canvas with the stored aspect ratio.
Vertical mirror translates by the width · case 01
Top-bottom mirrored scans are drawn partly outside the canvas.
Vertical mirror translates by the width · case 02
Top-bottom mirrored scans are drawn partly outside the canvas.
Vertical mirror translates by the width · case 03
Top-bottom mirrored scans are drawn partly outside the canvas.
Vertical mirror translates by the width · case 04
Top-bottom mirrored scans are drawn partly outside the canvas.
Vertical mirror translates by the width · case 05
Top-bottom mirrored scans are drawn partly outside the canvas.
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 ↗