{"abstract":"Phi lowering selects operands by block position.","category":"Compiler transformation correctness","checks":6,"contract":"Given incoming (predecessor,value) pairs and a present predecessor label, return that edge value regardless of list order.","evaluation_group":"model-91d223314877beba","failed_approach":"Sorting labels before indexing still loses predecessor identity.","family":"z-compilers-phi-edge","id":"FA-11456","implementations":{"attempt":{"sha256":"771f002acb61ba2b7bdb9caeeac851929b57cac87c46ca915989f1f239db02c0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(incoming, pred):\n    return sorted(incoming)[0][1]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right edge', solve([('left',N),('right',N+1)],'right'), N+1)\ncheck('left edge', solve([('left',N),('right',N+1)],'left'), N)\ncheck('reordered right', solve([('right',N+1),('left',N)],'right'), N+1)\ncheck('reordered left', solve([('right',N+1),('left',N)],'left'), N)\ncheck('single predecessor', solve([('entry',N)],'entry'), N)\ncheck('back edge', solve([('entry',0),('back',N),('exit',N+1)],'back'), N)\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":"2019bd2938513479bad3246d73079e5e69d29421269087bea415e48723995252","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(incoming, pred):\n    return incoming[0][1]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right edge', solve([('left',N),('right',N+1)],'right'), N+1)\ncheck('left edge', solve([('left',N),('right',N+1)],'left'), N)\ncheck('reordered right', solve([('right',N+1),('left',N)],'right'), N+1)\ncheck('reordered left', solve([('right',N+1),('left',N)],'left'), N)\ncheck('single predecessor', solve([('entry',N)],'entry'), N)\ncheck('back edge', solve([('entry',0),('back',N),('exit',N+1)],'back'), N)\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":"369153c67f622eae06864c72942c75f8beb6c6459ef4a3bba0fa647b9ccb7065","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(incoming, pred):\n    return dict(incoming)[pred]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('right edge', solve([('left',N),('right',N+1)],'right'), N+1)\ncheck('left edge', solve([('left',N),('right',N+1)],'left'), N)\ncheck('reordered right', solve([('right',N+1),('left',N)],'right'), N+1)\ncheck('reordered left', solve([('right',N+1),('left',N)],'left'), N)\ncheck('single predecessor', solve([('entry',N)],'entry'), N)\ncheck('back edge', solve([('entry',0),('back',N),('exit',N+1)],'back'), N)\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":"z-compilers-phi-edge","generated_at":"2026-09-29T14:38:48.074332+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"A deterministic miniature compiler-pass model; inputs are explicit IR facts, not a production compiler.","repair":"Select the value attached to the actual predecessor label.","root_cause":"Incoming values are indexed by predecessor list order instead of edge identity.","sha256":"76fda9b916621fd52a602786ad94202d36ae3be65852d7b3dd9b76f607c1fb58","title":"Phi lowering selects operands by block position · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.484,"exit_code":1,"observations":[{"actual":1,"check":"right edge","expected":2,"passed":false},{"actual":1,"check":"left edge","expected":1,"passed":true},{"actual":1,"check":"reordered right","expected":2,"passed":false},{"actual":1,"check":"reordered left","expected":1,"passed":true},{"actual":1,"check":"single predecessor","expected":1,"passed":true},{"actual":1,"check":"back edge","expected":1,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right edge\", \"actual\": 1, \"expected\": 2, \"passed\": false}, {\"check\": \"left edge\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"reordered right\", \"actual\": 1, \"expected\": 2, \"passed\": false}, {\"check\": \"reordered left\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"single predecessor\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"back edge\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.037,"exit_code":1,"observations":[{"actual":1,"check":"right edge","expected":2,"passed":false},{"actual":1,"check":"left edge","expected":1,"passed":true},{"actual":2,"check":"reordered right","expected":2,"passed":true},{"actual":2,"check":"reordered left","expected":1,"passed":false},{"actual":1,"check":"single predecessor","expected":1,"passed":true},{"actual":0,"check":"back edge","expected":1,"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right edge\", \"actual\": 1, \"expected\": 2, \"passed\": false}, {\"check\": \"left edge\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"reordered right\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"reordered left\", \"actual\": 2, \"expected\": 1, \"passed\": false}, {\"check\": \"single predecessor\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"back edge\", \"actual\": 0, \"expected\": 1, \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":38.035,"exit_code":0,"observations":[{"actual":2,"check":"right edge","expected":2,"passed":true},{"actual":1,"check":"left edge","expected":1,"passed":true},{"actual":2,"check":"reordered right","expected":2,"passed":true},{"actual":1,"check":"reordered left","expected":1,"passed":true},{"actual":1,"check":"single predecessor","expected":1,"passed":true},{"actual":1,"check":"back edge","expected":1,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"right edge\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"left edge\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"reordered right\", \"actual\": 2, \"expected\": 2, \"passed\": true}, {\"check\": \"reordered left\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"single predecessor\", \"actual\": 1, \"expected\": 1, \"passed\": true}, {\"check\": \"back edge\", \"actual\": 1, \"expected\": 1, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}