{"abstract":"Overflow terminal 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.","contract_signature":"events","evaluation_group":"s3-http_retries-retry-spool","failed_approach":"The attempted repair changes the faulty site to state='sealed'; memory=[]; disk=[]; continue but still violates a regression oracle.","family":"s3-http_retries-retry-spool-overflow-terminal","id":"FA-30551","implementations":{"attempt":{"sha256":"6f846e16c0dceb4e76f39ed03fedb0ce10e67323f7e8c042043672ea02f3a710","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='sealed'; 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":"f1489ff0abfd014f2851fa22a69906cccf74a2fed2f154500c2fbdfd1344c5ce","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='capturing'; 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-overflow-terminal","generated_at":"2026-09-29T14:41:54.320954+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Offline deterministic model of HTTP request retries.","root_cause":"Overflow terminal violates retry transition semantics","sha256":"0fd4ee7319ba79b59d6b462cece9c6d8619f38d9c883bbcb4a24cb2f08c789ff","title":"Bounded body spooling for replay: Overflow terminal violates retry transition semantics · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.394,"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":[[[]],"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\": [[[]], \"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":40.085,"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":[[[]],"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\": [[[]], \"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"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}