FAILURE MAP
← Case archive

FA-26371 / HTTP ranges / Open access

Full-response fallback removes partial Content-Range metadata · case 01

Full-response fallback removes partial Content-Range metadata.

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

ROOT CAUSE

The if-range-fallback-clears-range-headers decision uses return [206,part,range_header] if validator_ok else [200,full,range_header].

VERIFIED REPAIR

Apply the bounded decision exactly: return [206,part,range_header] if validator_ok else [200,full,None]

Unsuccessful approach: The partial repair uses return [206,part,range_header] if validator_ok else [200,full,""], which still violates the stated contract.

Case contract

Return [status,body,Content-Range-or-null]. Failed If-Range sends the full body and no Content-Range.

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(validator_ok, full, part, range_header):
    return [206,part,range_header] if validator_ok else [200,full,range_header]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('if-range-fallback-clears-range-headers fixture 0', solve(False,"f"*N,"p","bytes 0-0/9"), [200,"f"*N,None])
check('if-range-fallback-clears-range-headers fixture 1', solve(False,"","","bytes */0"), [200,"",None])
check('if-range-fallback-clears-range-headers fixture 2', solve(True,"fff","p","bytes 0-0/3"), [206,"p","bytes 0-0/3"])
check('if-range-fallback-clears-range-headers fixture 3', solve(True,"f"*N,"p"*N,"r"), [206,"p"*N,"r"])
check('if-range-fallback-clears-range-headers fixture 4', solve(False,"abc","b","r"), [200,"abc",None])
check('if-range-fallback-clears-range-headers fixture 5', solve(True,"f","","r"), [206,"","r"])
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
if-range-fallback-clears-range-headers fixture 0[200, 'f', 'bytes 0-0/9'][200, 'f', None]Failed
if-range-fallback-clears-range-headers fixture 1[200, '', 'bytes */0'][200, '', None]Failed
if-range-fallback-clears-range-headers fixture 2[206, 'p', 'bytes 0-0/3'][206, 'p', 'bytes 0-0/3']Passed
if-range-fallback-clears-range-headers fixture 3[206, 'p', 'r'][206, 'p', 'r']Passed
if-range-fallback-clears-range-headers fixture 4[200, 'abc', 'r'][200, 'abc', None]Failed
if-range-fallback-clears-range-headers fixture 5[206, '', 'r'][206, '', 'r']Passed

SHA-256 / f57357a15b12d2f9b992ffd87f86196410cfa7a1bf57cba67581f33181e97425

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(validator_ok, full, part, range_header):
    return [206,part,range_header] if validator_ok else [200,full,""]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('if-range-fallback-clears-range-headers fixture 0', solve(False,"f"*N,"p","bytes 0-0/9"), [200,"f"*N,None])
check('if-range-fallback-clears-range-headers fixture 1', solve(False,"","","bytes */0"), [200,"",None])
check('if-range-fallback-clears-range-headers fixture 2', solve(True,"fff","p","bytes 0-0/3"), [206,"p","bytes 0-0/3"])
check('if-range-fallback-clears-range-headers fixture 3', solve(True,"f"*N,"p"*N,"r"), [206,"p"*N,"r"])
check('if-range-fallback-clears-range-headers fixture 4', solve(False,"abc","b","r"), [200,"abc",None])
check('if-range-fallback-clears-range-headers fixture 5', solve(True,"f","","r"), [206,"","r"])
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
if-range-fallback-clears-range-headers fixture 0[200, 'f', ''][200, 'f', None]Failed
if-range-fallback-clears-range-headers fixture 1[200, '', ''][200, '', None]Failed
if-range-fallback-clears-range-headers fixture 2[206, 'p', 'bytes 0-0/3'][206, 'p', 'bytes 0-0/3']Passed
if-range-fallback-clears-range-headers fixture 3[206, 'p', 'r'][206, 'p', 'r']Passed
if-range-fallback-clears-range-headers fixture 4[200, 'abc', ''][200, 'abc', None]Failed
if-range-fallback-clears-range-headers fixture 5[206, '', 'r'][206, '', 'r']Passed

SHA-256 / f20bab9e1c47ec38d789ff42f8653ab3563667d10996ca524609b2f3983753d3

3 / The verified repair

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

N = 1
observations = []
def solve(validator_ok, full, part, range_header):
    return [206,part,range_header] if validator_ok else [200,full,None]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('if-range-fallback-clears-range-headers fixture 0', solve(False,"f"*N,"p","bytes 0-0/9"), [200,"f"*N,None])
check('if-range-fallback-clears-range-headers fixture 1', solve(False,"","","bytes */0"), [200,"",None])
check('if-range-fallback-clears-range-headers fixture 2', solve(True,"fff","p","bytes 0-0/3"), [206,"p","bytes 0-0/3"])
check('if-range-fallback-clears-range-headers fixture 3', solve(True,"f"*N,"p"*N,"r"), [206,"p"*N,"r"])
check('if-range-fallback-clears-range-headers fixture 4', solve(False,"abc","b","r"), [200,"abc",None])
check('if-range-fallback-clears-range-headers fixture 5', solve(True,"f","","r"), [206,"","r"])
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
if-range-fallback-clears-range-headers fixture 0[200, 'f', None][200, 'f', None]Passed
if-range-fallback-clears-range-headers fixture 1[200, '', None][200, '', None]Passed
if-range-fallback-clears-range-headers fixture 2[206, 'p', 'bytes 0-0/3'][206, 'p', 'bytes 0-0/3']Passed
if-range-fallback-clears-range-headers fixture 3[206, 'p', 'r'][206, 'p', 'r']Passed
if-range-fallback-clears-range-headers fixture 4[200, 'abc', None][200, 'abc', None]Passed
if-range-fallback-clears-range-headers fixture 5[206, '', 'r'][206, '', 'r']Passed

SHA-256 / de93aced6baccff9e82aff307fdb1c1bd1207bc3cf9eb192ee83345113e5e5dd

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

Case digest / 8f3a9ab474c59d2cf3ed0a1fd7c1cad283751bf82f515123476f59500e1bbcde