{"abstract":"An equal sentinel stored in another object fails to stop iteration.","category":"Iterator consumption","checks":4,"contract":"Consume callable results until one compares equal to the sentinel. Equal but separately allocated lists terminate iteration; the sentinel is consumed, excluded from output, and later values remain unconsumed.","contract_signature":"x, y=None","evaluation_group":"model-3ae806cbcb4a9426","failed_approach":"Stopping at any falsy item confuses valid empty values with the designated sentinel.","family":"xr-sentinel-iterator-compares-equality-not-identity","id":"FA-4641","implementations":{"attempt":{"sha256":"2247db381fbf119c6fc6b1a8280624f705590d6c92fc2ae3fe94615df6052828","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport itertools as it\nfrom collections import deque\nN = 1\nobservations = []\ndef solve(x, y=None):\n    g=iter(x); a=list(it.takewhile(bool,g)); return [a,list(g)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('equal separately allocated lists stop', solve([[1],[2],[3]], [2]), [[[1]],[[3]]])\ncheck('valid empty list remains', solve([[],[2],[3]], [2]), [[[]],[[3]]])\ncheck('sentinel first', solve([[2],[3]], [2]), [[],[[3]]])\ncheck('empty input', solve([], [2]), [[],[]])\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":"731920ee675c04dec974e10ef8591c521562d81121ef9516afe6cfc588a2afee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nimport itertools as it\nfrom collections import deque\nN = 1\nobservations = []\ndef solve(x, y=None):\n    g=iter(x); a=[]\n    while True:\n        v=next(g,y)\n        if v is y: break\n        a.append(v)\n    return [a,list(g)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('equal separately allocated lists stop', solve([[1],[2],[3]], [2]), [[[1]],[[3]]])\ncheck('valid empty list remains', solve([[],[2],[3]], [2]), [[[]],[[3]]])\ncheck('sentinel first', solve([[2],[3]], [2]), [[],[[3]]])\ncheck('empty input', solve([], [2]), [[],[]])\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":" 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":"xr-sentinel-iterator-compares-equality-not-identity","generated_at":"2026-09-29T14:37:41.432349+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A controlled local-runtime regression for collection APIs, language semantics, or ownership wrappers. Fixtures include boundary and interaction cases.","root_cause":"Identity comparison substitutes for the callable iterator protocol equality comparison.","sha256":"75933282470d0996d24877e76ba0c3e961b993f171109bd29c4027461ef65f9e","title":"Callable iterator misses an equal but distinct sentinel · case 01","variant":1,"variant_policy":"Five execution reruns of a fixed adversarial fixture suite; variant number does not alter semantic inputs.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":38.931,"exit_code":1,"observations":[{"actual":[[[1],[2],[3]],[]],"check":"equal separately allocated lists stop","expected":[[[1]],[[3]]],"passed":false},{"actual":[[],[[2],[3]]],"check":"valid empty list remains","expected":[[[]],[[3]]],"passed":false},{"actual":[[[2],[3]],[]],"check":"sentinel first","expected":[[],[[3]]],"passed":false},{"actual":[[],[]],"check":"empty input","expected":[[],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"equal separately allocated lists stop\", \"actual\": [[[1], [2], [3]], []], \"expected\": [[[1]], [[3]]], \"passed\": false}, {\"check\": \"valid empty list remains\", \"actual\": [[], [[2], [3]]], \"expected\": [[[]], [[3]]], \"passed\": false}, {\"check\": \"sentinel first\", \"actual\": [[[2], [3]], []], \"expected\": [[], [[3]]], \"passed\": false}, {\"check\": \"empty input\", \"actual\": [[], []], \"expected\": [[], []], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":37.612,"exit_code":1,"observations":[{"actual":[[[1],[2],[3]],[]],"check":"equal separately allocated lists stop","expected":[[[1]],[[3]]],"passed":false},{"actual":[[[],[2],[3]],[]],"check":"valid empty list remains","expected":[[[]],[[3]]],"passed":false},{"actual":[[[2],[3]],[]],"check":"sentinel first","expected":[[],[[3]]],"passed":false},{"actual":[[],[]],"check":"empty input","expected":[[],[]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"equal separately allocated lists stop\", \"actual\": [[[1], [2], [3]], []], \"expected\": [[[1]], [[3]]], \"passed\": false}, {\"check\": \"valid empty list remains\", \"actual\": [[[], [2], [3]], []], \"expected\": [[[]], [[3]]], \"passed\": false}, {\"check\": \"sentinel first\", \"actual\": [[[2], [3]], []], \"expected\": [[], [[3]]], \"passed\": false}, {\"check\": \"empty input\", \"actual\": [[], []], \"expected\": [[], []], \"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."}}