{"abstract":"Release busy 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.","evaluation_group":"s3-http_retries-response-dispose-pool","failed_approach":"The attempted repair changes the faulty site to elif not closed and remaining>0: out.append('busy') but still violates a regression oracle.","family":"s3-http_retries-response-dispose-pool-release-busy","id":"FA-30151","implementations":{"attempt":{"sha256":"13edd701b6c366211c8274cd36d6acbe8ba9d1d57a76e36e8cab8dcac63cfd61","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=True\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 and remaining>0: 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":"b1594739f90a09b3537ceee1cb259af38781d4886152d63ff096f3a275b4c761","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=True\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('pooled')\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"},"fixed":{"sha256":"7d6ae0c23afde9e09b7faa67400ad79eb262c1a595982fa49c2174f34446fdd4","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=True\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-release-busy","generated_at":"2026-09-29T14:41:50.130988+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 elif not closed: out.append('busy').","root_cause":"Release busy violates retry transition semantics","sha256":"5b0c6ee405d2dc3ab2411053dcbf5e7d9fbe020efffc55c0e518d6bb08e204e9","title":"Failed response disposal and pool eligibility: Release busy 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":43.061,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":[2,2,"pooled","pooled"],"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","pooled"],"check":"5","expected":["discard","pooled"],"passed":true},{"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, \"pooled\", \"pooled\"], \"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\", \"pooled\"], \"expected\": [\"discard\", \"pooled\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"unframed\"], \"expected\": [\"unframed\"], \"passed\": true}, {\"check\": \"7\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.396,"exit_code":1,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":[2,2,"pooled","pooled"],"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","pooled"],"check":"5","expected":["discard","pooled"],"passed":true},{"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, \"pooled\", \"pooled\"], \"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\", \"pooled\"], \"expected\": [\"discard\", \"pooled\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"unframed\"], \"expected\": [\"unframed\"], \"passed\": true}, {\"check\": \"7\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.124,"exit_code":0,"observations":[{"actual":[],"check":"0","expected":[],"passed":true},{"actual":[2,2,"busy","pooled"],"check":"1","expected":[2,2,"busy","pooled"],"passed":true},{"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","pooled"],"check":"5","expected":["discard","pooled"],"passed":true},{"actual":["unframed"],"check":"6","expected":["unframed"],"passed":true},{"actual":[0],"check":"7","expected":[0],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"0\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"1\", \"actual\": [2, 2, \"busy\", \"pooled\"], \"expected\": [2, 2, \"busy\", \"pooled\"], \"passed\": true}, {\"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\", \"pooled\"], \"expected\": [\"discard\", \"pooled\"], \"passed\": true}, {\"check\": \"6\", \"actual\": [\"unframed\"], \"expected\": [\"unframed\"], \"passed\": true}, {\"check\": \"7\", \"actual\": [0], \"expected\": [0], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}