FA-81396 / MIDI event timing / Open access
Standard MIDI File header chunk reader: longer header chunks rejected · case 01
A header chunk declaring length 8 (with two extra bytes present) is rejected although extra bytes must be ignored.
ROOT CAUSE
The length check requires exactly six bytes instead of at least six.
VERIFIED REPAIR
Restore the extended header length step so that it reads `length < 6`.
Unsuccessful approach: Allowing one extra byte still rejects an eight-byte header.
Case contract
Input the bytes of a header chunk: "MThd", a 32-bit big-endian length (>= 6; extra bytes ignored but must be present), 16-bit format (0, 1, 2), 16-bit track count (nonzero; exactly 1 for format 0) and 16-bit division. If bit 15 of division is set, the high byte is a negative two's-complement frame rate (24, 25, 29, 30) and the low byte ticks per frame; otherwise division is ticks per quarter note (nonzero). Return a dict or None.
Why this case matters
MIDI sequencers, file readers and synth drivers depend on exact event ordering and tick/time arithmetic.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
if not isinstance(x, list) or len(x) < 14 or x[:4] != [77, 84, 104, 100]:
return None
length = (x[4] << 24) | (x[5] << 16) | (x[6] << 8) | x[7]
if length != 6 or len(x) < 8 + length:
return None
fmt = (x[8] << 8) | x[9]
ntrks = (x[10] << 8) | x[11]
division = (x[12] << 8) | x[13]
if fmt not in (0, 1, 2) or ntrks == 0 or (fmt == 0 and ntrks != 1):
return None
if division & 0x8000:
fps = 256 - x[12]
if fps not in (24, 25, 29, 30):
return None
return {'format': fmt, 'tracks': ntrks, 'fps': fps, 'ticks_per_frame': x[13]}
if division == 0:
return None
return {'format': fmt, 'tracks': ntrks, 'ppq': division}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 0, 96], {'format': 0, 'tracks': 1, 'ppq': 96}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 2, 0, 96], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None)], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 105, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 128, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 127, 255], {'format': 0, 'tracks': 1, 'ppq': 32767})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| oracle 0 | {'format': 1, 'ppq': 480, 'tracks': 2} | {'format': 1, 'ppq': 480, 'tracks': 2} | Passed |
| oracle 1 | {'format': 0, 'ppq': 96, 'tracks': 1} | {'format': 0, 'ppq': 96, 'tracks': 1} | Passed |
| oracle 2 | None | None | Passed |
| oracle 3 | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | Passed |
| oracle 4 | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | Passed |
| oracle 5 | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | Passed |
| oracle 6 | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | Passed |
| oracle 7 | None | {'format': 1, 'ppq': 480, 'tracks': 2} | Failed |
SHA-256 / 181ee77c9261ab1371fbb5b0758da1c586e4c53a07ec2ceb64021997526d7f80
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
if not isinstance(x, list) or len(x) < 14 or x[:4] != [77, 84, 104, 100]:
return None
length = (x[4] << 24) | (x[5] << 16) | (x[6] << 8) | x[7]
if length < 6 or length > 7 or len(x) < 8 + length:
return None
fmt = (x[8] << 8) | x[9]
ntrks = (x[10] << 8) | x[11]
division = (x[12] << 8) | x[13]
if fmt not in (0, 1, 2) or ntrks == 0 or (fmt == 0 and ntrks != 1):
return None
if division & 0x8000:
fps = 256 - x[12]
if fps not in (24, 25, 29, 30):
return None
return {'format': fmt, 'tracks': ntrks, 'fps': fps, 'ticks_per_frame': x[13]}
if division == 0:
return None
return {'format': fmt, 'tracks': ntrks, 'ppq': division}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 0, 96], {'format': 0, 'tracks': 1, 'ppq': 96}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 2, 0, 96], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None)], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 105, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 128, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 127, 255], {'format': 0, 'tracks': 1, 'ppq': 32767})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| oracle 0 | {'format': 1, 'ppq': 480, 'tracks': 2} | {'format': 1, 'ppq': 480, 'tracks': 2} | Passed |
| oracle 1 | {'format': 0, 'ppq': 96, 'tracks': 1} | {'format': 0, 'ppq': 96, 'tracks': 1} | Passed |
| oracle 2 | None | None | Passed |
| oracle 3 | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | Passed |
| oracle 4 | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | Passed |
| oracle 5 | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | Passed |
| oracle 6 | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | Passed |
| oracle 7 | None | {'format': 1, 'ppq': 480, 'tracks': 2} | Failed |
SHA-256 / 2f329d7460c0cdd7dff9f58e00daa367a3867ac73d4ff6ed6383d8142ad1b5da
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
if not isinstance(x, list) or len(x) < 14 or x[:4] != [77, 84, 104, 100]:
return None
length = (x[4] << 24) | (x[5] << 16) | (x[6] << 8) | x[7]
if length < 6 or len(x) < 8 + length:
return None
fmt = (x[8] << 8) | x[9]
ntrks = (x[10] << 8) | x[11]
division = (x[12] << 8) | x[13]
if fmt not in (0, 1, 2) or ntrks == 0 or (fmt == 0 and ntrks != 1):
return None
if division & 0x8000:
fps = 256 - x[12]
if fps not in (24, 25, 29, 30):
return None
return {'format': fmt, 'tracks': ntrks, 'fps': fps, 'ticks_per_frame': x[13]}
if division == 0:
return None
return {'format': fmt, 'tracks': ntrks, 'ppq': division}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 0, 96], {'format': 0, 'tracks': 1, 'ppq': 96}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 2, 0, 96], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 3, 231, 40], {'format': 1, 'tracks': 3, 'fps': 25, 'ticks_per_frame': 40}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 232, 80], {'format': 1, 'tracks': 1, 'fps': 24, 'ticks_per_frame': 80}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 227, 4], {'format': 1, 'tracks': 1, 'fps': 29, 'ticks_per_frame': 4}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 226, 100], {'format': 1, 'tracks': 1, 'fps': 30, 'ticks_per_frame': 100}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 1, 230, 4], None), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None)], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 5, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 1, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 3, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 104, 100, 0, 0, 0, 7, 0, 1, 0, 2, 1, 224, 9], {'format': 1, 'tracks': 2, 'ppq': 480})], [([77, 84, 104, 100, 0, 0, 0, 8, 0, 1, 0, 2, 1, 224, 0, 0], {'format': 1, 'tracks': 2, 'ppq': 480}), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 0, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 0, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 2, 0, 5, 0, 120], {'format': 2, 'tracks': 5, 'ppq': 120}), ([77, 84, 105, 100, 0, 0, 0, 6, 0, 1, 0, 2, 1, 224], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 1, 0, 2, 128, 0], None), ([77, 84, 104, 100, 0, 0, 0, 6, 0, 0, 0, 1, 127, 255], {'format': 0, 'tracks': 1, 'ppq': 32767})]]
for i, (args, expected) in enumerate(fixtures[N-1]):
check("oracle %d" % i, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| oracle 0 | {'format': 1, 'ppq': 480, 'tracks': 2} | {'format': 1, 'ppq': 480, 'tracks': 2} | Passed |
| oracle 1 | {'format': 0, 'ppq': 96, 'tracks': 1} | {'format': 0, 'ppq': 96, 'tracks': 1} | Passed |
| oracle 2 | None | None | Passed |
| oracle 3 | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | {'format': 1, 'fps': 25, 'ticks_per_frame': 40, 'tracks': 3} | Passed |
| oracle 4 | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | {'format': 1, 'fps': 24, 'ticks_per_frame': 80, 'tracks': 1} | Passed |
| oracle 5 | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | {'format': 1, 'fps': 29, 'ticks_per_frame': 4, 'tracks': 1} | Passed |
| oracle 6 | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | {'format': 1, 'fps': 30, 'ticks_per_frame': 100, 'tracks': 1} | Passed |
| oracle 7 | {'format': 1, 'ppq': 480, 'tracks': 2} | {'format': 1, 'ppq': 480, 'tracks': 2} | Passed |
SHA-256 / 1b2ec6d3893f0e305c30ef85c70d4b4c07c04159b3224180f508593ac68e5375
Verification & scope
A deterministic bounded teaching model with a stipulated toy contract; it is not a complete Standard MIDI File or MIDI 1.0/2.0 implementation. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:50:02.537262+00:00.
Case digest / 69bcc0dcf042309bdbe14e1755826f410795f3546412e48daca724254303d21c