{"abstract":"Iteration exhaustion is reported as convergence.","category":"Optimization solver contracts","checks":6,"contract":"Nonnegative residual, tolerance, iteration and budget: converged if residual<=tol; otherwise exhausted if iteration>=budget; else continue. Objective delta alone never certifies convergence.","evaluation_group":"model-e370d131eb90b863","failed_approach":"Always labeling a large residual as exhausted ignores remaining iterations.","family":"z-optimization-termination-status","id":"FA-12036","implementations":{"attempt":{"sha256":"63c6c65c29f072626dc4b82f800f619517aad16d625e21e80e3813632dadf588","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(residual, tol, delta, iteration, budget):\n    return \"converged\" if residual<=tol else \"exhausted\"\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stagnation with budget', solve(N,0,0,1,10), 'continue')\ncheck('stagnation exhausted', solve(N,0,0,10,10), 'exhausted')\ncheck('residual wins', solve(0,0,N,1,10), 'converged')\ncheck('tolerance boundary', solve(N,N,10*N,10,10), 'converged')\ncheck('unfinished', solve(N,0,N,1,10), 'continue')\ncheck('zero budget', solve(N,0,N,0,0), 'exhausted')\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":"c167beb04ec4d2daecd09260a5353a91ea18841da2d4fed99763d925f69891fb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(residual, tol, delta, iteration, budget):\n    return \"converged\" if abs(delta)<=tol else (\"exhausted\" if iteration>=budget else \"continue\")\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stagnation with budget', solve(N,0,0,1,10), 'continue')\ncheck('stagnation exhausted', solve(N,0,0,10,10), 'exhausted')\ncheck('residual wins', solve(0,0,N,1,10), 'converged')\ncheck('tolerance boundary', solve(N,N,10*N,10,10), 'converged')\ncheck('unfinished', solve(N,0,N,1,10), 'continue')\ncheck('zero budget', solve(N,0,N,0,0), 'exhausted')\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":"7afc6dcbb458ded261a945a618d89829ee1ad788a92abcf3f3f52569c6af24a9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(residual, tol, delta, iteration, budget):\n    return \"converged\" if residual<=tol else (\"exhausted\" if iteration>=budget else \"continue\")\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('stagnation with budget', solve(N,0,0,1,10), 'continue')\ncheck('stagnation exhausted', solve(N,0,0,10,10), 'exhausted')\ncheck('residual wins', solve(0,0,N,1,10), 'converged')\ncheck('tolerance boundary', solve(N,N,10*N,10,10), 'converged')\ncheck('unfinished', solve(N,0,N,1,10), 'continue')\ncheck('zero budget', solve(N,0,N,0,0), 'exhausted')\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":"Controlled finite inputs and explicit one-step contracts; this is not a production solver or a numerical stability benchmark. 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":"z-optimization-termination-status","generated_at":"2026-09-29T14:38:53.249119+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"This deterministic solver-step model isolates an algorithmic invariant used by iterative optimization implementations.","repair":"Converged requires residual tolerance; otherwise distinguish exhausted budget from ongoing iteration.","root_cause":"A small latest objective change is enough even if residual is large.","sha256":"38350c114403b4fc29ead0b3afe51930204c12ce0f8c845d5f7d3ca64be8c894","title":"Iteration exhaustion is reported as convergence · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.092,"exit_code":1,"observations":[{"actual":"exhausted","check":"stagnation with budget","expected":"continue","passed":false},{"actual":"exhausted","check":"stagnation exhausted","expected":"exhausted","passed":true},{"actual":"converged","check":"residual wins","expected":"converged","passed":true},{"actual":"converged","check":"tolerance boundary","expected":"converged","passed":true},{"actual":"exhausted","check":"unfinished","expected":"continue","passed":false},{"actual":"exhausted","check":"zero budget","expected":"exhausted","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stagnation with budget\", \"actual\": \"exhausted\", \"expected\": \"continue\", \"passed\": false}, {\"check\": \"stagnation exhausted\", \"actual\": \"exhausted\", \"expected\": \"exhausted\", \"passed\": true}, {\"check\": \"residual wins\", \"actual\": \"converged\", \"expected\": \"converged\", \"passed\": true}, {\"check\": \"tolerance boundary\", \"actual\": \"converged\", \"expected\": \"converged\", \"passed\": true}, {\"check\": \"unfinished\", \"actual\": \"exhausted\", \"expected\": \"continue\", \"passed\": false}, {\"check\": \"zero budget\", \"actual\": \"exhausted\", \"expected\": \"exhausted\", \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.186,"exit_code":1,"observations":[{"actual":"converged","check":"stagnation with budget","expected":"continue","passed":false},{"actual":"converged","check":"stagnation exhausted","expected":"exhausted","passed":false},{"actual":"continue","check":"residual wins","expected":"converged","passed":false},{"actual":"exhausted","check":"tolerance boundary","expected":"converged","passed":false},{"actual":"continue","check":"unfinished","expected":"continue","passed":true},{"actual":"exhausted","check":"zero budget","expected":"exhausted","passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stagnation with budget\", \"actual\": \"converged\", \"expected\": \"continue\", \"passed\": false}, {\"check\": \"stagnation exhausted\", \"actual\": \"converged\", \"expected\": \"exhausted\", \"passed\": false}, {\"check\": \"residual wins\", \"actual\": \"continue\", \"expected\": \"converged\", \"passed\": false}, {\"check\": \"tolerance boundary\", \"actual\": \"exhausted\", \"expected\": \"converged\", \"passed\": false}, {\"check\": \"unfinished\", \"actual\": \"continue\", \"expected\": \"continue\", \"passed\": true}, {\"check\": \"zero budget\", \"actual\": \"exhausted\", \"expected\": \"exhausted\", \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.434,"exit_code":0,"observations":[{"actual":"continue","check":"stagnation with budget","expected":"continue","passed":true},{"actual":"exhausted","check":"stagnation exhausted","expected":"exhausted","passed":true},{"actual":"converged","check":"residual wins","expected":"converged","passed":true},{"actual":"converged","check":"tolerance boundary","expected":"converged","passed":true},{"actual":"continue","check":"unfinished","expected":"continue","passed":true},{"actual":"exhausted","check":"zero budget","expected":"exhausted","passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"stagnation with budget\", \"actual\": \"continue\", \"expected\": \"continue\", \"passed\": true}, {\"check\": \"stagnation exhausted\", \"actual\": \"exhausted\", \"expected\": \"exhausted\", \"passed\": true}, {\"check\": \"residual wins\", \"actual\": \"converged\", \"expected\": \"converged\", \"passed\": true}, {\"check\": \"tolerance boundary\", \"actual\": \"converged\", \"expected\": \"converged\", \"passed\": true}, {\"check\": \"unfinished\", \"actual\": \"continue\", \"expected\": \"continue\", \"passed\": true}, {\"check\": \"zero budget\", \"actual\": \"exhausted\", \"expected\": \"exhausted\", \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}