FAILURE MAP

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 ↗
100840Executable case variants
20168Distinct failure mechanisms
302520Executed implementations
20168Open-access cases

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

Python · Standard library
REFERENCEFAILURE MECHANISMDOMAINACCESS
FA-81501

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.

MIDI event timing● Open access↗
FA-81502

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.

MIDI event timing◈ Members↗
FA-81503

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.

MIDI event timing◈ Members↗
FA-81504

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.

MIDI event timing◈ Members↗
FA-81505

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.

MIDI event timing◈ Members↗
FA-81506

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.

MIDI event timing● Open access↗
FA-81507

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.

MIDI event timing◈ Members↗
FA-81508

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.

MIDI event timing◈ Members↗
FA-81509

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.

MIDI event timing◈ Members↗
FA-81510

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.

MIDI event timing◈ Members↗
FA-81511

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.

MIDI event timing● Open access↗
FA-81512

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.

MIDI event timing◈ Members↗
FA-81513

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.

MIDI event timing◈ Members↗
FA-81514

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.

MIDI event timing◈ Members↗
FA-81515

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.

MIDI event timing◈ Members↗
FA-81516

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.

MIDI event timing● Open access↗
FA-81517

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.

MIDI event timing◈ Members↗
FA-81518

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.

MIDI event timing◈ Members↗
FA-81519

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.

MIDI event timing◈ Members↗
FA-81520

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.

MIDI event timing◈ Members↗
FA-81521

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.

MIDI event timing● Open access↗
FA-81522

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.

MIDI event timing◈ Members↗
FA-81523

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.

MIDI event timing◈ Members↗
FA-81524

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.

MIDI event timing◈ Members↗
FA-81525

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.

MIDI event timing◈ Members↗
FA-81526

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.

MIDI event timing● Open access↗
FA-81527

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.

MIDI event timing◈ Members↗
FA-81528

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.

MIDI event timing◈ Members↗
FA-81529

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.

MIDI event timing◈ Members↗
FA-81530

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.

MIDI event timing◈ Members↗
FA-81531

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.

MIDI event timing● Open access↗
FA-81532

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.

MIDI event timing◈ Members↗
FA-81533

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.

MIDI event timing◈ Members↗
FA-81534

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.

MIDI event timing◈ Members↗
FA-81535

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.

MIDI event timing◈ Members↗
FA-81536

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.

MIDI event timing● Open access↗
FA-81537

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.

MIDI event timing◈ Members↗
FA-81538

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.

MIDI event timing◈ Members↗
FA-81539

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.

MIDI event timing◈ Members↗
FA-81540

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.

MIDI event timing◈ Members↗
FA-81541

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.

MIDI event timing● Open access↗
FA-81542

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.

MIDI event timing◈ Members↗
FA-81543

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.

MIDI event timing◈ Members↗
FA-81544

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.

MIDI event timing◈ Members↗
FA-81545

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.

MIDI event timing◈ Members↗
FA-81546

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.

MIDI event timing● Open access↗
FA-81547

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.

MIDI event timing◈ Members↗
FA-81548

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.

MIDI event timing◈ Members↗
FA-81549

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.

MIDI event timing◈ Members↗
FA-81550

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.

MIDI event timing◈ Members↗
FA-81551

Strength-weighted grid quantisation: zero strength rejected · case 01

A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.

MIDI event timing● Open access↗
FA-81552

Strength-weighted grid quantisation: zero strength rejected · case 02

A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.

MIDI event timing◈ Members↗
FA-81553

Strength-weighted grid quantisation: zero strength rejected · case 03

A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.

MIDI event timing◈ Members↗
FA-81554

Strength-weighted grid quantisation: zero strength rejected · case 04

A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.

MIDI event timing◈ Members↗
FA-81555

Strength-weighted grid quantisation: zero strength rejected · case 05

A strength of 0 (no-op quantise) is rejected instead of returning the input unchanged.

MIDI event timing◈ Members↗
FA-81556

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.

MIDI event timing● Open access↗
FA-81557

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.

MIDI event timing◈ Members↗
FA-81558

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.

MIDI event timing◈ Members↗
FA-81559

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.

MIDI event timing◈ Members↗
FA-81560

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.

MIDI event timing◈ Members↗
FA-81561

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.

MIDI event timing● Open access↗
FA-81562

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.

MIDI event timing◈ Members↗
FA-81563

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.

MIDI event timing◈ Members↗
FA-81564

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.

MIDI event timing◈ Members↗
FA-81565

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.

MIDI event timing◈ Members↗
FA-81566

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.

MIDI event timing● Open access↗
FA-81567

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.

MIDI event timing◈ Members↗
FA-81568

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.

MIDI event timing◈ Members↗
FA-81569

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.

MIDI event timing◈ Members↗
FA-81570

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.

MIDI event timing◈ Members↗
FA-81571

Eighth-note swing time remapping: swung positions rounded to nearest · case 01

Some swung notes land one tick later than the stipulated floored position.

MIDI event timing● Open access↗
FA-81572

Eighth-note swing time remapping: swung positions rounded to nearest · case 02

Some swung notes land one tick later than the stipulated floored position.

MIDI event timing◈ Members↗
FA-81573

Eighth-note swing time remapping: swung positions rounded to nearest · case 03

Some swung notes land one tick later than the stipulated floored position.

MIDI event timing◈ Members↗
FA-81574

Eighth-note swing time remapping: swung positions rounded to nearest · case 04

Some swung notes land one tick later than the stipulated floored position.

MIDI event timing◈ Members↗
FA-81575

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 event timing◈ Members↗
FA-81576

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 event timing● Open access↗
FA-81577

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 event timing◈ Members↗
FA-81578

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 event timing◈ Members↗
FA-81579

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 event timing◈ Members↗
FA-81580

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 event timing◈ Members↗
FA-81581

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 event timing● Open access↗
FA-81582

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 event timing◈ Members↗
FA-81583

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 event timing◈ Members↗
FA-81584

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 event timing◈ Members↗
FA-81585

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 event timing◈ Members↗
FA-81586

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 event timing● Open access↗
FA-81587

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 event timing◈ Members↗
FA-81588

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 event timing◈ Members↗
FA-81589

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 event timing◈ Members↗
FA-81590

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 event timing◈ Members↗
FA-81591

MIDI clock transport and song position: song position honoured during playback · case 01

A pointer received while running relocates the transport mid-playback.

MIDI event timing● Open access↗
FA-81592

MIDI clock transport and song position: song position honoured during playback · case 02

A pointer received while running relocates the transport mid-playback.

MIDI event timing◈ Members↗
FA-81593

MIDI clock transport and song position: song position honoured during playback · case 03

A pointer received while running relocates the transport mid-playback.

MIDI event timing◈ Members↗
FA-81594

MIDI clock transport and song position: song position honoured during playback · case 04

A pointer received while running relocates the transport mid-playback.

MIDI event timing◈ Members↗
FA-81595

MIDI clock transport and song position: song position honoured during playback · case 05

A pointer received while running relocates the transport mid-playback.

MIDI event timing◈ Members↗
FA-81596

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 event timing● Open access↗
FA-81597

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 event timing◈ Members↗
FA-81598

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 event timing◈ Members↗
FA-81599

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 event timing◈ Members↗
FA-81600

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.

MIDI event timing◈ Members↗

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 ↗