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
Print size swaps pixel dimensions but not their resolutions · case 01
Rotated fax and scanner images with different X and Y resolutions print with the wrong physical size.
Print size swaps pixel dimensions but not their resolutions · case 02
Rotated fax and scanner images with different X and Y resolutions print with the wrong physical size.
Print size swaps pixel dimensions but not their resolutions · case 03
Rotated fax and scanner images with different X and Y resolutions print with the wrong physical size.
Print size swaps pixel dimensions but not their resolutions · case 04
Rotated fax and scanner images with different X and Y resolutions print with the wrong physical size.
Print size swaps pixel dimensions but not their resolutions · case 05
Rotated fax and scanner images with different X and Y resolutions print with the wrong physical size.
Centimetre resolution is converted with the inch ratio · case 01
Images whose resolution is in dots per centimetre print about four times too small.
Centimetre resolution is converted with the inch ratio · case 02
Images whose resolution is in dots per centimetre print about four times too small.
Centimetre resolution is converted with the inch ratio · case 03
Images whose resolution is in dots per centimetre print about four times too small.
Centimetre resolution is converted with the inch ratio · case 04
Images whose resolution is in dots per centimetre print about four times too small.
Centimetre resolution is converted with the inch ratio · case 05
Images whose resolution is in dots per centimetre print about four times too small.
Missing ResolutionUnit is treated as unitless · case 01
Most camera JPEGs, which omit the unit, report no physical print size.
Missing ResolutionUnit is treated as unitless · case 02
Most camera JPEGs, which omit the unit, report no physical print size.
Missing ResolutionUnit is treated as unitless · case 03
Most camera JPEGs, which omit the unit, report no physical print size.
Missing ResolutionUnit is treated as unitless · case 04
Most camera JPEGs, which omit the unit, report no physical print size.
Missing ResolutionUnit is treated as unitless · case 05
Most camera JPEGs, which omit the unit, report no physical print size.
Missing YResolution falls back to 72 dpi · case 01
A 300 dpi scan without a YResolution prints with a stretched height.
Missing YResolution falls back to 72 dpi · case 02
A 300 dpi scan without a YResolution prints with a stretched height.
Missing YResolution falls back to 72 dpi · case 03
A 300 dpi scan without a YResolution prints with a stretched height.
Missing YResolution falls back to 72 dpi · case 04
A 300 dpi scan without a YResolution prints with a stretched height.
Missing YResolution falls back to 72 dpi · case 05
A 300 dpi scan without a YResolution prints with a stretched height.
Fractional X resolution is truncated to an integer · case 01
Scans at 333 1/3 dpi or 72.00 stored as 7200/100 get slightly wrong printed widths.
Fractional X resolution is truncated to an integer · case 02
Scans at 333 1/3 dpi or 72.00 stored as 7200/100 get slightly wrong printed widths.
Fractional X resolution is truncated to an integer · case 03
Scans at 333 1/3 dpi or 72.00 stored as 7200/100 get slightly wrong printed widths.
Fractional X resolution is truncated to an integer · case 04
Scans at 333 1/3 dpi or 72.00 stored as 7200/100 get slightly wrong printed widths.
Fractional X resolution is truncated to an integer · case 05
Scans at 333 1/3 dpi or 72.00 stored as 7200/100 get slightly wrong printed widths.
Negative resolutions produce negative print sizes · case 01
A corrupt negative resolution yields a negative physical width in the print dialog.
Negative resolutions produce negative print sizes · case 02
A corrupt negative resolution yields a negative physical width in the print dialog.
Negative resolutions produce negative print sizes · case 03
A corrupt negative resolution yields a negative physical width in the print dialog.
Negative resolutions produce negative print sizes · case 04
A corrupt negative resolution yields a negative physical width in the print dialog.
Negative resolutions produce negative print sizes · case 05
A corrupt negative resolution yields a negative physical width in the print dialog.
Print size uses round-half-even · case 01
Exact half tenths such as 2.5 are rounded down on some sizes and up on others.
Print size uses round-half-even · case 02
Exact half tenths such as 2.5 are rounded down on some sizes and up on others.
Print size uses round-half-even · case 03
Exact half tenths such as 2.5 are rounded down on some sizes and up on others.
Print size uses round-half-even · case 04
Exact half tenths such as 2.5 are rounded down on some sizes and up on others.
Print size uses round-half-even · case 05
Exact half tenths such as 2.5 are rounded down on some sizes and up on others.
Double-rotation prediction composes transforms in reverse order · case 01
The upload checker mispredicts mirrored photos that were baked and then rotated again by the browser.
Double-rotation prediction composes transforms in reverse order · case 02
The upload checker mispredicts mirrored photos that were baked and then rotated again by the browser.
Double-rotation prediction composes transforms in reverse order · case 03
The upload checker mispredicts mirrored photos that were baked and then rotated again by the browser.
Double-rotation prediction composes transforms in reverse order · case 04
The upload checker mispredicts mirrored photos that were baked and then rotated again by the browser.
Double-rotation prediction composes transforms in reverse order · case 05
The upload checker mispredicts mirrored photos that were baked and then rotated again by the browser.
image-orientation: none is honoured for cross-origin images · case 01
CDN-hosted photos are predicted to render unrotated while browsers actually rotate them.
image-orientation: none is honoured for cross-origin images · case 02
CDN-hosted photos are predicted to render unrotated while browsers actually rotate them.
image-orientation: none is honoured for cross-origin images · case 03
CDN-hosted photos are predicted to render unrotated while browsers actually rotate them.
image-orientation: none is honoured for cross-origin images · case 04
CDN-hosted photos are predicted to render unrotated while browsers actually rotate them.
image-orientation: none is honoured for cross-origin images · case 05
CDN-hosted photos are predicted to render unrotated while browsers actually rotate them.
Metadata stripping counts only for baked uploads · case 01
Stripped but unbaked uploads are predicted to rotate even though no tag survives.
Metadata stripping counts only for baked uploads · case 02
Stripped but unbaked uploads are predicted to rotate even though no tag survives.
Metadata stripping counts only for baked uploads · case 03
Stripped but unbaked uploads are predicted to rotate even though no tag survives.
Metadata stripping counts only for baked uploads · case 04
Stripped but unbaked uploads are predicted to rotate even though no tag survives.
Metadata stripping counts only for baked uploads · case 05
Stripped but unbaked uploads are predicted to rotate even though no tag survives.
Tag reset is honoured without baking · case 01
An upload that only reset the tag is predicted to be upright although its pixels were never rotated.
Tag reset is honoured without baking · case 02
An upload that only reset the tag is predicted to be upright although its pixels were never rotated.
Tag reset is honoured without baking · case 03
An upload that only reset the tag is predicted to be upright although its pixels were never rotated.
Tag reset is honoured without baking · case 04
An upload that only reset the tag is predicted to be upright although its pixels were never rotated.
Tag reset is honoured without baking · case 05
An upload that only reset the tag is predicted to be upright although its pixels were never rotated.
Upright check compares against an invalid raw tag · case 01
Photos with a corrupt tag of 0 are flagged as mis-rotated even when they display normally.
Upright check compares against an invalid raw tag · case 02
Photos with a corrupt tag of 0 are flagged as mis-rotated even when they display normally.
Upright check compares against an invalid raw tag · case 03
Photos with a corrupt tag of 0 are flagged as mis-rotated even when they display normally.
Upright check compares against an invalid raw tag · case 04
Photos with a corrupt tag of 0 are flagged as mis-rotated even when they display normally.
Upright check compares against an invalid raw tag · case 05
Photos with a corrupt tag of 0 are flagged as mis-rotated even when they display normally.
Tap mapping applies the forward tag-6 rotation instead of its inverse · case 01
Tap-to-focus on portrait photos selects a point mirrored across the diagonal.
Tap mapping applies the forward tag-6 rotation instead of its inverse · case 02
Tap-to-focus on portrait photos selects a point mirrored across the diagonal.
Tap mapping applies the forward tag-6 rotation instead of its inverse · case 03
Tap-to-focus on portrait photos selects a point mirrored across the diagonal.
Tap mapping applies the forward tag-6 rotation instead of its inverse · case 04
Tap-to-focus on portrait photos selects a point mirrored across the diagonal.
Tap mapping applies the forward tag-6 rotation instead of its inverse · case 05
Tap-to-focus on portrait photos selects a point mirrored across the diagonal.
Letterbox offsets use stored instead of displayed size · case 01
Taps on rotated photos land a band away from where the user touched.
Letterbox offsets use stored instead of displayed size · case 02
Taps on rotated photos land a band away from where the user touched.
Letterbox offsets use stored instead of displayed size · case 03
Taps on rotated photos land a band away from where the user touched.
Letterbox offsets use stored instead of displayed size · case 04
Taps on rotated photos land a band away from where the user touched.
Letterbox offsets use stored instead of displayed size · case 05
Taps on rotated photos land a band away from where the user touched.
Tap mapping assumes cover fit · case 01
Taps near the letterbox bars map to pixels that are not on screen.
Tap mapping assumes cover fit · case 02
Taps near the letterbox bars map to pixels that are not on screen.
Tap mapping assumes cover fit · case 03
Taps near the letterbox bars map to pixels that are not on screen.
Tap mapping assumes cover fit · case 04
Taps near the letterbox bars map to pixels that are not on screen.
Tap mapping assumes cover fit · case 05
Taps near the letterbox bars map to pixels that are not on screen.
Tap exactly on the image far edge maps outside the image · case 01
Tapping the right or bottom boundary returns a stored coordinate one past the last pixel.
Tap exactly on the image far edge maps outside the image · case 02
Tapping the right or bottom boundary returns a stored coordinate one past the last pixel.
Tap exactly on the image far edge maps outside the image · case 03
Tapping the right or bottom boundary returns a stored coordinate one past the last pixel.
Tap exactly on the image far edge maps outside the image · case 04
Tapping the right or bottom boundary returns a stored coordinate one past the last pixel.
Tap exactly on the image far edge maps outside the image · case 05
Tapping the right or bottom boundary returns a stored coordinate one past the last pixel.
Tap position is rounded to the nearest pixel corner · case 01
Taps in the right half of a pixel select its neighbour.
Tap position is rounded to the nearest pixel corner · case 02
Taps in the right half of a pixel select its neighbour.
Tap position is rounded to the nearest pixel corner · case 03
Taps in the right half of a pixel select its neighbour.
Tap position is rounded to the nearest pixel corner · case 04
Taps in the right half of a pixel select its neighbour.
Tap position is rounded to the nearest pixel corner · case 05
Taps in the right half of a pixel select its neighbour.
Tap mapping ignores the axis swap for transpose tags · case 01
On tag 5 and 7 photos the fit and bounds use the stored aspect ratio.
Tap mapping ignores the axis swap for transpose tags · case 02
On tag 5 and 7 photos the fit and bounds use the stored aspect ratio.
Tap mapping ignores the axis swap for transpose tags · case 03
On tag 5 and 7 photos the fit and bounds use the stored aspect ratio.
Tap mapping ignores the axis swap for transpose tags · case 04
On tag 5 and 7 photos the fit and bounds use the stored aspect ratio.
Tap mapping ignores the axis swap for transpose tags · case 05
On tag 5 and 7 photos the fit and bounds use the stored aspect ratio.
Canonical orientation picks the highest tag on symmetric images · case 01
Symmetric logos are stored with a different canonical tag on each upload, breaking dedup provenance.
Canonical orientation picks the highest tag on symmetric images · case 02
Symmetric logos are stored with a different canonical tag on each upload, breaking dedup provenance.
Canonical orientation picks the highest tag on symmetric images · case 03
Symmetric logos are stored with a different canonical tag on each upload, breaking dedup provenance.
Canonical orientation picks the highest tag on symmetric images · case 04
Symmetric logos are stored with a different canonical tag on each upload, breaking dedup provenance.
Canonical orientation picks the highest tag on symmetric images · case 05
Symmetric logos are stored with a different canonical tag on each upload, breaking dedup provenance.
Canonical key compares pixels without the shape · case 01
A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.
Canonical key compares pixels without the shape · case 02
A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.
Canonical key compares pixels without the shape · case 03
A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.
Canonical key compares pixels without the shape · case 04
A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.
Canonical key compares pixels without the shape · case 05
A 2x3 image and its 3x2 rotation compare by raw pixel order, so different aspect ratios canonicalise inconsistently.
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 ↗