{"abstract":"The final result drains the queue, but the completion check still sees the pre-result count.","category":"Agent workflow termination","checks":7,"contract":"Return complete iff pending_before - received is zero; received is zero or one and cannot exceed pending_before.","contract_signature":"pending_before, received","evaluation_group":"w3-agent-workflow-termination-completion-after-tool-drain","failed_approach":"Treating one remaining item as drained can stop before its final result arrives.","family":"w3-agent-workflow-termination-completion-after-tool-drain","id":"FA-99881","implementations":{"attempt":{"sha256":"8362ab82c2d00fd665e1f82841ca93245d93690dde8284ee2f42f7b52896d02a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pending_before, received):\n    return pending_before - received <= 1\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('last result drains', solve(1,1),True)\ncheck('still one pending', solve(N,0),False)\ncheck('already drained', solve(0,0),True)\ncheck('whole batch drains', solve(N,N),True)\ncheck('no result pending', solve(1,0),False)\ncheck('multiple drained by one', solve(2,1),False)\ncheck('one still pending', solve(N+1,N),False)\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":"2c8865673b3315c7ddc886ace2ac9b61635c57b4ebb5f30f596f57f8f37ae5a1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(pending_before, received):\n    return pending_before == 0\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('last result drains', solve(1,1),True)\ncheck('still one pending', solve(N,0),False)\ncheck('already drained', solve(0,0),True)\ncheck('whole batch drains', solve(N,N),True)\ncheck('no result pending', solve(1,0),False)\ncheck('multiple drained by one', solve(2,1),False)\ncheck('one still pending', solve(N+1,N),False)\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":"Inputs satisfy 0 <= received <= pending_before. 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":"w3-agent-workflow-termination-completion-after-tool-drain","generated_at":"2026-09-30T16:48:29.419209+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"This toy decision rule isolates one bounded agent-loop completion contract.","root_cause":"Completion is tested against the pending count before the latest result transition.","sha256":"0f7dee1ea3d7642054e226d07e7bdb3e4c522a34200e2288412343091d44235e","title":"Workflow: completion is delayed after the last result drains the queue · case 01","variant":1,"variant_policy":"The fixture code references N, supplied as 1 through 5. Fixed boundary checks may repeat. These records share one mechanism and must remain together in evaluation splits.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":30.66,"exit_code":1,"observations":[{"actual":true,"check":"last result drains","expected":true,"passed":true},{"actual":true,"check":"still one pending","expected":false,"passed":false},{"actual":true,"check":"already drained","expected":true,"passed":true},{"actual":true,"check":"whole batch drains","expected":true,"passed":true},{"actual":true,"check":"no result pending","expected":false,"passed":false},{"actual":true,"check":"multiple drained by one","expected":false,"passed":false},{"actual":true,"check":"one still pending","expected":false,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"last result drains\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"still one pending\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"already drained\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"whole batch drains\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"no result pending\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"multiple drained by one\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"one still pending\", \"actual\": true, \"expected\": false, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":27.927,"exit_code":1,"observations":[{"actual":false,"check":"last result drains","expected":true,"passed":false},{"actual":false,"check":"still one pending","expected":false,"passed":true},{"actual":true,"check":"already drained","expected":true,"passed":true},{"actual":false,"check":"whole batch drains","expected":true,"passed":false},{"actual":false,"check":"no result pending","expected":false,"passed":true},{"actual":false,"check":"multiple drained by one","expected":false,"passed":true},{"actual":false,"check":"one still pending","expected":false,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"last result drains\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"still one pending\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"already drained\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"whole batch drains\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"no result pending\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"multiple drained by one\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"one still pending\", \"actual\": false, \"expected\": false, \"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."}}