{"abstract":"Multipart source handles remain open until every part finishes.","category":"HTTP ranges","checks":6,"contract":"Return release on cancellation or when completed equals total; otherwise retain. Valid completed in[0,total].","evaluation_group":"s3-http_ranges-stream-transfer","failed_approach":"The partial repair uses return \"release\" if completed==total else \"retain\", which still violates the stated contract.","family":"s3-http_ranges-stream-release-after-last-part","id":"FA-26631","implementations":{"attempt":{"sha256":"38e181a4668948a8b5e6af32b5a2f0de85fac5d24e56d07ca3c23d131fbc3cc1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(completed, total, cancelled):\n    return \"release\" if completed==total else \"retain\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stream-release-after-last-part fixture 0', solve(1,N+1,False), \"retain\")\ncheck('stream-release-after-last-part fixture 1', solve(0,N,True), \"release\")\ncheck('stream-release-after-last-part fixture 2', solve(N,N,False), \"release\")\ncheck('stream-release-after-last-part fixture 3', solve(0,0,False), \"release\")\ncheck('stream-release-after-last-part fixture 4', solve(0,N,False), \"retain\")\ncheck('stream-release-after-last-part fixture 5', solve(N,N,True), \"release\")\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":"749da6365c608f11b029e82c527d59b74aea9faac39342e17808b3a4bddda50f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(completed, total, cancelled):\n    return \"release\" if completed>0 or cancelled else \"retain\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stream-release-after-last-part fixture 0', solve(1,N+1,False), \"retain\")\ncheck('stream-release-after-last-part fixture 1', solve(0,N,True), \"release\")\ncheck('stream-release-after-last-part fixture 2', solve(N,N,False), \"release\")\ncheck('stream-release-after-last-part fixture 3', solve(0,0,False), \"release\")\ncheck('stream-release-after-last-part fixture 4', solve(0,N,False), \"retain\")\ncheck('stream-release-after-last-part fixture 5', solve(N,N,True), \"release\")\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":"f9863e5b848710818c207c8934571986e9e1c8d1d3fbb3b19c85d374746332ff","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(completed, total, cancelled):\n    return \"release\" if cancelled or completed==total else \"retain\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stream-release-after-last-part fixture 0', solve(1,N+1,False), \"retain\")\ncheck('stream-release-after-last-part fixture 1', solve(0,N,True), \"release\")\ncheck('stream-release-after-last-part fixture 2', solve(N,N,False), \"release\")\ncheck('stream-release-after-last-part fixture 3', solve(0,0,False), \"release\")\ncheck('stream-release-after-last-part fixture 4', solve(0,N,False), \"retain\")\ncheck('stream-release-after-last-part fixture 5', solve(N,N,True), \"release\")\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":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"s3-http_ranges-stream-release-after-last-part","generated_at":"2026-09-29T14:41:17.711206+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Range responses combine representation identity, conditional requests, framing, and partial-object state.","repair":"Apply the bounded decision exactly: return \"release\" if cancelled or completed==total else \"retain\"","root_cause":"The stream-release-after-last-part decision uses return \"release\" if completed>0 or cancelled else \"retain\".","sha256":"3978cc54508c937316f5eb061607d176aa44e2c97d37961e24cbf21c74807a89","title":"Multipart source handles remain open until every part finishes · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.91,"exit_code":1,"observations":[{"actual":"retain","check":"stream-release-after-last-part fixture 0","expected":"retain","passed":true},{"actual":"retain","check":"stream-release-after-last-part fixture 1","expected":"release","passed":false},{"actual":"release","check":"stream-release-after-last-part fixture 2","expected":"release","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 3","expected":"release","passed":true},{"actual":"retain","check":"stream-release-after-last-part fixture 4","expected":"retain","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 5","expected":"release","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream-release-after-last-part fixture 0\", \"actual\": \"retain\", \"expected\": \"retain\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 1\", \"actual\": \"retain\", \"expected\": \"release\", \"passed\": false}, {\"check\": \"stream-release-after-last-part fixture 2\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 3\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 4\", \"actual\": \"retain\", \"expected\": \"retain\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 5\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.511,"exit_code":1,"observations":[{"actual":"release","check":"stream-release-after-last-part fixture 0","expected":"retain","passed":false},{"actual":"release","check":"stream-release-after-last-part fixture 1","expected":"release","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 2","expected":"release","passed":true},{"actual":"retain","check":"stream-release-after-last-part fixture 3","expected":"release","passed":false},{"actual":"retain","check":"stream-release-after-last-part fixture 4","expected":"retain","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 5","expected":"release","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream-release-after-last-part fixture 0\", \"actual\": \"release\", \"expected\": \"retain\", \"passed\": false}, {\"check\": \"stream-release-after-last-part fixture 1\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 2\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 3\", \"actual\": \"retain\", \"expected\": \"release\", \"passed\": false}, {\"check\": \"stream-release-after-last-part fixture 4\", \"actual\": \"retain\", \"expected\": \"retain\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 5\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.698,"exit_code":0,"observations":[{"actual":"retain","check":"stream-release-after-last-part fixture 0","expected":"retain","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 1","expected":"release","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 2","expected":"release","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 3","expected":"release","passed":true},{"actual":"retain","check":"stream-release-after-last-part fixture 4","expected":"retain","passed":true},{"actual":"release","check":"stream-release-after-last-part fixture 5","expected":"release","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stream-release-after-last-part fixture 0\", \"actual\": \"retain\", \"expected\": \"retain\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 1\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 2\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 3\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 4\", \"actual\": \"retain\", \"expected\": \"retain\", \"passed\": true}, {\"check\": \"stream-release-after-last-part fixture 5\", \"actual\": \"release\", \"expected\": \"release\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}