FA-81366 / MIDI event timing / Open access
Variable-length quantity stream decoder: five-byte quantity accepted · case 01
A malformed five-byte quantity is decoded as a 35-bit value instead of being rejected.
ROOT CAUSE
The length guard fires only after a fifth continuation byte.
VERIFIED REPAIR
Restore the maximum length step so that it reads `count == 4`.
Unsuccessful approach: Firing at the third byte rejects legal four-byte quantities such as [255,255,255,127].
Case contract
Input a list of byte values. Decode consecutive variable-length quantities (7 data bits per byte, bit 7 = continuation, most significant first, at most 4 bytes each). Return the list of values; return None for a byte outside 0..255, a quantity whose fourth byte still has the continuation bit, or a truncated final quantity.
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):
return None
values = []
cur = 0
count = 0
for b in x:
if not isinstance(b, int) or b < 0 or b > 255:
return None
cur = (cur << 7) | (b & 0x7F)
count += 1
if b & 0x80:
if count == 5:
return None
continue
values.append(cur)
cur = 0
count = 0
if count:
return None
return values
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([0], [0]), ([127], [127]), ([129, 0], [128]), ([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([129], None)], [([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 255, 127], None), ([129], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([128, 128, 128, 0], [0])], [([255, 255, 255, 255, 127], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([], []), ([256], None), ([-1], None), ([143, 255, 255, 127], [33554431])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([], []), ([256], None), ([-1], None), ([131, 255, 127, 0], [65535, 0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([131, 255, 127, 0], [65535, 0]), ([128, 128, 128, 0], [0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128]), ([1, 2, 3], [1, 2, 3]), ([134, 141, 32], [100000])]]
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 | [0] | [0] | Passed |
| oracle 1 | [127] | [127] | Passed |
| oracle 2 | [128] | [128] | Passed |
| oracle 3 | [8192] | [8192] | Passed |
| oracle 4 | [16384] | [16384] | Passed |
| oracle 5 | [268435455] | [268435455] | Passed |
| oracle 6 | [34359738367] | None | Failed |
| oracle 7 | None | None | Passed |
SHA-256 / 7f5f44428c5586c3743f55c6c3d714a024cc0b58fc19bf7169e872c40bed7084
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):
return None
values = []
cur = 0
count = 0
for b in x:
if not isinstance(b, int) or b < 0 or b > 255:
return None
cur = (cur << 7) | (b & 0x7F)
count += 1
if b & 0x80:
if count == 3:
return None
continue
values.append(cur)
cur = 0
count = 0
if count:
return None
return values
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([0], [0]), ([127], [127]), ([129, 0], [128]), ([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([129], None)], [([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 255, 127], None), ([129], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([128, 128, 128, 0], [0])], [([255, 255, 255, 255, 127], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([], []), ([256], None), ([-1], None), ([143, 255, 255, 127], [33554431])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([], []), ([256], None), ([-1], None), ([131, 255, 127, 0], [65535, 0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([131, 255, 127, 0], [65535, 0]), ([128, 128, 128, 0], [0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128]), ([1, 2, 3], [1, 2, 3]), ([134, 141, 32], [100000])]]
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 | [0] | [0] | Passed |
| oracle 1 | [127] | [127] | Passed |
| oracle 2 | [128] | [128] | Passed |
| oracle 3 | [8192] | [8192] | Passed |
| oracle 4 | [16384] | [16384] | Passed |
| oracle 5 | None | [268435455] | Failed |
| oracle 6 | None | None | Passed |
| oracle 7 | None | None | Passed |
SHA-256 / 82ea11815ed74cc9606577f36d3a7c15762768281d67091bddaaa405765d7ed4
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):
return None
values = []
cur = 0
count = 0
for b in x:
if not isinstance(b, int) or b < 0 or b > 255:
return None
cur = (cur << 7) | (b & 0x7F)
count += 1
if b & 0x80:
if count == 4:
return None
continue
values.append(cur)
cur = 0
count = 0
if count:
return None
return values
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[([0], [0]), ([127], [127]), ([129, 0], [128]), ([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([129], None)], [([192, 0], [8192]), ([129, 128, 0], [16384]), ([255, 255, 255, 255, 127], None), ([129], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([128, 128, 128, 0], [0])], [([255, 255, 255, 255, 127], None), ([0, 129, 0, 5], [0, 128, 5]), ([129, 0, 0, 129, 0], [128, 0, 128]), ([200, 1, 2], [9217, 2]), ([], []), ([256], None), ([-1], None), ([143, 255, 255, 127], [33554431])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([], []), ([256], None), ([-1], None), ([131, 255, 127, 0], [65535, 0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128])], [([255, 255, 255, 127], [268435455]), ([255, 255, 255, 255, 127], None), ([131, 255, 127, 0], [65535, 0]), ([128, 128, 128, 0], [0]), ([128, 0], [0]), ([129, 0, 129, 0, 129, 0], [128, 128, 128]), ([1, 2, 3], [1, 2, 3]), ([134, 141, 32], [100000])]]
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 | [0] | [0] | Passed |
| oracle 1 | [127] | [127] | Passed |
| oracle 2 | [128] | [128] | Passed |
| oracle 3 | [8192] | [8192] | Passed |
| oracle 4 | [16384] | [16384] | Passed |
| oracle 5 | [268435455] | [268435455] | Passed |
| oracle 6 | None | None | Passed |
| oracle 7 | None | None | Passed |
SHA-256 / bbb58f425391c836381795fdb3fa10444bb46317d187b6c99b076e0ecb2519b8
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.448333+00:00.
Case digest / 4481ef34fee5c90285659e4a06919191e67fe92350bd8d7d1f86909e35f56e1b