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
Key signature and measure accidental resolution: double flat token rejected · case 01
Any passage containing a double flat such as Gbb4 or Bbb4 is rejected as invalid.
Key signature and measure accidental resolution: double flat token rejected · case 02
Any passage containing a double flat such as Gbb4 or Bbb4 is rejected as invalid.
Key signature and measure accidental resolution: double flat token rejected · case 03
Any passage containing a double flat such as Gbb4 or Bbb4 is rejected as invalid.
Key signature and measure accidental resolution: double flat token rejected · case 04
Any passage containing a double flat such as Gbb4 or Bbb4 is rejected as invalid.
Key signature and measure accidental resolution: double flat token rejected · case 05
Any passage containing a double flat such as Gbb4 or Bbb4 is rejected as invalid.
Modal scale spelling from a tonic: mode pattern rotated the wrong way · case 01
D dorian is spelled with F# and C# because the step pattern is rotated right, yielding the locrian-side pattern order.
Modal scale spelling from a tonic: mode pattern rotated the wrong way · case 02
D dorian is spelled with F# and C# because the step pattern is rotated right, yielding the locrian-side pattern order.
Modal scale spelling from a tonic: mode pattern rotated the wrong way · case 03
D dorian is spelled with F# and C# because the step pattern is rotated right, yielding the locrian-side pattern order.
Modal scale spelling from a tonic: mode pattern rotated the wrong way · case 04
D dorian is spelled with F# and C# because the step pattern is rotated right, yielding the locrian-side pattern order.
Modal scale spelling from a tonic: mode pattern rotated the wrong way · case 05
D dorian is spelled with F# and C# because the step pattern is rotated right, yielding the locrian-side pattern order.
Modal scale spelling from a tonic: flat degrees reported as eleven-semitone sharps · case 01
Every scale containing a flat degree returns None because a flat is folded to +11 and rejected.
Modal scale spelling from a tonic: flat degrees reported as eleven-semitone sharps · case 02
Every scale containing a flat degree returns None because a flat is folded to +11 and rejected.
Modal scale spelling from a tonic: flat degrees reported as eleven-semitone sharps · case 03
Every scale containing a flat degree returns None because a flat is folded to +11 and rejected.
Modal scale spelling from a tonic: flat degrees reported as eleven-semitone sharps · case 04
Every scale containing a flat degree returns None because a flat is folded to +11 and rejected.
Modal scale spelling from a tonic: flat degrees reported as eleven-semitone sharps · case 05
Every scale containing a flat degree returns None because a flat is folded to +11 and rejected.
Modal scale spelling from a tonic: steps taken from letter position not scale position · case 01
Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.
Modal scale spelling from a tonic: steps taken from letter position not scale position · case 02
Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.
Modal scale spelling from a tonic: steps taken from letter position not scale position · case 03
Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.
Modal scale spelling from a tonic: steps taken from letter position not scale position · case 04
Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.
Modal scale spelling from a tonic: steps taken from letter position not scale position · case 05
Non-ionian modes come out as the major scale of the tonic because the pitch advance follows the letter names.
Pitch-class set normal form (right-packed): duplicate pitch classes kept in the set · case 01
Doubled notes such as [9,0,4,4,16] yield a normal form containing repeated pitch classes.
Pitch-class set normal form (right-packed): duplicate pitch classes kept in the set · case 02
Doubled notes such as [9,0,4,4,16] yield a normal form containing repeated pitch classes.
Pitch-class set normal form (right-packed): duplicate pitch classes kept in the set · case 03
Doubled notes such as [9,0,4,4,16] yield a normal form containing repeated pitch classes.
Pitch-class set normal form (right-packed): duplicate pitch classes kept in the set · case 04
Doubled notes such as [9,0,4,4,16] yield a normal form containing repeated pitch classes.
Pitch-class set normal form (right-packed): duplicate pitch classes kept in the set · case 05
Doubled notes such as [9,0,4,4,16] yield a normal form containing repeated pitch classes.
Pitch-class set normal form (right-packed): wrapped members not lifted an octave · case 01
Rotations that wrap past 11 produce negative spans, so a wrapped rotation such as [11,0,4] is never chosen correctly.
Pitch-class set normal form (right-packed): wrapped members not lifted an octave · case 02
Rotations that wrap past 11 produce negative spans, so a wrapped rotation such as [11,0,4] is never chosen correctly.
Pitch-class set normal form (right-packed): wrapped members not lifted an octave · case 03
Rotations that wrap past 11 produce negative spans, so a wrapped rotation such as [11,0,4] is never chosen correctly.
Pitch-class set normal form (right-packed): wrapped members not lifted an octave · case 04
Rotations that wrap past 11 produce negative spans, so a wrapped rotation such as [11,0,4] is never chosen correctly.
Pitch-class set normal form (right-packed): wrapped members not lifted an octave · case 05
Rotations that wrap past 11 produce negative spans, so a wrapped rotation such as [11,0,4] is never chosen correctly.
Pitch-class set normal form (right-packed): span ties broken from the left · case 01
Sets such as [0,1,5,6,8] and [0,1,3,5,8,9] get the left-packed normal form instead of the stipulated right-packed one.
Pitch-class set normal form (right-packed): span ties broken from the left · case 02
Sets such as [0,1,5,6,8] and [0,1,3,5,8,9] get the left-packed normal form instead of the stipulated right-packed one.
Pitch-class set normal form (right-packed): span ties broken from the left · case 03
Sets such as [0,1,5,6,8] and [0,1,3,5,8,9] get the left-packed normal form instead of the stipulated right-packed one.
Pitch-class set normal form (right-packed): span ties broken from the left · case 04
Sets such as [0,1,5,6,8] and [0,1,3,5,8,9] get the left-packed normal form instead of the stipulated right-packed one.
Pitch-class set normal form (right-packed): span ties broken from the left · case 05
Sets such as [0,1,5,6,8] and [0,1,3,5,8,9] get the left-packed normal form instead of the stipulated right-packed one.
Pitch-class set normal form (right-packed): symmetric sets start on the highest pitch class · case 01
The augmented triad [0,4,8] returns [8,0,4] and the diminished seventh starts on 9.
Pitch-class set normal form (right-packed): symmetric sets start on the highest pitch class · case 02
The augmented triad [0,4,8] returns [8,0,4] and the diminished seventh starts on 9.
Pitch-class set normal form (right-packed): symmetric sets start on the highest pitch class · case 03
The augmented triad [0,4,8] returns [8,0,4] and the diminished seventh starts on 9.
Pitch-class set normal form (right-packed): symmetric sets start on the highest pitch class · case 04
The augmented triad [0,4,8] returns [8,0,4] and the diminished seventh starts on 9.
Pitch-class set normal form (right-packed): symmetric sets start on the highest pitch class · case 05
The augmented triad [0,4,8] returns [8,0,4] and the diminished seventh starts on 9.
Pitch-class set normal form (right-packed): normal form reports lifted pitch values · case 01
A wrapped normal form such as [11,0,4] is returned as [11,12,16].
Pitch-class set normal form (right-packed): normal form reports lifted pitch values · case 02
A wrapped normal form such as [11,0,4] is returned as [11,12,16].
Pitch-class set normal form (right-packed): normal form reports lifted pitch values · case 03
A wrapped normal form such as [11,0,4] is returned as [11,12,16].
Pitch-class set normal form (right-packed): normal form reports lifted pitch values · case 04
A wrapped normal form such as [11,0,4] is returned as [11,12,16].
Pitch-class set normal form (right-packed): normal form reports lifted pitch values · case 05
A wrapped normal form such as [11,0,4] is returned as [11,12,16].
Pitch-class set prime form (right-packed): less packed candidate preferred · case 01
The major triad [0,4,7] keeps the prime form [0,4,7] instead of [0,3,7]: the less packed of the two candidates wins.
Pitch-class set prime form (right-packed): less packed candidate preferred · case 02
The major triad [0,4,7] keeps the prime form [0,4,7] instead of [0,3,7]: the less packed of the two candidates wins.
Pitch-class set prime form (right-packed): less packed candidate preferred · case 03
The major triad [0,4,7] keeps the prime form [0,4,7] instead of [0,3,7]: the less packed of the two candidates wins.
Pitch-class set prime form (right-packed): less packed candidate preferred · case 04
The major triad [0,4,7] keeps the prime form [0,4,7] instead of [0,3,7]: the less packed of the two candidates wins.
Pitch-class set prime form (right-packed): less packed candidate preferred · case 05
The major triad [0,4,7] keeps the prime form [0,4,7] instead of [0,3,7]: the less packed of the two candidates wins.
Pitch-class set prime form (right-packed): normal form not transposed to zero · case 01
A major triad on D returns [2,6,9]-shaped values rather than [0,3,7].
Pitch-class set prime form (right-packed): normal form not transposed to zero · case 02
A major triad on D returns [2,6,9]-shaped values rather than [0,3,7].
Pitch-class set prime form (right-packed): normal form not transposed to zero · case 03
A major triad on D returns [2,6,9]-shaped values rather than [0,3,7].
Pitch-class set prime form (right-packed): normal form not transposed to zero · case 04
A major triad on D returns [2,6,9]-shaped values rather than [0,3,7].
Pitch-class set prime form (right-packed): normal form not transposed to zero · case 05
A major triad on D returns [2,6,9]-shaped values rather than [0,3,7].
Pitch-class set prime form (right-packed): retrograde used in place of inversion · case 01
Major and minor triads get different prime forms: [0,4,7] returns [0,4,7] instead of [0,3,7].
Pitch-class set prime form (right-packed): retrograde used in place of inversion · case 02
Major and minor triads get different prime forms: [0,4,7] returns [0,4,7] instead of [0,3,7].
Pitch-class set prime form (right-packed): retrograde used in place of inversion · case 03
Major and minor triads get different prime forms: [0,4,7] returns [0,4,7] instead of [0,3,7].
Pitch-class set prime form (right-packed): retrograde used in place of inversion · case 04
Major and minor triads get different prime forms: [0,4,7] returns [0,4,7] instead of [0,3,7].
Pitch-class set prime form (right-packed): retrograde used in place of inversion · case 05
Major and minor triads get different prime forms: [0,4,7] returns [0,4,7] instead of [0,3,7].
Pitch-class set prime form (right-packed): empty set treated as invalid · case 01
The empty set returns None instead of the empty prime form [].
Pitch-class set prime form (right-packed): empty set treated as invalid · case 02
The empty set returns None instead of the empty prime form [].
Pitch-class set prime form (right-packed): empty set treated as invalid · case 03
The empty set returns None instead of the empty prime form [].
Pitch-class set prime form (right-packed): empty set treated as invalid · case 04
The empty set returns None instead of the empty prime form [].
Pitch-class set prime form (right-packed): empty set treated as invalid · case 05
The empty set returns None instead of the empty prime form [].
Interval-class vector of a pitch-class set: large intervals folded by subtracting a tritone · case 01
A perfect fifth is counted as interval class 1 instead of 5, so [0,7] reports [1,0,0,0,0,0].
Interval-class vector of a pitch-class set: large intervals folded by subtracting a tritone · case 02
A perfect fifth is counted as interval class 1 instead of 5, so [0,7] reports [1,0,0,0,0,0].
Interval-class vector of a pitch-class set: large intervals folded by subtracting a tritone · case 03
A perfect fifth is counted as interval class 1 instead of 5, so [0,7] reports [1,0,0,0,0,0].
Interval-class vector of a pitch-class set: large intervals folded by subtracting a tritone · case 04
A perfect fifth is counted as interval class 1 instead of 5, so [0,7] reports [1,0,0,0,0,0].
Interval-class vector of a pitch-class set: large intervals folded by subtracting a tritone · case 05
A perfect fifth is counted as interval class 1 instead of 5, so [0,7] reports [1,0,0,0,0,0].
Interval-class vector of a pitch-class set: self pairs and ordered pairs counted · case 01
Every interval is counted twice and each pitch class paired with itself lands in the tritone slot.
Interval-class vector of a pitch-class set: self pairs and ordered pairs counted · case 02
Every interval is counted twice and each pitch class paired with itself lands in the tritone slot.
Interval-class vector of a pitch-class set: self pairs and ordered pairs counted · case 03
Every interval is counted twice and each pitch class paired with itself lands in the tritone slot.
Interval-class vector of a pitch-class set: self pairs and ordered pairs counted · case 04
Every interval is counted twice and each pitch class paired with itself lands in the tritone slot.
Interval-class vector of a pitch-class set: self pairs and ordered pairs counted · case 05
Every interval is counted twice and each pitch class paired with itself lands in the tritone slot.
Interval-class vector of a pitch-class set: interval class stored one slot high · case 01
A semitone is recorded in the ic2 slot and a major third in the ic4 slot.
Interval-class vector of a pitch-class set: interval class stored one slot high · case 02
A semitone is recorded in the ic2 slot and a major third in the ic4 slot.
Interval-class vector of a pitch-class set: interval class stored one slot high · case 03
A semitone is recorded in the ic2 slot and a major third in the ic4 slot.
Interval-class vector of a pitch-class set: interval class stored one slot high · case 04
A semitone is recorded in the ic2 slot and a major third in the ic4 slot.
Interval-class vector of a pitch-class set: interval class stored one slot high · case 05
A semitone is recorded in the ic2 slot and a major third in the ic4 slot.
Interval-class vector of a pitch-class set: negative pitch numbers reflected instead of reduced · case 01
A set containing -1 is analysed as if it contained 1, so [-1,0,4] gets the wrong vector.
Interval-class vector of a pitch-class set: negative pitch numbers reflected instead of reduced · case 02
A set containing -1 is analysed as if it contained 1, so [-1,0,4] gets the wrong vector.
Interval-class vector of a pitch-class set: negative pitch numbers reflected instead of reduced · case 03
A set containing -1 is analysed as if it contained 1, so [-1,0,4] gets the wrong vector.
Interval-class vector of a pitch-class set: negative pitch numbers reflected instead of reduced · case 04
A set containing -1 is analysed as if it contained 1, so [-1,0,4] gets the wrong vector.
Interval-class vector of a pitch-class set: negative pitch numbers reflected instead of reduced · case 05
A set containing -1 is analysed as if it contained 1, so [-1,0,4] gets the wrong vector.
Five-limit just ratio for a semitone interval: descending intervals looked up by floor modulo · case 01
A descending whole tone returns 9/10 instead of 8/9 and a descending tritone 45/64 instead of 32/45.
Five-limit just ratio for a semitone interval: descending intervals looked up by floor modulo · case 02
A descending whole tone returns 9/10 instead of 8/9 and a descending tritone 45/64 instead of 32/45.
Five-limit just ratio for a semitone interval: descending intervals looked up by floor modulo · case 03
A descending whole tone returns 9/10 instead of 8/9 and a descending tritone 45/64 instead of 32/45.
Five-limit just ratio for a semitone interval: descending intervals looked up by floor modulo · case 04
A descending whole tone returns 9/10 instead of 8/9 and a descending tritone 45/64 instead of 32/45.
Five-limit just ratio for a semitone interval: descending intervals looked up by floor modulo · case 05
A descending whole tone returns 9/10 instead of 8/9 and a descending tritone 45/64 instead of 32/45.
Five-limit just ratio for a semitone interval: octave factor multiplied instead of exponentiated · case 01
Every interval smaller than an octave returns 0/1 and a twelfth returns 3/1 only by coincidence.
Five-limit just ratio for a semitone interval: octave factor multiplied instead of exponentiated · case 02
Every interval smaller than an octave returns 0/1 and a twelfth returns 3/1 only by coincidence.
Five-limit just ratio for a semitone interval: octave factor multiplied instead of exponentiated · case 03
Every interval smaller than an octave returns 0/1 and a twelfth returns 3/1 only by coincidence.
Five-limit just ratio for a semitone interval: octave factor multiplied instead of exponentiated · case 04
Every interval smaller than an octave returns 0/1 and a twelfth returns 3/1 only by coincidence.
Five-limit just ratio for a semitone interval: octave factor multiplied instead of exponentiated · case 05
Every interval smaller than an octave returns 0/1 and a twelfth returns 3/1 only by coincidence.
Five-limit just ratio for a semitone interval: integer ratios rendered without denominator · case 01
The octave is returned as "2" and the double octave as "4" instead of "2/1" and "4/1".
Five-limit just ratio for a semitone interval: integer ratios rendered without denominator · case 02
The octave is returned as "2" and the double octave as "4" instead of "2/1" and "4/1".
Five-limit just ratio for a semitone interval: integer ratios rendered without denominator · case 03
The octave is returned as "2" and the double octave as "4" instead of "2/1" and "4/1".
Five-limit just ratio for a semitone interval: integer ratios rendered without denominator · case 04
The octave is returned as "2" and the double octave as "4" instead of "2/1" and "4/1".
Five-limit just ratio for a semitone interval: integer ratios rendered without denominator · case 05
The octave is returned as "2" and the double octave as "4" instead of "2/1" and "4/1".
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 ↗