FA-27386 / HTTP ranges / Open access
A persisted partial-response cache record keeps byte coverage and revision metadata intact: envelope fragment count must consume the entire record payload · case 01
A persisted partial-response cache record keeps byte coverage and revision metadata intact: envelope fragment count must consume the entire record payload.
ROOT CAUSE
The partial-cache-record-trailing-record-data decision uses wire=x if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None if wire[:2]!=[82,71]: return None if wire[2]!=1: return None if wire[3]!=0: return None if sum(wire[:-1])%256!=wire[-1]: return None generation=wire[4]*256+wire[5] total=wire[6]*256+wire[7] count=wire[8] pos=9 parts=[] owned=set() for _ in range(count): if pos+3>len(wire)-1: return None offset=wire[pos]*256+wire[pos+1] size=wire[pos+2] pos+=3 if pos+size>len(wire)-1 or offset+size>total: return None if any(i in owned for i in range(offset,offset+size)): return None owned.update(range(offset,offset+size)) parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])]) pos+=size if pos>len(wire)-1: return None return [generation,total,parts].
VERIFIED REPAIR
Apply the bounded decision exactly: wire=x if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None if wire[:2]!=[82,71]: return None if wire[2]!=1: return None if wire[3]!=0: return None if sum(wire[:-1])%256!=wire[-1]: return None generation=wire[4]*256+wire[5] total=wire[6]*256+wire[7] count=wire[8] pos=9 parts=[] owned=set() for _ in range(count): if pos+3>len(wire)-1: return None offset=wire[pos]*256+wire[pos+1] size=wire[pos+2] pos+=3 if pos+size>len(wire)-1 or offset+size>total: return None if any(i in owned for i in range(offset,offset+size)): return None owned.update(range(offset,offset+size)) parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])]) pos+=size if pos!=len(wire)-1: return None return [generation,total,parts]
Unsuccessful approach: The partial repair uses wire=x if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None if wire[:2]!=[82,71]: return None if wire[2]!=1: return None if wire[3]!=0: return None if sum(wire[:-1])%256!=wire[-1]: return None generation=wire[4]*256+wire[5] total=wire[6]*256+wire[7] count=wire[8] pos=9 parts=[] owned=set() for _ in range(count): if pos+3>len(wire)-1: return None offset=wire[pos]*256+wire[pos+1] size=wire[pos+2] pos+=3 if pos+size>len(wire)-1 or offset+size>total: return None if any(i in owned for i in range(offset,offset+size)): return None owned.update(range(offset,offset+size)) parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])]) pos+=size if pos!=len(wire)-1 and count>0: return None return [generation,total,parts], which still violates the stated contract.
Case contract
Decode this stipulated local binary cache envelope: magic RG, version1, flags0, two-byte big-endian generation, two-byte big-endian complete length, one-byte fragment count, then fragments [two-byte big-endian offset,one-byte count,ASCII payload], followed by one checksum byte equal to sum of preceding bytes modulo256. Reject malformed envelopes, bytes outside0..255, trailing bytes, overlapping fragment ownership, or spans outside complete length. Return [generation,total,[[offset,payload],...]]. This is an invented bounded persistence format, not a public protocol.
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(x):
wire=x
if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None
if wire[:2]!=[82,71]: return None
if wire[2]!=1: return None
if wire[3]!=0: return None
if sum(wire[:-1])%256!=wire[-1]: return None
generation=wire[4]*256+wire[5]
total=wire[6]*256+wire[7]
count=wire[8]
pos=9
parts=[]
owned=set()
for _ in range(count):
if pos+3>len(wire)-1: return None
offset=wire[pos]*256+wire[pos+1]
size=wire[pos+2]
pos+=3
if pos+size>len(wire)-1 or offset+size>total: return None
if any(i in owned for i in range(offset,offset+size)): return None
owned.update(range(offset,offset+size))
parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])
pos+=size
if pos>len(wire)-1: return None
return [generation,total,parts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('trailing-record-data fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))
check('trailing-record-data fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))
check('trailing-record-data fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))
check('trailing-record-data fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))
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 |
|---|---|---|---|
| trailing-record-data fixture 0 | [257, 258, [[0, 'ab'], [256, 'cd']]] | [257, 258, [[0, 'ab'], [256, 'cd']]] | Passed |
| trailing-record-data fixture 1 | [0, 0, []] | [0, 0, []] | Passed |
| trailing-record-data fixture 2 | [1, 3, [[1, 'bc']]] | [1, 3, [[1, 'bc']]] | Passed |
| trailing-record-data fixture 3 | None | None | Passed |
| trailing-record-data fixture 4 | None | None | Passed |
| trailing-record-data fixture 5 | None | None | Passed |
| trailing-record-data fixture 6 | None | None | Passed |
| trailing-record-data fixture 7 | None | None | Passed |
| trailing-record-data fixture 8 | None | None | Passed |
| trailing-record-data fixture 9 | [0, 0, []] | None | Failed |
SHA-256 / 672ed2ce239f79eb89667a33f46656cf6731128d8d0a1777da13b83aea8dde68
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
wire=x
if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None
if wire[:2]!=[82,71]: return None
if wire[2]!=1: return None
if wire[3]!=0: return None
if sum(wire[:-1])%256!=wire[-1]: return None
generation=wire[4]*256+wire[5]
total=wire[6]*256+wire[7]
count=wire[8]
pos=9
parts=[]
owned=set()
for _ in range(count):
if pos+3>len(wire)-1: return None
offset=wire[pos]*256+wire[pos+1]
size=wire[pos+2]
pos+=3
if pos+size>len(wire)-1 or offset+size>total: return None
if any(i in owned for i in range(offset,offset+size)): return None
owned.update(range(offset,offset+size))
parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])
pos+=size
if pos!=len(wire)-1 and count>0: return None
return [generation,total,parts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('trailing-record-data fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))
check('trailing-record-data fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))
check('trailing-record-data fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))
check('trailing-record-data fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))
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 |
|---|---|---|---|
| trailing-record-data fixture 0 | [257, 258, [[0, 'ab'], [256, 'cd']]] | [257, 258, [[0, 'ab'], [256, 'cd']]] | Passed |
| trailing-record-data fixture 1 | [0, 0, []] | [0, 0, []] | Passed |
| trailing-record-data fixture 2 | [1, 3, [[1, 'bc']]] | [1, 3, [[1, 'bc']]] | Passed |
| trailing-record-data fixture 3 | None | None | Passed |
| trailing-record-data fixture 4 | None | None | Passed |
| trailing-record-data fixture 5 | None | None | Passed |
| trailing-record-data fixture 6 | None | None | Passed |
| trailing-record-data fixture 7 | None | None | Passed |
| trailing-record-data fixture 8 | None | None | Passed |
| trailing-record-data fixture 9 | [0, 0, []] | None | Failed |
SHA-256 / fbc995669a8b9edac468e41418050c5383ad642fca26319e61fb318314f4269e
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
wire=x
if len(wire)<10 or any(not 0<=b<=255 for b in wire): return None
if wire[:2]!=[82,71]: return None
if wire[2]!=1: return None
if wire[3]!=0: return None
if sum(wire[:-1])%256!=wire[-1]: return None
generation=wire[4]*256+wire[5]
total=wire[6]*256+wire[7]
count=wire[8]
pos=9
parts=[]
owned=set()
for _ in range(count):
if pos+3>len(wire)-1: return None
offset=wire[pos]*256+wire[pos+1]
size=wire[pos+2]
pos+=3
if pos+size>len(wire)-1 or offset+size>total: return None
if any(i in owned for i in range(offset,offset+size)): return None
owned.update(range(offset,offset+size))
parts.append([offset,''.join(chr(b) for b in wire[pos:pos+size])])
pos+=size
if pos!=len(wire)-1: return None
return [generation,total,parts]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('trailing-record-data fixture 0', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,1,N,1,2,2,0,0,2,97,98,1,0,2,99,100])))), json.loads(json.dumps([256+N,258,[[0,'ab'],[256,'cd']]])))
check('trailing-record-data fixture 1', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0])))), json.loads(json.dumps([0,0,[]])))
check('trailing-record-data fixture 2', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,1,0,3,1,0,1,2,98,99])))), json.loads(json.dumps([1,3,[[1,'bc']]])))
check('trailing-record-data fixture 3', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,70,1,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 4', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,2,0,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 5', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,1,0,0,0,0,0])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 6', json.loads(json.dumps(solve([82,71,1,0,0,0,0,0,0,0]))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 7', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,1,1,0,0,2,97,98])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 8', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,2,2,0,0,1,97,0,0,1,97])))), json.loads(json.dumps(None)))
check('trailing-record-data fixture 9', json.loads(json.dumps(solve((lambda w:w+[sum(w)%256])([82,71,1,0,0,0,0,0,0,99])))), json.loads(json.dumps(None)))
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 |
|---|---|---|---|
| trailing-record-data fixture 0 | [257, 258, [[0, 'ab'], [256, 'cd']]] | [257, 258, [[0, 'ab'], [256, 'cd']]] | Passed |
| trailing-record-data fixture 1 | [0, 0, []] | [0, 0, []] | Passed |
| trailing-record-data fixture 2 | [1, 3, [[1, 'bc']]] | [1, 3, [[1, 'bc']]] | Passed |
| trailing-record-data fixture 3 | None | None | Passed |
| trailing-record-data fixture 4 | None | None | Passed |
| trailing-record-data fixture 5 | None | None | Passed |
| trailing-record-data fixture 6 | None | None | Passed |
| trailing-record-data fixture 7 | None | None | Passed |
| trailing-record-data fixture 8 | None | None | Passed |
| trailing-record-data fixture 9 | None | None | Passed |
SHA-256 / c19d73966913598bd3dba623014aae391fb0ecf335d0b815c4ffc79ae29d197f
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:24.588464+00:00.
Case digest / 57bb431ba2e73388240d75c31beec6f7dacfd11b31c57d7865f814bca09b88eb