{"abstract":"Eof confirm violates retry transition semantics","category":"HTTP retries","checks":8,"contract":"headers(length) opens failed response with remaining bytes; read(count) drains bounded content. eof confirms framing only if no bytes remain, otherwise poisons connection. close marks response closed; release returns pooled only for closed, fully drained, EOF-confirmed unpoisoned response. abort permanently poisons current connection. new resets all connection state. Return drain amounts and release disposition.","contract_signature":"events","evaluation_group":"s3-http_retries-response-dispose-pool","failed_approach":"The attempted repair changes the faulty site to else: eof=closed but still violates a regression oracle.","family":"s3-http_retries-response-dispose-pool-eof-confirm","id":"FA-30131","implementations":{"attempt":{"sha256":"8c086b55a493399386ead9a9fdb57a8495f84d1d6132ab3f0bf22579007c1850","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    remaining=0; closed=True; eof=False; poison=False; out=[]\n    for e in events:\n        if e[0]=='new': remaining=0; closed=True; eof=False; poison=False\n        elif e[0]=='headers':\n            remaining=e[1]; closed=False; eof=False\n        elif e[0]=='read':\n            if closed: out.append('closed'); continue\n            n=min(remaining,e[1]); remaining-=n; out.append(n)\n        elif e[0]=='eof':\n            if remaining!=0: poison=True\n            else: eof=closed\n        elif e[0]=='close': closed=True\n        elif e[0]=='abort': poison=True; closed=True\n        elif e[0]=='release':\n            if poison: out.append('discard')\n            elif not closed: out.append('busy')\n            elif remaining!=0: out.append('unread')\n            elif not eof: out.append('unframed')\n            else: out.append('pooled')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [])\ncheck('1', solve([('headers',N+3),('read',2),('read',N+9),('eof',),('release',),('close',),('release',)]), [2,N+1,'busy','pooled'])\ncheck('2', solve([('headers',1),('close',),('read',1),('release',)]), ['closed','unread'])\ncheck('3', solve([('headers',1),('eof',),('read',1),('close',),('release',)]), [1,'discard'])\ncheck('4', solve([('headers',0),('close',),('release',),('eof',),('release',)]), ['unframed','pooled'])\ncheck('5', solve([('headers',0),('eof',),('abort',),('release',),('new',),('headers',0),('eof',),('close',),('release',)]), ['discard','pooled'])\ncheck('6', solve([('headers',0),('eof',),('close',),('headers',0),('close',),('release',)]), ['unframed'])\ncheck('7', solve([('headers',0),('read',1)]), [0])\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":"0d601c30cd28af63a4f7b1930c3d87063fbc5b5506ab7c5618280a1287fa4a35","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(events):\n    remaining=0; closed=True; eof=False; poison=False; out=[]\n    for e in events:\n        if e[0]=='new': remaining=0; closed=True; eof=False; poison=False\n        elif e[0]=='headers':\n            remaining=e[1]; closed=False; eof=False\n        elif e[0]=='read':\n            if closed: out.append('closed'); continue\n            n=min(remaining,e[1]); remaining-=n; out.append(n)\n        elif e[0]=='eof':\n            if remaining!=0: poison=True\n            else: eof=False\n        elif e[0]=='close': closed=True\n        elif e[0]=='abort': poison=True; closed=True\n        elif e[0]=='release':\n            if poison: out.append('discard')\n            elif not closed: out.append('busy')\n            elif remaining!=0: out.append('unread')\n            elif not eof: out.append('unframed')\n            else: out.append('pooled')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('0', solve([]), [])\ncheck('1', solve([('headers',N+3),('read',2),('read',N+9),('eof',),('release',),('close',),('release',)]), [2,N+1,'busy','pooled'])\ncheck('2', solve([('headers',1),('close',),('read',1),('release',)]), ['closed','unread'])\ncheck('3', solve([('headers',1),('eof',),('read',1),('close',),('release',)]), [1,'discard'])\ncheck('4', solve([('headers',0),('close',),('release',),('eof',),('release',)]), ['unframed','pooled'])\ncheck('5', solve([('headers',0),('eof',),('abort',),('release',),('new',),('headers',0),('eof',),('close',),('release',)]), ['discard','pooled'])\ncheck('6', solve([('headers',0),('eof',),('close',),('headers',0),('close',),('release',)]), ['unframed'])\ncheck('7', solve([('headers',0),('read',1)]), [0])\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-response-dispose-pool-eof-confirm","generated_at":"2026-09-29T14:41:50.292388+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":"Eof confirm violates retry transition semantics","sha256":"58e92cf2b0c840245da4e9d3ea76180066a2f8a47500b09e01709bf5953ea6e1","title":"Failed response disposal and pool eligibility: Eof confirm 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":43.765,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":[2,2,"busy","unframed"],"check":"1","expected":[2,2,"busy","pooled"],"passed":false},{"actual":["closed","unread"],"check":"2","expected":["closed","unread"],"passed":true},{"actual":[1,"discard"],"check":"3","expected":[1,"discard"],"passed":true},{"actual":["unframed","pooled"],"check":"4","expected":["unframed","pooled"],"passed":true},{"actual":["discard","unframed"],"check":"5","expected":["discard","pooled"],"passed":false},{"actual":["unframed"],"check":"6","expected":["unframed"],"passed":true},{"actual":[0],"check":"7","expected":[0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [2, 2, \"busy\", \"unframed\"], \"expected\": [2, 2, \"busy\", \"pooled\"], \"passed\": false}, {\"check\": \"2\", \"actual\": [\"closed\", \"unread\"], \"expected\": [\"closed\", \"unread\"], \"passed\": true}, {\"check\": \"3\", \"actual\": [1, \"discard\"], \"expected\": [1, \"discard\"], \"passed\": true}, {\"check\": \"4\", \"actual\": [\"unframed\", \"pooled\"], \"expected\": [\"unframed\", \"pooled\"], \"passed\": true}, {\"check\": \"5\", \"actual\": [\"discard\", \"unframed\"], \"expected\": [\"discard\", \"pooled\"], \"passed\": false}, {\"check\": \"6\", \"actual\": [\"unframed\"], \"expected\": [\"unframed\"], \"passed\": true}, {\"check\": \"7\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.737,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":[2,2,"busy","unframed"],"check":"1","expected":[2,2,"busy","pooled"],"passed":false},{"actual":["closed","unread"],"check":"2","expected":["closed","unread"],"passed":true},{"actual":[1,"discard"],"check":"3","expected":[1,"discard"],"passed":true},{"actual":["unframed","unframed"],"check":"4","expected":["unframed","pooled"],"passed":false},{"actual":["discard","unframed"],"check":"5","expected":["discard","pooled"],"passed":false},{"actual":["unframed"],"check":"6","expected":["unframed"],"passed":true},{"actual":[0],"check":"7","expected":[0],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [2, 2, \"busy\", \"unframed\"], \"expected\": [2, 2, \"busy\", \"pooled\"], \"passed\": false}, {\"check\": \"2\", \"actual\": [\"closed\", \"unread\"], \"expected\": [\"closed\", \"unread\"], \"passed\": true}, {\"check\": \"3\", \"actual\": [1, \"discard\"], \"expected\": [1, \"discard\"], \"passed\": true}, {\"check\": \"4\", \"actual\": [\"unframed\", \"unframed\"], \"expected\": [\"unframed\", \"pooled\"], \"passed\": false}, {\"check\": \"5\", \"actual\": [\"discard\", \"unframed\"], \"expected\": [\"discard\", \"pooled\"], \"passed\": false}, {\"check\": \"6\", \"actual\": [\"unframed\"], \"expected\": [\"unframed\"], \"passed\": true}, {\"check\": \"7\", \"actual\": [0], \"expected\": [0], \"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."}}