FAILURE MAP
← Case archive

FA-26821 / HTTP ranges / Open access

End-of-stream without a closing delimiter leaves the response incomplete · case 01

End-of-stream without a closing delimiter leaves the response incomplete.

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

ROOT CAUSE

The multipart-client-close-required decision uses return ["complete",parts] if eof else ["waiting",parts].

VERIFIED REPAIR

Apply the bounded decision exactly: return ["complete",parts] if close_seen else (["truncated",[]] if eof else ["waiting",parts])

Unsuccessful approach: The partial repair uses return ["complete",parts] if close_seen else ["waiting",parts], which still violates the stated contract.

Case contract

Return [complete,parts] only after closing delimiter; EOF without close is [truncated,empty], otherwise [waiting,parts].

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(parts, close_seen, eof):
    return ["complete",parts] if eof else ["waiting",parts]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-close-required fixture 0', solve( ["p"*N],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 1', solve(["p"],True,False), ["complete",["p"]])
check('multipart-client-close-required fixture 2', solve(["p"],False,False), ["waiting",["p"]])
check('multipart-client-close-required fixture 3', solve([],True,True), ["complete",[]])
check('multipart-client-close-required fixture 4', solve([],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 5', solve(["a","b"],True,True), ["complete",["a","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-close-required fixture 0['complete', ['p']]['truncated', []]Failed
multipart-client-close-required fixture 1['waiting', ['p']]['complete', ['p']]Failed
multipart-client-close-required fixture 2['waiting', ['p']]['waiting', ['p']]Passed
multipart-client-close-required fixture 3['complete', []]['complete', []]Passed
multipart-client-close-required fixture 4['complete', []]['truncated', []]Failed
multipart-client-close-required fixture 5['complete', ['a', 'b']]['complete', ['a', 'b']]Passed

SHA-256 / 57250bc745e9276fffadef8ce8a7f589b507ac53d26b3f90817169592a5be2c1

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(parts, close_seen, eof):
    return ["complete",parts] if close_seen else ["waiting",parts]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-close-required fixture 0', solve( ["p"*N],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 1', solve(["p"],True,False), ["complete",["p"]])
check('multipart-client-close-required fixture 2', solve(["p"],False,False), ["waiting",["p"]])
check('multipart-client-close-required fixture 3', solve([],True,True), ["complete",[]])
check('multipart-client-close-required fixture 4', solve([],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 5', solve(["a","b"],True,True), ["complete",["a","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-close-required fixture 0['waiting', ['p']]['truncated', []]Failed
multipart-client-close-required fixture 1['complete', ['p']]['complete', ['p']]Passed
multipart-client-close-required fixture 2['waiting', ['p']]['waiting', ['p']]Passed
multipart-client-close-required fixture 3['complete', []]['complete', []]Passed
multipart-client-close-required fixture 4['waiting', []]['truncated', []]Failed
multipart-client-close-required fixture 5['complete', ['a', 'b']]['complete', ['a', 'b']]Passed

SHA-256 / f37961dfe6787702e82a177e71436ab13366086b374d2d873584fc5b43381952

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(parts, close_seen, eof):
    return ["complete",parts] if close_seen else (["truncated",[]] if eof else ["waiting",parts])
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('multipart-client-close-required fixture 0', solve( ["p"*N],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 1', solve(["p"],True,False), ["complete",["p"]])
check('multipart-client-close-required fixture 2', solve(["p"],False,False), ["waiting",["p"]])
check('multipart-client-close-required fixture 3', solve([],True,True), ["complete",[]])
check('multipart-client-close-required fixture 4', solve([],False,True), ["truncated",[]])
check('multipart-client-close-required fixture 5', solve(["a","b"],True,True), ["complete",["a","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-close-required fixture 0['truncated', []]['truncated', []]Passed
multipart-client-close-required fixture 1['complete', ['p']]['complete', ['p']]Passed
multipart-client-close-required fixture 2['waiting', ['p']]['waiting', ['p']]Passed
multipart-client-close-required fixture 3['complete', []]['complete', []]Passed
multipart-client-close-required fixture 4['truncated', []]['truncated', []]Passed
multipart-client-close-required fixture 5['complete', ['a', 'b']]['complete', ['a', 'b']]Passed

SHA-256 / eb85db0c4278b49b85af485293097f48b089e1949b366837418109d07f9d0649

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.405841+00:00.

Case digest / 6fe06ad3e49fa4ff505cc5c90179fa0632011dd1082de9edc9f88ceac4463fcb