FA-26791 / HTTP ranges / Open access
Multipart boundary detection retains an incomplete delimiter suffix across reads · case 01
Multipart boundary detection retains an incomplete delimiter suffix across reads.
ROOT CAUSE
The multipart-client-delimiter-split decision uses p=chunk.find(marker) return [chunk[:p],chunk[p+len(marker):]] if p>=0 else ["",chunk].
VERIFIED REPAIR
Apply the bounded decision exactly: s=tail+chunk p=s.find(marker) return [s[:p],s[p+len(marker):]] if p>=0 else ["",s]
Unsuccessful approach: The partial repair uses s=tail+chunk p=s.find(marker) return [s[:p],s[p+len(marker):]] if p>=0 else [s,""], which still violates the stated contract.
Case contract
Return [complete-prefix,remainder] split at first complete marker in tail+chunk; if absent preserve the entire data as remainder for this bounded buffering model.
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(tail, chunk, marker):
p=chunk.find(marker)
return [chunk[:p],chunk[p+len(marker):]] if p>=0 else ["",chunk]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-delimiter-split fixture 0', solve("a"*N+"--","bX","--b"), ["a"*N,"X"])
check('multipart-client-delimiter-split fixture 1', solve("a","b","--b"), ["","ab"])
check('multipart-client-delimiter-split fixture 2', solve("","abc--bZ","--b"), ["abc","Z"])
check('multipart-client-delimiter-split fixture 3', solve("","","--b"), ["",""])
check('multipart-client-delimiter-split fixture 4', solve("--b","X","--b"), ["","X"])
check('multipart-client-delimiter-split fixture 5', solve("x","--b--b","--b"), ["x","--b"])
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-client-delimiter-split fixture 0 | ['', 'bX'] | ['a', 'X'] | Failed |
| multipart-client-delimiter-split fixture 1 | ['', 'b'] | ['', 'ab'] | Failed |
| multipart-client-delimiter-split fixture 2 | ['abc', 'Z'] | ['abc', 'Z'] | Passed |
| multipart-client-delimiter-split fixture 3 | ['', ''] | ['', ''] | Passed |
| multipart-client-delimiter-split fixture 4 | ['', 'X'] | ['', 'X'] | Passed |
| multipart-client-delimiter-split fixture 5 | ['', '--b'] | ['x', '--b'] | Failed |
SHA-256 / 3c9a9ae611088fa54c2b55a01a5baec3d4fab365e811333338a7eaa5e135a15e
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(tail, chunk, marker):
s=tail+chunk
p=s.find(marker)
return [s[:p],s[p+len(marker):]] if p>=0 else [s,""]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-delimiter-split fixture 0', solve("a"*N+"--","bX","--b"), ["a"*N,"X"])
check('multipart-client-delimiter-split fixture 1', solve("a","b","--b"), ["","ab"])
check('multipart-client-delimiter-split fixture 2', solve("","abc--bZ","--b"), ["abc","Z"])
check('multipart-client-delimiter-split fixture 3', solve("","","--b"), ["",""])
check('multipart-client-delimiter-split fixture 4', solve("--b","X","--b"), ["","X"])
check('multipart-client-delimiter-split fixture 5', solve("x","--b--b","--b"), ["x","--b"])
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-client-delimiter-split fixture 0 | ['a', 'X'] | ['a', 'X'] | Passed |
| multipart-client-delimiter-split fixture 1 | ['ab', ''] | ['', 'ab'] | Failed |
| multipart-client-delimiter-split fixture 2 | ['abc', 'Z'] | ['abc', 'Z'] | Passed |
| multipart-client-delimiter-split fixture 3 | ['', ''] | ['', ''] | Passed |
| multipart-client-delimiter-split fixture 4 | ['', 'X'] | ['', 'X'] | Passed |
| multipart-client-delimiter-split fixture 5 | ['x', '--b'] | ['x', '--b'] | Passed |
SHA-256 / c2ee401f4213745f709deba793438c72dba71d6cfcd1943d1ac0cefcf50a62ed
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(tail, chunk, marker):
s=tail+chunk
p=s.find(marker)
return [s[:p],s[p+len(marker):]] if p>=0 else ["",s]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-delimiter-split fixture 0', solve("a"*N+"--","bX","--b"), ["a"*N,"X"])
check('multipart-client-delimiter-split fixture 1', solve("a","b","--b"), ["","ab"])
check('multipart-client-delimiter-split fixture 2', solve("","abc--bZ","--b"), ["abc","Z"])
check('multipart-client-delimiter-split fixture 3', solve("","","--b"), ["",""])
check('multipart-client-delimiter-split fixture 4', solve("--b","X","--b"), ["","X"])
check('multipart-client-delimiter-split fixture 5', solve("x","--b--b","--b"), ["x","--b"])
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-client-delimiter-split fixture 0 | ['a', 'X'] | ['a', 'X'] | Passed |
| multipart-client-delimiter-split fixture 1 | ['', 'ab'] | ['', 'ab'] | Passed |
| multipart-client-delimiter-split fixture 2 | ['abc', 'Z'] | ['abc', 'Z'] | Passed |
| multipart-client-delimiter-split fixture 3 | ['', ''] | ['', ''] | Passed |
| multipart-client-delimiter-split fixture 4 | ['', 'X'] | ['', 'X'] | Passed |
| multipart-client-delimiter-split fixture 5 | ['x', '--b'] | ['x', '--b'] | Passed |
SHA-256 / a22c2ec53acef105bc78384a662771443927e047615017679ad674925f04f7ed
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:19.180360+00:00.
Case digest / 327d4af10fd08fba3d695f5748b72dcb7a645b83afa1158756249c8b844694fd