FA-26481 / HTTP ranges / Open access
A short part read prevents emission of a successful closing delimiter · case 01
A short part read prevents emission of a successful closing delimiter.
ROOT CAUSE
The multipart-short-read-abort decision uses return "complete".
VERIFIED REPAIR
Apply the bounded decision exactly: return "complete" if len(expected_lengths)==len(bodies) and all(len(b)==n for n,b in zip(expected_lengths,bodies)) else "abort"
Unsuccessful approach: The partial repair uses return "complete" if all(len(b)>=n for n,b in zip(expected_lengths,bodies)) else "abort", which still violates the stated contract.
Case contract
Return complete only when each part has exactly its promised ASCII byte length and the part counts match; otherwise abort. Empty part list is complete.
Why this case matters
Range responses combine representation identity, conditional requests, framing, and partial-object state.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(expected_lengths, bodies):
return "complete"
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-short-read-abort fixture 0', solve([N],["x"*(N-1)]), "abort")
check('multipart-short-read-abort fixture 1', solve([N],["x"*(N+1)]), "abort")
check('multipart-short-read-abort fixture 2', solve([N],["x"*N]), "complete")
check('multipart-short-read-abort fixture 3', solve([1,1],["x"]), "abort")
check('multipart-short-read-abort fixture 4', solve([],[]), "complete")
check('multipart-short-read-abort fixture 5', solve([0],[""]), "complete")
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 |
|---|---|---|---|
| multipart-short-read-abort fixture 0 | complete | abort | Failed |
| multipart-short-read-abort fixture 1 | complete | abort | Failed |
| multipart-short-read-abort fixture 2 | complete | complete | Passed |
| multipart-short-read-abort fixture 3 | complete | abort | Failed |
| multipart-short-read-abort fixture 4 | complete | complete | Passed |
| multipart-short-read-abort fixture 5 | complete | complete | Passed |
SHA-256 / 1744a09a343cc7783439bf7054d1b2eb643d9bc7dfcac2a792586d572d7d2332
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(expected_lengths, bodies):
return "complete" if all(len(b)>=n for n,b in zip(expected_lengths,bodies)) else "abort"
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-short-read-abort fixture 0', solve([N],["x"*(N-1)]), "abort")
check('multipart-short-read-abort fixture 1', solve([N],["x"*(N+1)]), "abort")
check('multipart-short-read-abort fixture 2', solve([N],["x"*N]), "complete")
check('multipart-short-read-abort fixture 3', solve([1,1],["x"]), "abort")
check('multipart-short-read-abort fixture 4', solve([],[]), "complete")
check('multipart-short-read-abort fixture 5', solve([0],[""]), "complete")
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 |
|---|---|---|---|
| multipart-short-read-abort fixture 0 | abort | abort | Passed |
| multipart-short-read-abort fixture 1 | complete | abort | Failed |
| multipart-short-read-abort fixture 2 | complete | complete | Passed |
| multipart-short-read-abort fixture 3 | complete | abort | Failed |
| multipart-short-read-abort fixture 4 | complete | complete | Passed |
| multipart-short-read-abort fixture 5 | complete | complete | Passed |
SHA-256 / d9176f539f6d3d2e133fa15f9d26d4321cfb48643f157989cd39b94c33ed4fae
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(expected_lengths, bodies):
return "complete" if len(expected_lengths)==len(bodies) and all(len(b)==n for n,b in zip(expected_lengths,bodies)) else "abort"
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-short-read-abort fixture 0', solve([N],["x"*(N-1)]), "abort")
check('multipart-short-read-abort fixture 1', solve([N],["x"*(N+1)]), "abort")
check('multipart-short-read-abort fixture 2', solve([N],["x"*N]), "complete")
check('multipart-short-read-abort fixture 3', solve([1,1],["x"]), "abort")
check('multipart-short-read-abort fixture 4', solve([],[]), "complete")
check('multipart-short-read-abort fixture 5', solve([0],[""]), "complete")
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 |
|---|---|---|---|
| multipart-short-read-abort fixture 0 | abort | abort | Passed |
| multipart-short-read-abort fixture 1 | abort | abort | Passed |
| multipart-short-read-abort fixture 2 | complete | complete | Passed |
| multipart-short-read-abort fixture 3 | abort | abort | Passed |
| multipart-short-read-abort fixture 4 | complete | complete | Passed |
| multipart-short-read-abort fixture 5 | complete | complete | Passed |
SHA-256 / cd861497575467c1f43fd89b8c15b0a97e5d41eb772d6231bf57fc4c473675bd
Verification & scope
Deterministic simplified range service, with stipulated local policies and already parsed trusted inputs; not a complete HTTP 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:41:16.320149+00:00.
Case digest / 918c0bdc0f40185b1824bd19dfd1bc1a71a6abca3a8316956450a31ef67f9faf