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
HEIF images are rotated by their EXIF copy · case 01
HEIC photos with both EXIF and irot are rotated twice or not at all depending on the camera.
HEIF images are rotated by their EXIF copy · case 02
HEIC photos with both EXIF and irot are rotated twice or not at all depending on the camera.
HEIF images are rotated by their EXIF copy · case 03
HEIC photos with both EXIF and irot are rotated twice or not at all depending on the camera.
HEIF images are rotated by their EXIF copy · case 04
HEIC photos with both EXIF and irot are rotated twice or not at all depending on the camera.
HEIF images are rotated by their EXIF copy · case 05
HEIC photos with both EXIF and irot are rotated twice or not at all depending on the camera.
HEIF irot is read as clockwise · case 01
HEIC photos stored with a quarter-turn irot display rotated the opposite way from other viewers.
HEIF irot is read as clockwise · case 02
HEIC photos stored with a quarter-turn irot display rotated the opposite way from other viewers.
HEIF irot is read as clockwise · case 03
HEIC photos stored with a quarter-turn irot display rotated the opposite way from other viewers.
HEIF irot is read as clockwise · case 04
HEIC photos stored with a quarter-turn irot display rotated the opposite way from other viewers.
HEIF irot is read as clockwise · case 05
HEIC photos stored with a quarter-turn irot display rotated the opposite way from other viewers.
HEIF mirror axis is inverted · case 01
Mirrored HEIC selfies are flipped top-bottom instead of left-right.
HEIF mirror axis is inverted · case 02
Mirrored HEIC selfies are flipped top-bottom instead of left-right.
HEIF mirror axis is inverted · case 03
Mirrored HEIC selfies are flipped top-bottom instead of left-right.
HEIF mirror axis is inverted · case 04
Mirrored HEIC selfies are flipped top-bottom instead of left-right.
HEIF mirror axis is inverted · case 05
Mirrored HEIC selfies are flipped top-bottom instead of left-right.
Out-of-range EXIF orientation overrides XMP · case 01
An EXIF value of 0 or 9 is passed to the renderer even though a valid XMP orientation exists.
Out-of-range EXIF orientation overrides XMP · case 02
An EXIF value of 0 or 9 is passed to the renderer even though a valid XMP orientation exists.
Out-of-range EXIF orientation overrides XMP · case 03
An EXIF value of 0 or 9 is passed to the renderer even though a valid XMP orientation exists.
Out-of-range EXIF orientation overrides XMP · case 04
An EXIF value of 0 or 9 is passed to the renderer even though a valid XMP orientation exists.
Out-of-range EXIF orientation overrides XMP · case 05
An EXIF value of 0 or 9 is passed to the renderer even though a valid XMP orientation exists.
XMP orientation with surrounding whitespace is ignored · case 01
Sidecar-edited photos whose XMP value is serialised with a newline lose their rotation.
XMP orientation with surrounding whitespace is ignored · case 02
Sidecar-edited photos whose XMP value is serialised with a newline lose their rotation.
XMP orientation with surrounding whitespace is ignored · case 03
Sidecar-edited photos whose XMP value is serialised with a newline lose their rotation.
XMP orientation with surrounding whitespace is ignored · case 04
Sidecar-edited photos whose XMP value is serialised with a newline lose their rotation.
XMP orientation with surrounding whitespace is ignored · case 05
Sidecar-edited photos whose XMP value is serialised with a newline lose their rotation.
Stale XMP orientation overrides EXIF · case 01
After an in-camera rotation the photo displays with the old XMP orientation.
Stale XMP orientation overrides EXIF · case 02
After an in-camera rotation the photo displays with the old XMP orientation.
Stale XMP orientation overrides EXIF · case 03
After an in-camera rotation the photo displays with the old XMP orientation.
Stale XMP orientation overrides EXIF · case 04
After an in-camera rotation the photo displays with the old XMP orientation.
Stale XMP orientation overrides EXIF · case 05
After an in-camera rotation the photo displays with the old XMP orientation.
Video rotation matrix is read with math-axis orientation · case 01
Portrait phone videos play upside down: 90 and 270 degree tracks are exchanged.
Video rotation matrix is read with math-axis orientation · case 02
Portrait phone videos play upside down: 90 and 270 degree tracks are exchanged.
Video rotation matrix is read with math-axis orientation · case 03
Portrait phone videos play upside down: 90 and 270 degree tracks are exchanged.
Video rotation matrix is read with math-axis orientation · case 04
Portrait phone videos play upside down: 90 and 270 degree tracks are exchanged.
Video rotation matrix is read with math-axis orientation · case 05
Portrait phone videos play upside down: 90 and 270 degree tracks are exchanged.
Mirror removal negates the y-axis column · case 01
Mirrored front-camera clips report the wrong rotation.
Mirror removal negates the y-axis column · case 02
Mirrored front-camera clips report the wrong rotation.
Mirror removal negates the y-axis column · case 03
Mirrored front-camera clips report the wrong rotation.
Mirror removal negates the y-axis column · case 04
Mirrored front-camera clips report the wrong rotation.
Mirror removal negates the y-axis column · case 05
Mirrored front-camera clips report the wrong rotation.
Display matrix words are read as unsigned · case 01
Any rotated or mirrored video is reported as unsupported.
Display matrix words are read as unsigned · case 02
Any rotated or mirrored video is reported as unsupported.
Display matrix words are read as unsigned · case 03
Any rotated or mirrored video is reported as unsupported.
Display matrix words are read as unsigned · case 04
Any rotated or mirrored video is reported as unsupported.
Display matrix words are read as unsigned · case 05
Any rotated or mirrored video is reported as unsupported.
Mirrored quarter-turn videos are not detected as mirrored · case 01
A mirrored portrait clip shows the right rotation count only by chance and never flips.
Mirrored quarter-turn videos are not detected as mirrored · case 02
A mirrored portrait clip shows the right rotation count only by chance and never flips.
Mirrored quarter-turn videos are not detected as mirrored · case 03
A mirrored portrait clip shows the right rotation count only by chance and never flips.
Mirrored quarter-turn videos are not detected as mirrored · case 04
A mirrored portrait clip shows the right rotation count only by chance and never flips.
Mirrored quarter-turn videos are not detected as mirrored · case 05
A mirrored portrait clip shows the right rotation count only by chance and never flips.
Displayed video size ignores quarter turns · case 01
Rotated videos are laid out in a landscape box and letterboxed.
Displayed video size ignores quarter turns · case 02
Rotated videos are laid out in a landscape box and letterboxed.
Displayed video size ignores quarter turns · case 03
Rotated videos are laid out in a landscape box and letterboxed.
Displayed video size ignores quarter turns · case 04
Rotated videos are laid out in a landscape box and letterboxed.
Displayed video size ignores quarter turns · case 05
Rotated videos are laid out in a landscape box and letterboxed.
Lossless rotate trims 4:2:2 images along the wrong MCU axis · case 01
Rotated 4:2:2 JPEGs lose the wrong number of edge pixels or keep a partial block that shifts the image.
Lossless rotate trims 4:2:2 images along the wrong MCU axis · case 02
Rotated 4:2:2 JPEGs lose the wrong number of edge pixels or keep a partial block that shifts the image.
Lossless rotate trims 4:2:2 images along the wrong MCU axis · case 03
Rotated 4:2:2 JPEGs lose the wrong number of edge pixels or keep a partial block that shifts the image.
Lossless rotate trims 4:2:2 images along the wrong MCU axis · case 04
Rotated 4:2:2 JPEGs lose the wrong number of edge pixels or keep a partial block that shifts the image.
Lossless rotate trims 4:2:2 images along the wrong MCU axis · case 05
Rotated 4:2:2 JPEGs lose the wrong number of edge pixels or keep a partial block that shifts the image.
Lossless mirror pads the width instead of trimming it · case 01
Mirrored JPEGs gain a strip of garbage pixels on the left edge.
Lossless mirror pads the width instead of trimming it · case 02
Mirrored JPEGs gain a strip of garbage pixels on the left edge.
Lossless mirror pads the width instead of trimming it · case 03
Mirrored JPEGs gain a strip of garbage pixels on the left edge.
Lossless mirror pads the width instead of trimming it · case 04
Mirrored JPEGs gain a strip of garbage pixels on the left edge.
Lossless mirror pads the width instead of trimming it · case 05
Mirrored JPEGs gain a strip of garbage pixels on the left edge.
Height is trimmed for horizontal flips instead of vertical ones · case 01
Clockwise-rotated photos keep a partial bottom MCU row that ends up as a garbage left column.
Height is trimmed for horizontal flips instead of vertical ones · case 02
Clockwise-rotated photos keep a partial bottom MCU row that ends up as a garbage left column.
Height is trimmed for horizontal flips instead of vertical ones · case 03
Clockwise-rotated photos keep a partial bottom MCU row that ends up as a garbage left column.
Height is trimmed for horizontal flips instead of vertical ones · case 04
Clockwise-rotated photos keep a partial bottom MCU row that ends up as a garbage left column.
Height is trimmed for horizontal flips instead of vertical ones · case 05
Clockwise-rotated photos keep a partial bottom MCU row that ends up as a garbage left column.
Lossless transform emits a zero-width image · case 01
Tiny images narrower than one MCU produce an empty output instead of a refusal.
Lossless transform emits a zero-width image · case 02
Tiny images narrower than one MCU produce an empty output instead of a refusal.
Lossless transform emits a zero-width image · case 03
Tiny images narrower than one MCU produce an empty output instead of a refusal.
Lossless transform emits a zero-width image · case 04
Tiny images narrower than one MCU produce an empty output instead of a refusal.
Lossless transform emits a zero-width image · case 05
Tiny images narrower than one MCU produce an empty output instead of a refusal.
Lossless transpose keeps stored dimensions · case 01
Tag 5 and 7 JPEGs are reported with stored width and height after a lossless bake.
Lossless transpose keeps stored dimensions · case 02
Tag 5 and 7 JPEGs are reported with stored width and height after a lossless bake.
Lossless transpose keeps stored dimensions · case 03
Tag 5 and 7 JPEGs are reported with stored width and height after a lossless bake.
Lossless transpose keeps stored dimensions · case 04
Tag 5 and 7 JPEGs are reported with stored width and height after a lossless bake.
Lossless transpose keeps stored dimensions · case 05
Tag 5 and 7 JPEGs are reported with stored width and height after a lossless bake.
Flat-device detection compares squared magnitude to an unsquared threshold · case 01
Photos taken with the phone lying almost flat get a random orientation from sensor noise.
Flat-device detection compares squared magnitude to an unsquared threshold · case 02
Photos taken with the phone lying almost flat get a random orientation from sensor noise.
Flat-device detection compares squared magnitude to an unsquared threshold · case 03
Photos taken with the phone lying almost flat get a random orientation from sensor noise.
Flat-device detection compares squared magnitude to an unsquared threshold · case 04
Photos taken with the phone lying almost flat get a random orientation from sensor noise.
Flat-device detection compares squared magnitude to an unsquared threshold · case 05
Photos taken with the phone lying almost flat get a random orientation from sensor noise.
Diagonal grip flips the capture orientation to landscape · case 01
Holding the phone at exactly 45 degrees switches the tag on every shot.
Diagonal grip flips the capture orientation to landscape · case 02
Holding the phone at exactly 45 degrees switches the tag on every shot.
Diagonal grip flips the capture orientation to landscape · case 03
Holding the phone at exactly 45 degrees switches the tag on every shot.
Diagonal grip flips the capture orientation to landscape · case 04
Holding the phone at exactly 45 degrees switches the tag on every shot.
Diagonal grip flips the capture orientation to landscape · case 05
Holding the phone at exactly 45 degrees switches the tag on every shot.
Landscape captures are tagged with the opposite turn · case 01
Landscape photos taken with the phone turned clockwise display upside down.
Landscape captures are tagged with the opposite turn · case 02
Landscape photos taken with the phone turned clockwise display upside down.
Landscape captures are tagged with the opposite turn · case 03
Landscape photos taken with the phone turned clockwise display upside down.
Landscape captures are tagged with the opposite turn · case 04
Landscape photos taken with the phone turned clockwise display upside down.
Landscape captures are tagged with the opposite turn · case 05
Landscape photos taken with the phone turned clockwise display upside down.
Front camera rotation adds the device turn like the back camera · case 01
Landscape selfies are saved upside down.
Front camera rotation adds the device turn like the back camera · case 02
Landscape selfies are saved upside down.
Front camera rotation adds the device turn like the back camera · case 03
Landscape selfies are saved upside down.
Front camera rotation adds the device turn like the back camera · case 04
Landscape selfies are saved upside down.
Front camera rotation adds the device turn like the back camera · case 05
Landscape selfies are saved upside down.
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 ↗