FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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