FAILURE MAP
← Case archive

FA-26661 / HTTP ranges / Open access

Unsupported range units fall back to the full representation · case 01

Unsupported range units fall back to the full representation.

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

ROOT CAUSE

The range-unsupported-unit-ignore decision uses return [206,part].

VERIFIED REPAIR

Apply the bounded decision exactly: return [206,part] if unit=="bytes" else [200,full]

Unsuccessful approach: The partial repair uses return [416,""] if unit!="bytes" else [206,part], which still violates the stated contract.

Case contract

This server implements only bytes. Unknown units are ignored with [200,full], bytes returns [206,part]. Unit tokens are already lowercase.

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(unit, full, part):
    return [206,part]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('range-unsupported-unit-ignore fixture 0', solve("items","f"*N,"p"), [200,"f"*N])
check('range-unsupported-unit-ignore fixture 1', solve("bytes","fff","p"*N), [206,"p"*N])
check('range-unsupported-unit-ignore fixture 2', solve("other","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 3', solve("","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 4', solve("bytes","",""), [206,""])
check('range-unsupported-unit-ignore fixture 5', solve("lines","",""), [200,""])
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
range-unsupported-unit-ignore fixture 0[206, 'p'][200, 'f']Failed
range-unsupported-unit-ignore fixture 1[206, 'p'][206, 'p']Passed
range-unsupported-unit-ignore fixture 2[206, 'b'][200, 'abc']Failed
range-unsupported-unit-ignore fixture 3[206, 'b'][200, 'abc']Failed
range-unsupported-unit-ignore fixture 4[206, ''][206, '']Passed
range-unsupported-unit-ignore fixture 5[206, ''][200, '']Failed

SHA-256 / 1481fbbde6aea8348421e1ce78d9414ae7f1c8fa794c961d41b1b2e15b5e2637

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(unit, full, part):
    return [416,""] if unit!="bytes" else [206,part]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('range-unsupported-unit-ignore fixture 0', solve("items","f"*N,"p"), [200,"f"*N])
check('range-unsupported-unit-ignore fixture 1', solve("bytes","fff","p"*N), [206,"p"*N])
check('range-unsupported-unit-ignore fixture 2', solve("other","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 3', solve("","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 4', solve("bytes","",""), [206,""])
check('range-unsupported-unit-ignore fixture 5', solve("lines","",""), [200,""])
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
range-unsupported-unit-ignore fixture 0[416, ''][200, 'f']Failed
range-unsupported-unit-ignore fixture 1[206, 'p'][206, 'p']Passed
range-unsupported-unit-ignore fixture 2[416, ''][200, 'abc']Failed
range-unsupported-unit-ignore fixture 3[416, ''][200, 'abc']Failed
range-unsupported-unit-ignore fixture 4[206, ''][206, '']Passed
range-unsupported-unit-ignore fixture 5[416, ''][200, '']Failed

SHA-256 / 5484be74762cc9c4503b760015541fd09fe1b03bf4d6321c5e2d3b4264144ad4

3 / The verified repair

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

N = 1
observations = []
def solve(unit, full, part):
    return [206,part] if unit=="bytes" else [200,full]
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('range-unsupported-unit-ignore fixture 0', solve("items","f"*N,"p"), [200,"f"*N])
check('range-unsupported-unit-ignore fixture 1', solve("bytes","fff","p"*N), [206,"p"*N])
check('range-unsupported-unit-ignore fixture 2', solve("other","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 3', solve("","abc","b"), [200,"abc"])
check('range-unsupported-unit-ignore fixture 4', solve("bytes","",""), [206,""])
check('range-unsupported-unit-ignore fixture 5', solve("lines","",""), [200,""])
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
range-unsupported-unit-ignore fixture 0[200, 'f'][200, 'f']Passed
range-unsupported-unit-ignore fixture 1[206, 'p'][206, 'p']Passed
range-unsupported-unit-ignore fixture 2[200, 'abc'][200, 'abc']Passed
range-unsupported-unit-ignore fixture 3[200, 'abc'][200, 'abc']Passed
range-unsupported-unit-ignore fixture 4[206, ''][206, '']Passed
range-unsupported-unit-ignore fixture 5[200, ''][200, '']Passed

SHA-256 / 3731ad10faa40920332c218736582b63b66e0caf584a4a9cdd7e9509c09d442f

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

Case digest / f89734c1ce26f14f754ed876950febed30ebd8e1dcce5f5cf984d83925cfce94