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
Standard MIDI File header chunk reader: zero ticks per quarter accepted · case 01
A header with division 0 is returned as ppq 0, which later divides by zero in timing code.
Standard MIDI File header chunk reader: zero ticks per quarter accepted · case 02
A header with division 0 is returned as ppq 0, which later divides by zero in timing code.
Standard MIDI File header chunk reader: zero ticks per quarter accepted · case 03
A header with division 0 is returned as ppq 0, which later divides by zero in timing code.
Standard MIDI File header chunk reader: zero ticks per quarter accepted · case 04
A header with division 0 is returned as ppq 0, which later divides by zero in timing code.
Standard MIDI File header chunk reader: zero ticks per quarter accepted · case 05
A header with division 0 is returned as ppq 0, which later divides by zero in timing code.
Track event parser with running status: one-byte messages recognised only on channel 1 · case 01
A program change on channel 2 (C1) swallows the next delta byte as a second data byte and desynchronises the track.
Track event parser with running status: one-byte messages recognised only on channel 1 · case 02
A program change on channel 2 (C1) swallows the next delta byte as a second data byte and desynchronises the track.
Track event parser with running status: one-byte messages recognised only on channel 1 · case 03
A program change on channel 2 (C1) swallows the next delta byte as a second data byte and desynchronises the track.
Track event parser with running status: one-byte messages recognised only on channel 1 · case 04
A program change on channel 2 (C1) swallows the next delta byte as a second data byte and desynchronises the track.
Track event parser with running status: one-byte messages recognised only on channel 1 · case 05
A program change on channel 2 (C1) swallows the next delta byte as a second data byte and desynchronises the track.
Track event parser with running status: running status survives a meta event · case 01
Data bytes after a meta event are decoded with the pre-meta status instead of being rejected.
Track event parser with running status: running status survives a meta event · case 02
Data bytes after a meta event are decoded with the pre-meta status instead of being rejected.
Track event parser with running status: running status survives a meta event · case 03
Data bytes after a meta event are decoded with the pre-meta status instead of being rejected.
Track event parser with running status: running status survives a meta event · case 04
Data bytes after a meta event are decoded with the pre-meta status instead of being rejected.
Track event parser with running status: running status survives a meta event · case 05
Data bytes after a meta event are decoded with the pre-meta status instead of being rejected.
Track event parser with running status: delta byte 0x7F treated as continuation · case 01
A delta of exactly 127 swallows the following status byte into the delta.
Track event parser with running status: delta byte 0x7F treated as continuation · case 02
A delta of exactly 127 swallows the following status byte into the delta.
Track event parser with running status: delta byte 0x7F treated as continuation · case 03
A delta of exactly 127 swallows the following status byte into the delta.
Track event parser with running status: delta byte 0x7F treated as continuation · case 04
A delta of exactly 127 swallows the following status byte into the delta.
Track event parser with running status: delta byte 0x7F treated as continuation · case 05
A delta of exactly 127 swallows the following status byte into the delta.
Track event parser with running status: meta payload skip off by one · case 01
After a meta event the parser lands on the last payload byte and reads it as the next delta.
Track event parser with running status: meta payload skip off by one · case 02
After a meta event the parser lands on the last payload byte and reads it as the next delta.
Track event parser with running status: meta payload skip off by one · case 03
After a meta event the parser lands on the last payload byte and reads it as the next delta.
Track event parser with running status: meta payload skip off by one · case 04
After a meta event the parser lands on the last payload byte and reads it as the next delta.
Track event parser with running status: meta payload skip off by one · case 05
After a meta event the parser lands on the last payload byte and reads it as the next delta.
Track event parser with running status: deltas treated as absolute times · case 01
Event times reset after each event: the second of two events 10 ticks apart reports tick 10 regardless of history.
Track event parser with running status: deltas treated as absolute times · case 02
Event times reset after each event: the second of two events 10 ticks apart reports tick 10 regardless of history.
Track event parser with running status: deltas treated as absolute times · case 03
Event times reset after each event: the second of two events 10 ticks apart reports tick 10 regardless of history.
Track event parser with running status: deltas treated as absolute times · case 04
Event times reset after each event: the second of two events 10 ticks apart reports tick 10 regardless of history.
Track event parser with running status: deltas treated as absolute times · case 05
Event times reset after each event: the second of two events 10 ticks apart reports tick 10 regardless of history.
Note-on and note-off pairing into durations: velocity-zero note-on opens a new note · case 01
Running-status style note-offs (note-on with velocity 0) never end notes; every note lasts to the end of the track.
Note-on and note-off pairing into durations: velocity-zero note-on opens a new note · case 02
Running-status style note-offs (note-on with velocity 0) never end notes; every note lasts to the end of the track.
Note-on and note-off pairing into durations: velocity-zero note-on opens a new note · case 03
Running-status style note-offs (note-on with velocity 0) never end notes; every note lasts to the end of the track.
Note-on and note-off pairing into durations: velocity-zero note-on opens a new note · case 04
Running-status style note-offs (note-on with velocity 0) never end notes; every note lasts to the end of the track.
Note-on and note-off pairing into durations: velocity-zero note-on opens a new note · case 05
Running-status style note-offs (note-on with velocity 0) never end notes; every note lasts to the end of the track.
Note-on and note-off pairing into durations: overlapping same-pitch notes matched last-in first-out · case 01
With two overlapping C4 notes, the first note-off ends the later note, swapping the two durations.
Note-on and note-off pairing into durations: overlapping same-pitch notes matched last-in first-out · case 02
With two overlapping C4 notes, the first note-off ends the later note, swapping the two durations.
Note-on and note-off pairing into durations: overlapping same-pitch notes matched last-in first-out · case 03
With two overlapping C4 notes, the first note-off ends the later note, swapping the two durations.
Note-on and note-off pairing into durations: overlapping same-pitch notes matched last-in first-out · case 04
With two overlapping C4 notes, the first note-off ends the later note, swapping the two durations.
Note-on and note-off pairing into durations: overlapping same-pitch notes matched last-in first-out · case 05
With two overlapping C4 notes, the first note-off ends the later note, swapping the two durations.
Note-on and note-off pairing into durations: note-offs cross channels · case 01
A note-off on channel 1 ends a still-sounding note of the same pitch on channel 0.
Note-on and note-off pairing into durations: note-offs cross channels · case 02
A note-off on channel 1 ends a still-sounding note of the same pitch on channel 0.
Note-on and note-off pairing into durations: note-offs cross channels · case 03
A note-off on channel 1 ends a still-sounding note of the same pitch on channel 0.
Note-on and note-off pairing into durations: note-offs cross channels · case 04
A note-off on channel 1 ends a still-sounding note of the same pitch on channel 0.
Note-on and note-off pairing into durations: note-offs cross channels · case 05
A note-off on channel 1 ends a still-sounding note of the same pitch on channel 0.
Note-on and note-off pairing into durations: hanging notes collapsed to zero length · case 01
A note never switched off is reported with end equal to its start instead of the final tick.
Note-on and note-off pairing into durations: hanging notes collapsed to zero length · case 02
A note never switched off is reported with end equal to its start instead of the final tick.
Note-on and note-off pairing into durations: hanging notes collapsed to zero length · case 03
A note never switched off is reported with end equal to its start instead of the final tick.
Note-on and note-off pairing into durations: hanging notes collapsed to zero length · case 04
A note never switched off is reported with end equal to its start instead of the final tick.
Note-on and note-off pairing into durations: hanging notes collapsed to zero length · case 05
A note never switched off is reported with end equal to its start instead of the final tick.
Note-on and note-off pairing into durations: notes ordered by release time · case 01
A long note that starts first is listed after shorter notes that start later.
Note-on and note-off pairing into durations: notes ordered by release time · case 02
A long note that starts first is listed after shorter notes that start later.
Note-on and note-off pairing into durations: notes ordered by release time · case 03
A long note that starts first is listed after shorter notes that start later.
Note-on and note-off pairing into durations: notes ordered by release time · case 04
A long note that starts first is listed after shorter notes that start later.
Note-on and note-off pairing into durations: notes ordered by release time · case 05
A long note that starts first is listed after shorter notes that start later.
Absolute events to delta-time serialisation: deltas written as absolute ticks · case 01
Every event after the first carries its absolute tick as a delta, so playback drifts later and later.
Absolute events to delta-time serialisation: deltas written as absolute ticks · case 02
Every event after the first carries its absolute tick as a delta, so playback drifts later and later.
Absolute events to delta-time serialisation: deltas written as absolute ticks · case 03
Every event after the first carries its absolute tick as a delta, so playback drifts later and later.
Absolute events to delta-time serialisation: deltas written as absolute ticks · case 04
Every event after the first carries its absolute tick as a delta, so playback drifts later and later.
Absolute events to delta-time serialisation: deltas written as absolute ticks · case 05
Every event after the first carries its absolute tick as a delta, so playback drifts later and later.
Absolute events to delta-time serialisation: note-on emitted before simultaneous note-off · case 01
A repeated note whose off and next on share a tick is emitted on-then-off, so a receiver cuts the new note immediately.
Absolute events to delta-time serialisation: note-on emitted before simultaneous note-off · case 02
A repeated note whose off and next on share a tick is emitted on-then-off, so a receiver cuts the new note immediately.
Absolute events to delta-time serialisation: note-on emitted before simultaneous note-off · case 03
A repeated note whose off and next on share a tick is emitted on-then-off, so a receiver cuts the new note immediately.
Absolute events to delta-time serialisation: note-on emitted before simultaneous note-off · case 04
A repeated note whose off and next on share a tick is emitted on-then-off, so a receiver cuts the new note immediately.
Absolute events to delta-time serialisation: note-on emitted before simultaneous note-off · case 05
A repeated note whose off and next on share a tick is emitted on-then-off, so a receiver cuts the new note immediately.
Absolute events to delta-time serialisation: leading silence dropped · case 01
A track whose first event is at tick 5 is serialised with a first delta of 0, removing the opening rest.
Absolute events to delta-time serialisation: leading silence dropped · case 02
A track whose first event is at tick 5 is serialised with a first delta of 0, removing the opening rest.
Absolute events to delta-time serialisation: leading silence dropped · case 03
A track whose first event is at tick 5 is serialised with a first delta of 0, removing the opening rest.
Absolute events to delta-time serialisation: leading silence dropped · case 04
A track whose first event is at tick 5 is serialised with a first delta of 0, removing the opening rest.
Absolute events to delta-time serialisation: leading silence dropped · case 05
A track whose first event is at tick 5 is serialised with a first delta of 0, removing the opening rest.
Tick to microsecond conversion through a tempo map: each tempo segment floored separately · case 01
Long files with many tempo changes drift early: fractional microseconds are discarded at every segment boundary.
Tick to microsecond conversion through a tempo map: each tempo segment floored separately · case 02
Long files with many tempo changes drift early: fractional microseconds are discarded at every segment boundary.
Tick to microsecond conversion through a tempo map: each tempo segment floored separately · case 03
Long files with many tempo changes drift early: fractional microseconds are discarded at every segment boundary.
Tick to microsecond conversion through a tempo map: each tempo segment floored separately · case 04
Long files with many tempo changes drift early: fractional microseconds are discarded at every segment boundary.
Tick to microsecond conversion through a tempo map: each tempo segment floored separately · case 05
Long files with many tempo changes drift early: fractional microseconds are discarded at every segment boundary.
Tick to microsecond conversion through a tempo map: first tempo applied from tick zero · case 01
Material before the first tempo event is timed at that later tempo instead of the default 120 BPM.
Tick to microsecond conversion through a tempo map: first tempo applied from tick zero · case 02
Material before the first tempo event is timed at that later tempo instead of the default 120 BPM.
Tick to microsecond conversion through a tempo map: first tempo applied from tick zero · case 03
Material before the first tempo event is timed at that later tempo instead of the default 120 BPM.
Tick to microsecond conversion through a tempo map: first tempo applied from tick zero · case 04
Material before the first tempo event is timed at that later tempo instead of the default 120 BPM.
Tick to microsecond conversion through a tempo map: first tempo applied from tick zero · case 05
Material before the first tempo event is timed at that later tempo instead of the default 120 BPM.
Tick to microsecond conversion through a tempo map: first of duplicate tempo events wins · case 01
When two tempo events share a tick, the earlier-listed one is kept instead of the later override.
Tick to microsecond conversion through a tempo map: first of duplicate tempo events wins · case 02
When two tempo events share a tick, the earlier-listed one is kept instead of the later override.
Tick to microsecond conversion through a tempo map: first of duplicate tempo events wins · case 03
When two tempo events share a tick, the earlier-listed one is kept instead of the later override.
Tick to microsecond conversion through a tempo map: first of duplicate tempo events wins · case 04
When two tempo events share a tick, the earlier-listed one is kept instead of the later override.
Tick to microsecond conversion through a tempo map: first of duplicate tempo events wins · case 05
When two tempo events share a tick, the earlier-listed one is kept instead of the later override.
Tick to microsecond conversion through a tempo map: segment start not advanced at a tempo change · case 01
After a tempo change the time before the change is counted again at the new tempo.
Tick to microsecond conversion through a tempo map: segment start not advanced at a tempo change · case 02
After a tempo change the time before the change is counted again at the new tempo.
Tick to microsecond conversion through a tempo map: segment start not advanced at a tempo change · case 03
After a tempo change the time before the change is counted again at the new tempo.
Tick to microsecond conversion through a tempo map: segment start not advanced at a tempo change · case 04
After a tempo change the time before the change is counted again at the new tempo.
Tick to microsecond conversion through a tempo map: segment start not advanced at a tempo change · case 05
After a tempo change the time before the change is counted again at the new tempo.
Set Tempo meta event to BPM: tempo value read little-endian · case 01
120 BPM (07 A1 20) is read as 2138375 microseconds, about 28 BPM.
Set Tempo meta event to BPM: tempo value read little-endian · case 02
120 BPM (07 A1 20) is read as 2138375 microseconds, about 28 BPM.
Set Tempo meta event to BPM: tempo value read little-endian · case 03
120 BPM (07 A1 20) is read as 2138375 microseconds, about 28 BPM.
Set Tempo meta event to BPM: tempo value read little-endian · case 04
120 BPM (07 A1 20) is read as 2138375 microseconds, about 28 BPM.
Set Tempo meta event to BPM: tempo value read little-endian · case 05
120 BPM (07 A1 20) is read as 2138375 microseconds, about 28 BPM.
Set Tempo meta event to BPM: declared length of the tempo event not checked · case 01
A malformed Set Tempo event declaring length 4 or 2 is accepted as if it were valid.
Set Tempo meta event to BPM: declared length of the tempo event not checked · case 02
A malformed Set Tempo event declaring length 4 or 2 is accepted as if it were valid.
Set Tempo meta event to BPM: declared length of the tempo event not checked · case 03
A malformed Set Tempo event declaring length 4 or 2 is accepted as if it were valid.
Set Tempo meta event to BPM: declared length of the tempo event not checked · case 04
A malformed Set Tempo event declaring length 4 or 2 is accepted as if it were valid.
Set Tempo meta event to BPM: declared length of the tempo event not checked · case 05
A malformed Set Tempo event declaring length 4 or 2 is accepted as if it were valid.
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 ↗