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
Region mapping treats an unknown tag as upright · case 01
Corrupt orientation values silently produce boxes as though the image were unrotated.
Region mapping treats an unknown tag as upright · case 02
Corrupt orientation values silently produce boxes as though the image were unrotated.
Region mapping treats an unknown tag as upright · case 03
Corrupt orientation values silently produce boxes as though the image were unrotated.
Region mapping treats an unknown tag as upright · case 04
Corrupt orientation values silently produce boxes as though the image were unrotated.
Region mapping treats an unknown tag as upright · case 05
Corrupt orientation values silently produce boxes as though the image were unrotated.
Big-endian orientation SHORT is read as a LONG · case 01
Photos from big-endian (MM) writers always display unrotated while little-endian files work.
Big-endian orientation SHORT is read as a LONG · case 02
Photos from big-endian (MM) writers always display unrotated while little-endian files work.
Big-endian orientation SHORT is read as a LONG · case 03
Photos from big-endian (MM) writers always display unrotated while little-endian files work.
Big-endian orientation SHORT is read as a LONG · case 04
Photos from big-endian (MM) writers always display unrotated while little-endian files work.
Big-endian orientation SHORT is read as a LONG · case 05
Photos from big-endian (MM) writers always display unrotated while little-endian files work.
Exif header check ignores the two null padding bytes · case 01
Payloads that merely begin with the letters "Exif" are parsed as TIFF data with a shifted header.
Exif header check ignores the two null padding bytes · case 02
Payloads that merely begin with the letters "Exif" are parsed as TIFF data with a shifted header.
Exif header check ignores the two null padding bytes · case 03
Payloads that merely begin with the letters "Exif" are parsed as TIFF data with a shifted header.
Exif header check ignores the two null padding bytes · case 04
Payloads that merely begin with the letters "Exif" are parsed as TIFF data with a shifted header.
Exif header check ignores the two null padding bytes · case 05
Payloads that merely begin with the letters "Exif" are parsed as TIFF data with a shifted header.
IFD offset byte order is inverted · case 01
Every file fails to parse, or the parser reads IFD0 from a wild offset.
IFD offset byte order is inverted · case 02
Every file fails to parse, or the parser reads IFD0 from a wild offset.
IFD offset byte order is inverted · case 03
Every file fails to parse, or the parser reads IFD0 from a wild offset.
IFD offset byte order is inverted · case 04
Every file fails to parse, or the parser reads IFD0 from a wild offset.
IFD offset byte order is inverted · case 05
Every file fails to parse, or the parser reads IFD0 from a wild offset.
TIFF magic is checked as a single byte · case 01
Big-endian EXIF blocks are rejected as malformed.
TIFF magic is checked as a single byte · case 02
Big-endian EXIF blocks are rejected as malformed.
TIFF magic is checked as a single byte · case 03
Big-endian EXIF blocks are rejected as malformed.
TIFF magic is checked as a single byte · case 04
Big-endian EXIF blocks are rejected as malformed.
TIFF magic is checked as a single byte · case 05
Big-endian EXIF blocks are rejected as malformed.
Orientation entries of type LONG are trusted · case 01
A malformed LONG orientation entry shadows a later valid SHORT entry.
Orientation entries of type LONG are trusted · case 02
A malformed LONG orientation entry shadows a later valid SHORT entry.
Orientation entries of type LONG are trusted · case 03
A malformed LONG orientation entry shadows a later valid SHORT entry.
Orientation entries of type LONG are trusted · case 04
A malformed LONG orientation entry shadows a later valid SHORT entry.
Orientation entries of type LONG are trusted · case 05
A malformed LONG orientation entry shadows a later valid SHORT entry.
IFD entry ending exactly at the buffer end is rejected · case 01
Minimal EXIF blocks whose last entry ends at the payload end are reported as malformed.
IFD entry ending exactly at the buffer end is rejected · case 02
Minimal EXIF blocks whose last entry ends at the payload end are reported as malformed.
IFD entry ending exactly at the buffer end is rejected · case 03
Minimal EXIF blocks whose last entry ends at the payload end are reported as malformed.
IFD entry ending exactly at the buffer end is rejected · case 04
Minimal EXIF blocks whose last entry ends at the payload end are reported as malformed.
IFD entry ending exactly at the buffer end is rejected · case 05
Minimal EXIF blocks whose last entry ends at the payload end are reported as malformed.
Orientation value zero passes through the parser · case 01
Files that write orientation 0 propagate an invalid tag to renderers.
Orientation value zero passes through the parser · case 02
Files that write orientation 0 propagate an invalid tag to renderers.
Orientation value zero passes through the parser · case 03
Files that write orientation 0 propagate an invalid tag to renderers.
Orientation value zero passes through the parser · case 04
Files that write orientation 0 propagate an invalid tag to renderers.
Orientation value zero passes through the parser · case 05
Files that write orientation 0 propagate an invalid tag to renderers.
Metadata rotation confuses transpose with transverse · case 01
Rotating a tag-5 selfie in the editor lands on a tag that shows it upside down.
Metadata rotation confuses transpose with transverse · case 02
Rotating a tag-5 selfie in the editor lands on a tag that shows it upside down.
Metadata rotation confuses transpose with transverse · case 03
Rotating a tag-5 selfie in the editor lands on a tag that shows it upside down.
Metadata rotation confuses transpose with transverse · case 04
Rotating a tag-5 selfie in the editor lands on a tag that shows it upside down.
Metadata rotation confuses transpose with transverse · case 05
Rotating a tag-5 selfie in the editor lands on a tag that shows it upside down.
Flipping a rotated photo keeps its rotation count · case 01
Mirroring a portrait photo in the editor leaves it lying on its side.
Flipping a rotated photo keeps its rotation count · case 02
Mirroring a portrait photo in the editor leaves it lying on its side.
Flipping a rotated photo keeps its rotation count · case 03
Mirroring a portrait photo in the editor leaves it lying on its side.
Flipping a rotated photo keeps its rotation count · case 04
Mirroring a portrait photo in the editor leaves it lying on its side.
Flipping a rotated photo keeps its rotation count · case 05
Mirroring a portrait photo in the editor leaves it lying on its side.
Vertical flip is applied in stored rather than displayed orientation · case 01
Flip top-bottom on a rotated image flips it left-right on screen.
Vertical flip is applied in stored rather than displayed orientation · case 02
Flip top-bottom on a rotated image flips it left-right on screen.
Vertical flip is applied in stored rather than displayed orientation · case 03
Flip top-bottom on a rotated image flips it left-right on screen.
Vertical flip is applied in stored rather than displayed orientation · case 04
Flip top-bottom on a rotated image flips it left-right on screen.
Vertical flip is applied in stored rather than displayed orientation · case 05
Flip top-bottom on a rotated image flips it left-right on screen.
Counter-clockwise button rotates clockwise · case 01
Both rotate buttons turn the photo the same way.
Counter-clockwise button rotates clockwise · case 02
Both rotate buttons turn the photo the same way.
Counter-clockwise button rotates clockwise · case 03
Both rotate buttons turn the photo the same way.
Counter-clockwise button rotates clockwise · case 04
Both rotate buttons turn the photo the same way.
Counter-clockwise button rotates clockwise · case 05
Both rotate buttons turn the photo the same way.
Editor refuses to rotate photos with a corrupt tag · case 01
Photos whose orientation value is 0 cannot be rotated at all.
Editor refuses to rotate photos with a corrupt tag · case 02
Photos whose orientation value is 0 cannot be rotated at all.
Editor refuses to rotate photos with a corrupt tag · case 03
Photos whose orientation value is 0 cannot be rotated at all.
Editor refuses to rotate photos with a corrupt tag · case 04
Photos whose orientation value is 0 cannot be rotated at all.
Editor refuses to rotate photos with a corrupt tag · case 05
Photos whose orientation value is 0 cannot be rotated at all.
Unknown editor operations are silently skipped · case 01
A typo in a batch edit script produces a plausible but wrong orientation with no error.
Unknown editor operations are silently skipped · case 02
A typo in a batch edit script produces a plausible but wrong orientation with no error.
Unknown editor operations are silently skipped · case 03
A typo in a batch edit script produces a plausible but wrong orientation with no error.
Unknown editor operations are silently skipped · case 04
A typo in a batch edit script produces a plausible but wrong orientation with no error.
Unknown editor operations are silently skipped · case 05
A typo in a batch edit script produces a plausible but wrong orientation with no error.
Thumbnailer rotates the bounding box instead of the image · case 01
Portrait thumbnails come back with landscape dimensions for rotated photos.
Thumbnailer rotates the bounding box instead of the image · case 02
Portrait thumbnails come back with landscape dimensions for rotated photos.
Thumbnailer rotates the bounding box instead of the image · case 03
Portrait thumbnails come back with landscape dimensions for rotated photos.
Thumbnailer rotates the bounding box instead of the image · case 04
Portrait thumbnails come back with landscape dimensions for rotated photos.
Thumbnailer rotates the bounding box instead of the image · case 05
Portrait thumbnails come back with landscape dimensions for rotated photos.
Thumbnail ignores the axis swap for mirrored rotations · case 01
Tag 5 and 7 thumbnails are sized as landscape when the photo displays as portrait.
Thumbnail ignores the axis swap for mirrored rotations · case 02
Tag 5 and 7 thumbnails are sized as landscape when the photo displays as portrait.
Thumbnail ignores the axis swap for mirrored rotations · case 03
Tag 5 and 7 thumbnails are sized as landscape when the photo displays as portrait.
Thumbnail ignores the axis swap for mirrored rotations · case 04
Tag 5 and 7 thumbnails are sized as landscape when the photo displays as portrait.
Thumbnail ignores the axis swap for mirrored rotations · case 05
Tag 5 and 7 thumbnails are sized as landscape when the photo displays as portrait.
Thumbnailer enlarges images smaller than the box · case 01
Tiny icons are blown up to the full thumbnail size.
Thumbnailer enlarges images smaller than the box · case 02
Tiny icons are blown up to the full thumbnail size.
Thumbnailer enlarges images smaller than the box · case 03
Tiny icons are blown up to the full thumbnail size.
Thumbnailer enlarges images smaller than the box · case 04
Tiny icons are blown up to the full thumbnail size.
Thumbnailer enlarges images smaller than the box · case 05
Tiny icons are blown up to the full thumbnail size.
Thumbnail width is truncated instead of rounded · case 01
Thumbnails are one pixel narrower than expected whenever the exact width has a fractional part of one half or more.
Thumbnail width is truncated instead of rounded · case 02
Thumbnails are one pixel narrower than expected whenever the exact width has a fractional part of one half or more.
Thumbnail width is truncated instead of rounded · case 03
Thumbnails are one pixel narrower than expected whenever the exact width has a fractional part of one half or more.
Thumbnail width is truncated instead of rounded · case 04
Thumbnails are one pixel narrower than expected whenever the exact width has a fractional part of one half or more.
Thumbnail width is truncated instead of rounded · case 05
Thumbnails are one pixel narrower than expected whenever the exact width has a fractional part of one half or more.
Panorama thumbnail height collapses to zero · case 01
Very wide panoramas produce thumbnails with zero height that break the layout.
Panorama thumbnail height collapses to zero · case 02
Very wide panoramas produce thumbnails with zero height that break the layout.
Panorama thumbnail height collapses to zero · case 03
Very wide panoramas produce thumbnails with zero height that break the layout.
Panorama thumbnail height collapses to zero · case 04
Very wide panoramas produce thumbnails with zero height that break the layout.
Panorama thumbnail height collapses to zero · case 05
Very wide panoramas produce thumbnails with zero height that break the layout.
Thumbnail scale is taken from the long sides only · case 01
Thumbnails overflow a non-square box when the image and box aspect ratios differ.
Thumbnail scale is taken from the long sides only · case 02
Thumbnails overflow a non-square box when the image and box aspect ratios differ.
Thumbnail scale is taken from the long sides only · case 03
Thumbnails overflow a non-square box when the image and box aspect ratios differ.
Thumbnail scale is taken from the long sides only · case 04
Thumbnails overflow a non-square box when the image and box aspect ratios differ.
Thumbnail scale is taken from the long sides only · case 05
Thumbnails overflow a non-square box when the image and box aspect ratios differ.
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 ↗