FA-26466 / HTTP ranges / Open access
Multipart Content-Length includes headers and closing bytes · case 01
Multipart Content-Length includes headers and closing bytes.
ROOT CAUSE
The multipart-length-includes-framing decision uses return sum(map(len,payloads)).
VERIFIED REPAIR
Apply the bounded decision exactly: return sum(map(len,headers))+sum(map(len,payloads))+len(closing)
Unsuccessful approach: The partial repair uses return sum(map(len,headers))+sum(map(len,payloads)), which still violates the stated contract.
Case contract
Inputs are ASCII strings, with each header already including its separator and each payload already including its trailing framing CRLF. Return total wire length.
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(headers, payloads, closing):
return sum(map(len,payloads))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-length-includes-framing fixture 0', solve( ["h"*N],["p"*N],"end"), 2*N+3)
check('multipart-length-includes-framing fixture 1', solve([],[],"end"), 3)
check('multipart-length-includes-framing fixture 2', solve(["ab","c"],["de","f"],"x"), 7)
check('multipart-length-includes-framing fixture 3', solve([""],[""],""), 0)
check('multipart-length-includes-framing fixture 4', solve(["h"],[""],"x"), 2)
check('multipart-length-includes-framing fixture 5', solve([""],["pp"],"x"), 3)
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-length-includes-framing fixture 0 | 1 | 5 | Failed |
| multipart-length-includes-framing fixture 1 | 0 | 3 | Failed |
| multipart-length-includes-framing fixture 2 | 3 | 7 | Failed |
| multipart-length-includes-framing fixture 3 | 0 | 0 | Passed |
| multipart-length-includes-framing fixture 4 | 0 | 2 | Failed |
| multipart-length-includes-framing fixture 5 | 2 | 3 | Failed |
SHA-256 / a1cf46171fe5e648f9f5cef5e1347f5259af64dc0d6f75609d2a20683098a3a0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(headers, payloads, closing):
return sum(map(len,headers))+sum(map(len,payloads))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-length-includes-framing fixture 0', solve( ["h"*N],["p"*N],"end"), 2*N+3)
check('multipart-length-includes-framing fixture 1', solve([],[],"end"), 3)
check('multipart-length-includes-framing fixture 2', solve(["ab","c"],["de","f"],"x"), 7)
check('multipart-length-includes-framing fixture 3', solve([""],[""],""), 0)
check('multipart-length-includes-framing fixture 4', solve(["h"],[""],"x"), 2)
check('multipart-length-includes-framing fixture 5', solve([""],["pp"],"x"), 3)
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-length-includes-framing fixture 0 | 2 | 5 | Failed |
| multipart-length-includes-framing fixture 1 | 0 | 3 | Failed |
| multipart-length-includes-framing fixture 2 | 6 | 7 | Failed |
| multipart-length-includes-framing fixture 3 | 0 | 0 | Passed |
| multipart-length-includes-framing fixture 4 | 1 | 2 | Failed |
| multipart-length-includes-framing fixture 5 | 2 | 3 | Failed |
SHA-256 / 1dff714a91c72652674125d61b5b15945ef9752916efeeb35d02747830180556
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(headers, payloads, closing):
return sum(map(len,headers))+sum(map(len,payloads))+len(closing)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-length-includes-framing fixture 0', solve( ["h"*N],["p"*N],"end"), 2*N+3)
check('multipart-length-includes-framing fixture 1', solve([],[],"end"), 3)
check('multipart-length-includes-framing fixture 2', solve(["ab","c"],["de","f"],"x"), 7)
check('multipart-length-includes-framing fixture 3', solve([""],[""],""), 0)
check('multipart-length-includes-framing fixture 4', solve(["h"],[""],"x"), 2)
check('multipart-length-includes-framing fixture 5', solve([""],["pp"],"x"), 3)
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-length-includes-framing fixture 0 | 5 | 5 | Passed |
| multipart-length-includes-framing fixture 1 | 3 | 3 | Passed |
| multipart-length-includes-framing fixture 2 | 7 | 7 | Passed |
| multipart-length-includes-framing fixture 3 | 0 | 0 | Passed |
| multipart-length-includes-framing fixture 4 | 2 | 2 | Passed |
| multipart-length-includes-framing fixture 5 | 3 | 3 | Passed |
SHA-256 / 8761cfff4c97fd4466b4bb1a06da96f2e8e27b1f3cfdc8b316c27227898d7a37
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.287556+00:00.
Case digest / f4d7c5267e529ec40adc6a2d48fe1fabd8e5147d72132ebd9ed80a13cc2c0bc2