{"abstract":"The workflow stops after separated idle turns even though progress reset the streak.","category":"Agent workflow termination","checks":7,"contract":"Return true when the number of consecutive false progress flags at the end reaches limit.","contract_signature":"progress, limit","evaluation_group":"w3-agent-workflow-termination-consecutive-stall-counter","failed_approach":"Checking one fewer event than the limit can stop early on a shorter idle streak.","family":"w3-agent-workflow-termination-consecutive-stall-counter","id":"FA-99866","implementations":{"attempt":{"sha256":"473afc589bf5eac9b092656aca7449a685a46af3d38e46321f12b281bdacb5b1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(progress, limit):\n    return len(progress) and all(not x for x in progress[-limit+1:])\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('progress breaks streak', solve([False,False,True,False],2),False)\ncheck('trailing stall', solve([True]+[False]*N,N),True)\ncheck('short idle streak', solve([False],2),False)\ncheck('empty history', solve([],1),False)\ncheck('exact threshold', solve([False]*N,N),True)\ncheck('productive tail', solve([False]*N+[True],N),False)\ncheck('limit one', solve([True,False],1),True)\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":"70f16b7f5e082f9fc711a656b554e8f07368c8f7ab11ccdeff7e777edd4abdbb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(progress, limit):\n    return sum(not x for x in progress) >= limit\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('progress breaks streak', solve([False,False,True,False],2),False)\ncheck('trailing stall', solve([True]+[False]*N,N),True)\ncheck('short idle streak', solve([False],2),False)\ncheck('empty history', solve([],1),False)\ncheck('exact threshold', solve([False]*N,N),True)\ncheck('productive tail', solve([False]*N+[True],N),False)\ncheck('limit one', solve([True,False],1),True)\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":"Progress flags are booleans; limit is a positive integer. 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-consecutive-stall-counter","generated_at":"2026-09-30T16:48:28.969417+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":"The implementation counts all idle turns cumulatively.","sha256":"32f355b81a8924c418512b9b9122783d8e3441a0ba3452ac86952acb32208bf7","title":"Workflow: a productive turn fails to reset the stall counter · 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":29.045,"exit_code":1,"observations":[{"actual":true,"check":"progress breaks streak","expected":false,"passed":false},{"actual":false,"check":"trailing stall","expected":true,"passed":false},{"actual":true,"check":"short idle streak","expected":false,"passed":false},{"actual":0,"check":"empty history","expected":false,"passed":true},{"actual":true,"check":"exact threshold","expected":true,"passed":true},{"actual":false,"check":"productive tail","expected":false,"passed":true},{"actual":false,"check":"limit one","expected":true,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"progress breaks streak\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"trailing stall\", \"actual\": false, \"expected\": true, \"passed\": false}, {\"check\": \"short idle streak\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"empty history\", \"actual\": 0, \"expected\": false, \"passed\": true}, {\"check\": \"exact threshold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"productive tail\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"limit one\", \"actual\": false, \"expected\": true, \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":28.899,"exit_code":1,"observations":[{"actual":true,"check":"progress breaks streak","expected":false,"passed":false},{"actual":true,"check":"trailing stall","expected":true,"passed":true},{"actual":false,"check":"short idle streak","expected":false,"passed":true},{"actual":false,"check":"empty history","expected":false,"passed":true},{"actual":true,"check":"exact threshold","expected":true,"passed":true},{"actual":true,"check":"productive tail","expected":false,"passed":false},{"actual":true,"check":"limit one","expected":true,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"progress breaks streak\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"trailing stall\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"short idle streak\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"empty history\", \"actual\": false, \"expected\": false, \"passed\": true}, {\"check\": \"exact threshold\", \"actual\": true, \"expected\": true, \"passed\": true}, {\"check\": \"productive tail\", \"actual\": true, \"expected\": false, \"passed\": false}, {\"check\": \"limit one\", \"actual\": true, \"expected\": true, \"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."}}