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-81401

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.

MIDI event timing● Open access↗
FA-81402

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.

MIDI event timing◈ Members↗
FA-81403

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.

MIDI event timing◈ Members↗
FA-81404

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.

MIDI event timing◈ Members↗
FA-81405

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.

MIDI event timing◈ Members↗
FA-81406

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.

MIDI event timing● Open access↗
FA-81407

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.

MIDI event timing◈ Members↗
FA-81408

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.

MIDI event timing◈ Members↗
FA-81409

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.

MIDI event timing◈ Members↗
FA-81410

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.

MIDI event timing◈ Members↗
FA-81411

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.

MIDI event timing● Open access↗
FA-81412

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.

MIDI event timing◈ Members↗
FA-81413

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.

MIDI event timing◈ Members↗
FA-81414

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.

MIDI event timing◈ Members↗
FA-81415

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.

MIDI event timing◈ Members↗
FA-81416

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.

MIDI event timing● Open access↗
FA-81417

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.

MIDI event timing◈ Members↗
FA-81418

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.

MIDI event timing◈ Members↗
FA-81419

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.

MIDI event timing◈ Members↗
FA-81420

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.

MIDI event timing◈ Members↗
FA-81421

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.

MIDI event timing● Open access↗
FA-81422

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.

MIDI event timing◈ Members↗
FA-81423

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.

MIDI event timing◈ Members↗
FA-81424

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.

MIDI event timing◈ Members↗
FA-81425

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.

MIDI event timing◈ Members↗
FA-81426

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.

MIDI event timing● Open access↗
FA-81427

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.

MIDI event timing◈ Members↗
FA-81428

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.

MIDI event timing◈ Members↗
FA-81429

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.

MIDI event timing◈ Members↗
FA-81430

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.

MIDI event timing◈ Members↗
FA-81431

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.

MIDI event timing● Open access↗
FA-81432

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.

MIDI event timing◈ Members↗
FA-81433

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.

MIDI event timing◈ Members↗
FA-81434

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.

MIDI event timing◈ Members↗
FA-81435

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.

MIDI event timing◈ Members↗
FA-81436

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.

MIDI event timing● Open access↗
FA-81437

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.

MIDI event timing◈ Members↗
FA-81438

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.

MIDI event timing◈ Members↗
FA-81439

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.

MIDI event timing◈ Members↗
FA-81440

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.

MIDI event timing◈ Members↗
FA-81441

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.

MIDI event timing● Open access↗
FA-81442

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.

MIDI event timing◈ Members↗
FA-81443

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.

MIDI event timing◈ Members↗
FA-81444

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.

MIDI event timing◈ Members↗
FA-81445

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.

MIDI event timing◈ Members↗
FA-81446

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.

MIDI event timing● Open access↗
FA-81447

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.

MIDI event timing◈ Members↗
FA-81448

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.

MIDI event timing◈ Members↗
FA-81449

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.

MIDI event timing◈ Members↗
FA-81450

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.

MIDI event timing◈ Members↗
FA-81451

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.

MIDI event timing● Open access↗
FA-81452

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.

MIDI event timing◈ Members↗
FA-81453

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.

MIDI event timing◈ Members↗
FA-81454

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.

MIDI event timing◈ Members↗
FA-81455

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.

MIDI event timing◈ Members↗
FA-81456

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.

MIDI event timing● Open access↗
FA-81457

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.

MIDI event timing◈ Members↗
FA-81458

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.

MIDI event timing◈ Members↗
FA-81459

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.

MIDI event timing◈ Members↗
FA-81460

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.

MIDI event timing◈ Members↗
FA-81461

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.

MIDI event timing● Open access↗
FA-81462

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.

MIDI event timing◈ Members↗
FA-81463

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.

MIDI event timing◈ Members↗
FA-81464

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.

MIDI event timing◈ Members↗
FA-81465

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.

MIDI event timing◈ Members↗
FA-81466

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.

MIDI event timing● Open access↗
FA-81467

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.

MIDI event timing◈ Members↗
FA-81468

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.

MIDI event timing◈ Members↗
FA-81469

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.

MIDI event timing◈ Members↗
FA-81470

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.

MIDI event timing◈ Members↗
FA-81471

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.

MIDI event timing● Open access↗
FA-81472

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.

MIDI event timing◈ Members↗
FA-81473

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.

MIDI event timing◈ Members↗
FA-81474

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.

MIDI event timing◈ Members↗
FA-81475

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.

MIDI event timing◈ Members↗
FA-81476

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.

MIDI event timing● Open access↗
FA-81477

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.

MIDI event timing◈ Members↗
FA-81478

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.

MIDI event timing◈ Members↗
FA-81479

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.

MIDI event timing◈ Members↗
FA-81480

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.

MIDI event timing◈ Members↗
FA-81481

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.

MIDI event timing● Open access↗
FA-81482

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.

MIDI event timing◈ Members↗
FA-81483

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.

MIDI event timing◈ Members↗
FA-81484

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.

MIDI event timing◈ Members↗
FA-81485

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.

MIDI event timing◈ Members↗
FA-81486

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.

MIDI event timing● Open access↗
FA-81487

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.

MIDI event timing◈ Members↗
FA-81488

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.

MIDI event timing◈ Members↗
FA-81489

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.

MIDI event timing◈ Members↗
FA-81490

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.

MIDI event timing◈ Members↗
FA-81491

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.

MIDI event timing● Open access↗
FA-81492

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.

MIDI event timing◈ Members↗
FA-81493

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.

MIDI event timing◈ Members↗
FA-81494

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.

MIDI event timing◈ Members↗
FA-81495

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.

MIDI event timing◈ Members↗
FA-81496

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.

MIDI event timing● Open access↗
FA-81497

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.

MIDI event timing◈ Members↗
FA-81498

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.

MIDI event timing◈ Members↗
FA-81499

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.

MIDI event timing◈ Members↗
FA-81500

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.

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 ↗