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
Set Tempo meta event to BPM: BPM truncated instead of rounded · case 01
A tempo of 3840000 microseconds reports 15.62 BPM instead of 15.63.
Set Tempo meta event to BPM: BPM truncated instead of rounded · case 02
A tempo of 3840000 microseconds reports 15.62 BPM instead of 15.63.
Set Tempo meta event to BPM: BPM truncated instead of rounded · case 03
A tempo of 3840000 microseconds reports 15.62 BPM instead of 15.63.
Set Tempo meta event to BPM: BPM truncated instead of rounded · case 04
A tempo of 3840000 microseconds reports 15.62 BPM instead of 15.63.
Set Tempo meta event to BPM: BPM truncated instead of rounded · case 05
A tempo of 3840000 microseconds reports 15.62 BPM instead of 15.63.
SMPTE time-division ticks to microseconds: code 29 timed at 29 frames per second · case 01
Files using 29.97 fps timing run about 3.4% slow because each frame is taken as 1/29 second.
SMPTE time-division ticks to microseconds: code 29 timed at 29 frames per second · case 02
Files using 29.97 fps timing run about 3.4% slow because each frame is taken as 1/29 second.
SMPTE time-division ticks to microseconds: code 29 timed at 29 frames per second · case 03
Files using 29.97 fps timing run about 3.4% slow because each frame is taken as 1/29 second.
SMPTE time-division ticks to microseconds: code 29 timed at 29 frames per second · case 04
Files using 29.97 fps timing run about 3.4% slow because each frame is taken as 1/29 second.
SMPTE time-division ticks to microseconds: code 29 timed at 29 frames per second · case 05
Files using 29.97 fps timing run about 3.4% slow because each frame is taken as 1/29 second.
SMPTE time-division ticks to microseconds: frame rate code not negated · case 01
Every SMPTE-timed file is rejected because the rate code decodes to a negative number.
SMPTE time-division ticks to microseconds: frame rate code not negated · case 02
Every SMPTE-timed file is rejected because the rate code decodes to a negative number.
SMPTE time-division ticks to microseconds: frame rate code not negated · case 03
Every SMPTE-timed file is rejected because the rate code decodes to a negative number.
SMPTE time-division ticks to microseconds: frame rate code not negated · case 04
Every SMPTE-timed file is rejected because the rate code decodes to a negative number.
SMPTE time-division ticks to microseconds: frame rate code not negated · case 05
Every SMPTE-timed file is rejected because the rate code decodes to a negative number.
SMPTE time-division ticks to microseconds: event times rounded to nearest microsecond · case 01
About half of all sub-frame tick positions are reported one microsecond later than the stipulated floored time.
SMPTE time-division ticks to microseconds: event times rounded to nearest microsecond · case 02
About half of all sub-frame tick positions are reported one microsecond later than the stipulated floored time.
SMPTE time-division ticks to microseconds: event times rounded to nearest microsecond · case 03
About half of all sub-frame tick positions are reported one microsecond later than the stipulated floored time.
SMPTE time-division ticks to microseconds: event times rounded to nearest microsecond · case 04
About half of all sub-frame tick positions are reported one microsecond later than the stipulated floored time.
SMPTE time-division ticks to microseconds: event times rounded to nearest microsecond · case 05
About half of all sub-frame tick positions are reported one microsecond later than the stipulated floored time.
Bar, beat and tick position with meter changes: every beat treated as a quarter note · case 01
In 6/8 the fourth eighth-note beat is reported as beat 2 because beats are measured in quarters.
Bar, beat and tick position with meter changes: every beat treated as a quarter note · case 02
In 6/8 the fourth eighth-note beat is reported as beat 2 because beats are measured in quarters.
Bar, beat and tick position with meter changes: every beat treated as a quarter note · case 03
In 6/8 the fourth eighth-note beat is reported as beat 2 because beats are measured in quarters.
Bar, beat and tick position with meter changes: every beat treated as a quarter note · case 04
In 6/8 the fourth eighth-note beat is reported as beat 2 because beats are measured in quarters.
Bar, beat and tick position with meter changes: every beat treated as a quarter note · case 05
In 6/8 the fourth eighth-note beat is reported as beat 2 because beats are measured in quarters.
Bar, beat and tick position with meter changes: bar numbers restart after a meter change · case 01
After a change to 3/4 at bar 3, the first bar in the new meter is reported as bar 1 again.
Bar, beat and tick position with meter changes: bar numbers restart after a meter change · case 02
After a change to 3/4 at bar 3, the first bar in the new meter is reported as bar 1 again.
Bar, beat and tick position with meter changes: bar numbers restart after a meter change · case 03
After a change to 3/4 at bar 3, the first bar in the new meter is reported as bar 1 again.
Bar, beat and tick position with meter changes: bar numbers restart after a meter change · case 04
After a change to 3/4 at bar 3, the first bar in the new meter is reported as bar 1 again.
Bar, beat and tick position with meter changes: bar numbers restart after a meter change · case 05
After a change to 3/4 at bar 3, the first bar in the new meter is reported as bar 1 again.
Bar, beat and tick position with meter changes: beat count not reset each bar · case 01
The first beat of bar 2 in 4/4 is reported as beat 5.
Bar, beat and tick position with meter changes: beat count not reset each bar · case 02
The first beat of bar 2 in 4/4 is reported as beat 5.
Bar, beat and tick position with meter changes: beat count not reset each bar · case 03
The first beat of bar 2 in 4/4 is reported as beat 5.
Bar, beat and tick position with meter changes: beat count not reset each bar · case 04
The first beat of bar 2 in 4/4 is reported as beat 5.
Bar, beat and tick position with meter changes: beat count not reset each bar · case 05
The first beat of bar 2 in 4/4 is reported as beat 5.
Bar, beat and tick position with meter changes: segment length measured from bar zero · case 01
With three meters, the middle segment is treated as starting from bar 0, so positions after the last change land in the wrong bar.
Bar, beat and tick position with meter changes: segment length measured from bar zero · case 02
With three meters, the middle segment is treated as starting from bar 0, so positions after the last change land in the wrong bar.
Bar, beat and tick position with meter changes: segment length measured from bar zero · case 03
With three meters, the middle segment is treated as starting from bar 0, so positions after the last change land in the wrong bar.
Bar, beat and tick position with meter changes: segment length measured from bar zero · case 04
With three meters, the middle segment is treated as starting from bar 0, so positions after the last change land in the wrong bar.
Bar, beat and tick position with meter changes: segment length measured from bar zero · case 05
With three meters, the middle segment is treated as starting from bar 0, so positions after the last change land in the wrong bar.
Strength-weighted grid quantisation: notes always pulled back to the previous grid line · case 01
A note just before the beat is dragged back almost a full grid step instead of forward to the beat.
Strength-weighted grid quantisation: notes always pulled back to the previous grid line · case 02
A note just before the beat is dragged back almost a full grid step instead of forward to the beat.
Strength-weighted grid quantisation: notes always pulled back to the previous grid line · case 03
A note just before the beat is dragged back almost a full grid step instead of forward to the beat.
Strength-weighted grid quantisation: notes always pulled back to the previous grid line · case 04
A note just before the beat is dragged back almost a full grid step instead of forward to the beat.
Strength-weighted grid quantisation: notes always pulled back to the previous grid line · case 05
A note just before the beat is dragged back almost a full grid step instead of forward to the beat.
Strength-weighted grid quantisation: backward moves rounded away from zero · case 01
Partial quantisation of late notes moves them one tick further than the requested strength.
Strength-weighted grid quantisation: backward moves rounded away from zero · case 02
Partial quantisation of late notes moves them one tick further than the requested strength.
Strength-weighted grid quantisation: backward moves rounded away from zero · case 03
Partial quantisation of late notes moves them one tick further than the requested strength.
Strength-weighted grid quantisation: backward moves rounded away from zero · case 04
Partial quantisation of late notes moves them one tick further than the requested strength.
Strength-weighted grid quantisation: backward moves rounded away from zero · case 05
Partial quantisation of late notes moves them one tick further than the requested strength.
Strength-weighted grid quantisation: zero strength rejected · case 01
A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.
Strength-weighted grid quantisation: zero strength rejected · case 02
A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.
Strength-weighted grid quantisation: zero strength rejected · case 03
A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.
Strength-weighted grid quantisation: zero strength rejected · case 04
A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.
Strength-weighted grid quantisation: zero strength rejected · case 05
A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: offbeat half stretched by the downbeat factor · case 01
With 66% swing a note late in the beat (tick 479 of a 480-tick beat) lands after the next downbeat.
Eighth-note swing time remapping: offbeat half stretched by the downbeat factor · case 02
With 66% swing a note late in the beat (tick 479 of a 480-tick beat) lands after the next downbeat.
Eighth-note swing time remapping: offbeat half stretched by the downbeat factor · case 03
With 66% swing a note late in the beat (tick 479 of a 480-tick beat) lands after the next downbeat.
Eighth-note swing time remapping: offbeat half stretched by the downbeat factor · case 04
With 66% swing a note late in the beat (tick 479 of a 480-tick beat) lands after the next downbeat.
Eighth-note swing time remapping: offbeat half stretched by the downbeat factor · case 05
With 66% swing a note late in the beat (tick 479 of a 480-tick beat) lands after the next downbeat.
Eighth-note swing time remapping: beats split at eighth-note boundaries · case 01
Every offbeat is treated as a downbeat of its own, so swing never delays anything and positions double.
Eighth-note swing time remapping: beats split at eighth-note boundaries · case 02
Every offbeat is treated as a downbeat of its own, so swing never delays anything and positions double.
Eighth-note swing time remapping: beats split at eighth-note boundaries · case 03
Every offbeat is treated as a downbeat of its own, so swing never delays anything and positions double.
Eighth-note swing time remapping: beats split at eighth-note boundaries · case 04
Every offbeat is treated as a downbeat of its own, so swing never delays anything and positions double.
Eighth-note swing time remapping: beats split at eighth-note boundaries · case 05
Every offbeat is treated as a downbeat of its own, so swing never delays anything and positions double.
Eighth-note swing time remapping: straight timing rejected · case 01
A swing of exactly 50% (straight eighths) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: straight timing rejected · case 02
A swing of exactly 50% (straight eighths) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: straight timing rejected · case 03
A swing of exactly 50% (straight eighths) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: straight timing rejected · case 04
A swing of exactly 50% (straight eighths) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: straight timing rejected · case 05
A swing of exactly 50% (straight eighths) is rejected instead of returning the input unchanged.
Eighth-note swing time remapping: swung positions rounded to nearest · case 01
Some swung notes land one tick later than the stipulated floored position.
Eighth-note swing time remapping: swung positions rounded to nearest · case 02
Some swung notes land one tick later than the stipulated floored position.
Eighth-note swing time remapping: swung positions rounded to nearest · case 03
Some swung notes land one tick later than the stipulated floored position.
Eighth-note swing time remapping: swung positions rounded to nearest · case 04
Some swung notes land one tick later than the stipulated floored position.
Eighth-note swing time remapping: swung positions rounded to nearest · case 05
Some swung notes land one tick later than the stipulated floored position.
MIDI clock transport and song position: song position LSB and MSB swapped · case 01
A pointer of 4 sixteenths (lsb 4, msb 0) locates to sixteenth 512 instead of 4.
MIDI clock transport and song position: song position LSB and MSB swapped · case 02
A pointer of 4 sixteenths (lsb 4, msb 0) locates to sixteenth 512 instead of 4.
MIDI clock transport and song position: song position LSB and MSB swapped · case 03
A pointer of 4 sixteenths (lsb 4, msb 0) locates to sixteenth 512 instead of 4.
MIDI clock transport and song position: song position LSB and MSB swapped · case 04
A pointer of 4 sixteenths (lsb 4, msb 0) locates to sixteenth 512 instead of 4.
MIDI clock transport and song position: song position LSB and MSB swapped · case 05
A pointer of 4 sixteenths (lsb 4, msb 0) locates to sixteenth 512 instead of 4.
MIDI clock transport and song position: song position taken as clocks · case 01
Locating to sixteenth 4 sets the clock position to 4 instead of 24.
MIDI clock transport and song position: song position taken as clocks · case 02
Locating to sixteenth 4 sets the clock position to 4 instead of 24.
MIDI clock transport and song position: song position taken as clocks · case 03
Locating to sixteenth 4 sets the clock position to 4 instead of 24.
MIDI clock transport and song position: song position taken as clocks · case 04
Locating to sixteenth 4 sets the clock position to 4 instead of 24.
MIDI clock transport and song position: song position taken as clocks · case 05
Locating to sixteenth 4 sets the clock position to 4 instead of 24.
MIDI clock transport and song position: continue restarts from the top · case 01
Continue after a song position pointer or a stop jumps back to position 0, behaving like start.
MIDI clock transport and song position: continue restarts from the top · case 02
Continue after a song position pointer or a stop jumps back to position 0, behaving like start.
MIDI clock transport and song position: continue restarts from the top · case 03
Continue after a song position pointer or a stop jumps back to position 0, behaving like start.
MIDI clock transport and song position: continue restarts from the top · case 04
Continue after a song position pointer or a stop jumps back to position 0, behaving like start.
MIDI clock transport and song position: continue restarts from the top · case 05
Continue after a song position pointer or a stop jumps back to position 0, behaving like start.
MIDI clock transport and song position: song position honoured during playback · case 01
A pointer received while running relocates the transport mid-playback.
MIDI clock transport and song position: song position honoured during playback · case 02
A pointer received while running relocates the transport mid-playback.
MIDI clock transport and song position: song position honoured during playback · case 03
A pointer received while running relocates the transport mid-playback.
MIDI clock transport and song position: song position honoured during playback · case 04
A pointer received while running relocates the transport mid-playback.
MIDI clock transport and song position: song position honoured during playback · case 05
A pointer received while running relocates the transport mid-playback.
MIDI clock transport and song position: start resumes from the old position · case 01
Start after playback resumes counting from the previous position instead of from 0.
MIDI clock transport and song position: start resumes from the old position · case 02
Start after playback resumes counting from the previous position instead of from 0.
MIDI clock transport and song position: start resumes from the old position · case 03
Start after playback resumes counting from the previous position instead of from 0.
MIDI clock transport and song position: start resumes from the old position · case 04
Start after playback resumes counting from the previous position instead of from 0.
MIDI clock transport and song position: start resumes from the old position · case 05
Start after playback resumes counting from the previous position instead of from 0.
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 ↗