{"abstract":"Total limit violates retry transition semantics","category":"HTTP retries","checks":7,"contract":"open(memory threshold,total limit) begins capturing byte-list chunks. append stores an entire chunk only if total limit permits; crossing memory threshold spills all prior memory and new chunk to modeled disk. fail_disk invalidates captured body. seal finalizes; replay returns captured bytes only when sealed and valid. Overflow is terminal until next open. Return replay decisions and storage mode.","evaluation_group":"s3-http_retries-retry-spool","failed_approach":"The attempted repair changes the faulty site to limit=e[2]+1 but still violates a regression oracle.","family":"s3-http_retries-retry-spool-total-limit","id":"FA-30531","implementations":{"attempt":{"sha256":"05d3bafaa66a82166180c573f55eb2ba74990890c873642157a63c6ec3304106","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    threshold=0; limit=0; memory=[]; disk=[]; size=0; mode='memory'; state='idle'; out=[]\n    for e in events:\n        if e[0]=='open':\n            threshold=e[1]; limit=e[2]+1; memory=[]; disk=[]; size=0; mode='memory'; state='capturing'\n        elif e[0]=='append':\n            if state!='capturing': continue\n            chunk=list(e[1])\n            if size+len(chunk)>limit:\n                state='overflow'; memory=[]; disk=[]; continue\n            if mode=='memory' and size+len(chunk)>threshold:\n                disk=list(memory); memory=[]; mode='disk'\n            if mode=='disk': disk.extend(chunk)\n            else: memory.extend(chunk)\n            size+=len(chunk)\n        elif e[0]=='seal':\n            if state=='capturing': state='sealed'\n        elif e[0]=='fail_disk':\n            if mode=='disk': state='io-error'; memory=[]; disk=[]\n        elif e[0]=='replay':\n            if state!='sealed': out.append(state); continue\n            out.append(list(disk if mode=='disk' else memory))\n    return [out,mode]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [[],'memory'])\ncheck('1', solve([('open',3,8),('append',[N,N+1]),('append',[N+2]),('seal',),('replay',)]), [[[N,N+1,N+2]],'memory'])\ncheck('2', solve([('open',2,8),('append',[N,N+1]),('append',[N+2,N+3]),('append',[N+4]),('seal',),('replay',)]), [[[N,N+1,N+2,N+3,N+4]],'disk'])\ncheck('3', solve([('open',2,3),('append',[N,N+1]),('append',[N+2]),('append',[N+3]),('seal',),('replay',)]), [['overflow'],'disk'])\ncheck('4', solve([('open',0,4),('append',[N]),('fail_disk',),('seal',),('replay',),('open',4,4),('append',[N+1]),('seal',),('replay',)]), [['io-error',[N+1]],'memory'])\ncheck('5', solve([('open',2,2),('append',[N]),('replay',),('seal',),('append',[N+1]),('replay',)]), [['capturing',[N]],'memory'])\ncheck('6', solve([('open',0,0),('append',[]),('seal',),('replay',)]), [[[]],'memory'])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"adb62037859a175d4c1c52e8a82aeca2b746cd3102507d5f6621f7ea9eef1d9b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    threshold=0; limit=0; memory=[]; disk=[]; size=0; mode='memory'; state='idle'; out=[]\n    for e in events:\n        if e[0]=='open':\n            threshold=e[1]; limit=e[1]; memory=[]; disk=[]; size=0; mode='memory'; state='capturing'\n        elif e[0]=='append':\n            if state!='capturing': continue\n            chunk=list(e[1])\n            if size+len(chunk)>limit:\n                state='overflow'; memory=[]; disk=[]; continue\n            if mode=='memory' and size+len(chunk)>threshold:\n                disk=list(memory); memory=[]; mode='disk'\n            if mode=='disk': disk.extend(chunk)\n            else: memory.extend(chunk)\n            size+=len(chunk)\n        elif e[0]=='seal':\n            if state=='capturing': state='sealed'\n        elif e[0]=='fail_disk':\n            if mode=='disk': state='io-error'; memory=[]; disk=[]\n        elif e[0]=='replay':\n            if state!='sealed': out.append(state); continue\n            out.append(list(disk if mode=='disk' else memory))\n    return [out,mode]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [[],'memory'])\ncheck('1', solve([('open',3,8),('append',[N,N+1]),('append',[N+2]),('seal',),('replay',)]), [[[N,N+1,N+2]],'memory'])\ncheck('2', solve([('open',2,8),('append',[N,N+1]),('append',[N+2,N+3]),('append',[N+4]),('seal',),('replay',)]), [[[N,N+1,N+2,N+3,N+4]],'disk'])\ncheck('3', solve([('open',2,3),('append',[N,N+1]),('append',[N+2]),('append',[N+3]),('seal',),('replay',)]), [['overflow'],'disk'])\ncheck('4', solve([('open',0,4),('append',[N]),('fail_disk',),('seal',),('replay',),('open',4,4),('append',[N+1]),('seal',),('replay',)]), [['io-error',[N+1]],'memory'])\ncheck('5', solve([('open',2,2),('append',[N]),('replay',),('seal',),('append',[N+1]),('replay',)]), [['capturing',[N]],'memory'])\ncheck('6', solve([('open',0,0),('append',[]),('seal',),('replay',)]), [[[]],'memory'])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"3d1804eb8df0a19e00936722d7d55e99e0d04122b7e9e2e9505ea59b66387cb9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    threshold=0; limit=0; memory=[]; disk=[]; size=0; mode='memory'; state='idle'; out=[]\n    for e in events:\n        if e[0]=='open':\n            threshold=e[1]; limit=e[2]; memory=[]; disk=[]; size=0; mode='memory'; state='capturing'\n        elif e[0]=='append':\n            if state!='capturing': continue\n            chunk=list(e[1])\n            if size+len(chunk)>limit:\n                state='overflow'; memory=[]; disk=[]; continue\n            if mode=='memory' and size+len(chunk)>threshold:\n                disk=list(memory); memory=[]; mode='disk'\n            if mode=='disk': disk.extend(chunk)\n            else: memory.extend(chunk)\n            size+=len(chunk)\n        elif e[0]=='seal':\n            if state=='capturing': state='sealed'\n        elif e[0]=='fail_disk':\n            if mode=='disk': state='io-error'; memory=[]; disk=[]\n        elif e[0]=='replay':\n            if state!='sealed': out.append(state); continue\n            out.append(list(disk if mode=='disk' else memory))\n    return [out,mode]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [[],'memory'])\ncheck('1', solve([('open',3,8),('append',[N,N+1]),('append',[N+2]),('seal',),('replay',)]), [[[N,N+1,N+2]],'memory'])\ncheck('2', solve([('open',2,8),('append',[N,N+1]),('append',[N+2,N+3]),('append',[N+4]),('seal',),('replay',)]), [[[N,N+1,N+2,N+3,N+4]],'disk'])\ncheck('3', solve([('open',2,3),('append',[N,N+1]),('append',[N+2]),('append',[N+3]),('seal',),('replay',)]), [['overflow'],'disk'])\ncheck('4', solve([('open',0,4),('append',[N]),('fail_disk',),('seal',),('replay',),('open',4,4),('append',[N+1]),('seal',),('replay',)]), [['io-error',[N+1]],'memory'])\ncheck('5', solve([('open',2,2),('append',[N]),('replay',),('seal',),('append',[N+1]),('replay',)]), [['capturing',[N]],'memory'])\ncheck('6', solve([('open',0,0),('append',[]),('seal',),('replay',)]), [[[]],'memory'])\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"Stipulated bounded simulator, not a complete HTTP implementation or a standards conformance claim. 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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-http_retries-retry-spool-total-limit","generated_at":"2026-09-29T14:41:53.801166+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline deterministic model of HTTP request retries.","repair":"Restore the specified transition limit=e[2].","root_cause":"Total limit violates retry transition semantics","sha256":"6f9b983ad289aa2b35c21faff652a35319d53eaa850ee2c5b712d50b22b002bc","title":"Bounded body spooling for replay: Total limit violates retry transition semantics · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.152,"exit_code":1,"observations":[{"actual":[[],"memory"],"check":"0","expected":[[],"memory"],"passed":true},{"actual":[[[1,2,3]],"memory"],"check":"1","expected":[[[1,2,3]],"memory"],"passed":true},{"actual":[[[1,2,3,4,5]],"disk"],"check":"2","expected":[[[1,2,3,4,5]],"disk"],"passed":true},{"actual":[[[1,2,3,4]],"disk"],"check":"3","expected":[["overflow"],"disk"],"passed":false},{"actual":[["io-error",[2]],"memory"],"check":"4","expected":[["io-error",[2]],"memory"],"passed":true},{"actual":[["capturing",[1]],"memory"],"check":"5","expected":[["capturing",[1]],"memory"],"passed":true},{"actual":[[[]],"memory"],"check":"6","expected":[[[]],"memory"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[], \"memory\"], \"expected\": [[], \"memory\"], \"passed\": true}, {\"check\": \"1\", \"actual\": [[[1, 2, 3]], \"memory\"], \"expected\": [[[1, 2, 3]], \"memory\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [[[1, 2, 3, 4, 5]], \"disk\"], \"expected\": [[[1, 2, 3, 4, 5]], \"disk\"], \"passed\": true}, {\"check\": \"3\", \"actual\": [[[1, 2, 3, 4]], \"disk\"], \"expected\": [[\"overflow\"], \"disk\"], \"passed\": false}, {\"check\": \"4\", \"actual\": [[\"io-error\", [2]], \"memory\"], \"expected\": [[\"io-error\", [2]], \"memory\"], \"passed\": true}, {\"check\": \"5\", \"actual\": [[\"capturing\", [1]], \"memory\"], \"expected\": [[\"capturing\", [1]], \"memory\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [[[]], \"memory\"], \"expected\": [[[]], \"memory\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.568,"exit_code":1,"observations":[{"actual":[[],"memory"],"check":"0","expected":[[],"memory"],"passed":true},{"actual":[[[1,2,3]],"memory"],"check":"1","expected":[[[1,2,3]],"memory"],"passed":true},{"actual":[["overflow"],"memory"],"check":"2","expected":[[[1,2,3,4,5]],"disk"],"passed":false},{"actual":[["overflow"],"memory"],"check":"3","expected":[["overflow"],"disk"],"passed":false},{"actual":[["overflow",[2]],"memory"],"check":"4","expected":[["io-error",[2]],"memory"],"passed":false},{"actual":[["capturing",[1]],"memory"],"check":"5","expected":[["capturing",[1]],"memory"],"passed":true},{"actual":[[[]],"memory"],"check":"6","expected":[[[]],"memory"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[], \"memory\"], \"expected\": [[], \"memory\"], \"passed\": true}, {\"check\": \"1\", \"actual\": [[[1, 2, 3]], \"memory\"], \"expected\": [[[1, 2, 3]], \"memory\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [[\"overflow\"], \"memory\"], \"expected\": [[[1, 2, 3, 4, 5]], \"disk\"], \"passed\": false}, {\"check\": \"3\", \"actual\": [[\"overflow\"], \"memory\"], \"expected\": [[\"overflow\"], \"disk\"], \"passed\": false}, {\"check\": \"4\", \"actual\": [[\"overflow\", [2]], \"memory\"], \"expected\": [[\"io-error\", [2]], \"memory\"], \"passed\": false}, {\"check\": \"5\", \"actual\": [[\"capturing\", [1]], \"memory\"], \"expected\": [[\"capturing\", [1]], \"memory\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [[[]], \"memory\"], \"expected\": [[[]], \"memory\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.516,"exit_code":0,"observations":[{"actual":[[],"memory"],"check":"0","expected":[[],"memory"],"passed":true},{"actual":[[[1,2,3]],"memory"],"check":"1","expected":[[[1,2,3]],"memory"],"passed":true},{"actual":[[[1,2,3,4,5]],"disk"],"check":"2","expected":[[[1,2,3,4,5]],"disk"],"passed":true},{"actual":[["overflow"],"disk"],"check":"3","expected":[["overflow"],"disk"],"passed":true},{"actual":[["io-error",[2]],"memory"],"check":"4","expected":[["io-error",[2]],"memory"],"passed":true},{"actual":[["capturing",[1]],"memory"],"check":"5","expected":[["capturing",[1]],"memory"],"passed":true},{"actual":[[[]],"memory"],"check":"6","expected":[[[]],"memory"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [[], \"memory\"], \"expected\": [[], \"memory\"], \"passed\": true}, {\"check\": \"1\", \"actual\": [[[1, 2, 3]], \"memory\"], \"expected\": [[[1, 2, 3]], \"memory\"], \"passed\": true}, {\"check\": \"2\", \"actual\": [[[1, 2, 3, 4, 5]], \"disk\"], \"expected\": [[[1, 2, 3, 4, 5]], \"disk\"], \"passed\": true}, {\"check\": \"3\", \"actual\": [[\"overflow\"], \"disk\"], \"expected\": [[\"overflow\"], \"disk\"], \"passed\": true}, {\"check\": \"4\", \"actual\": [[\"io-error\", [2]], \"memory\"], \"expected\": [[\"io-error\", [2]], \"memory\"], \"passed\": true}, {\"check\": \"5\", \"actual\": [[\"capturing\", [1]], \"memory\"], \"expected\": [[\"capturing\", [1]], \"memory\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [[[]], \"memory\"], \"expected\": [[[]], \"memory\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}