{"abstract":"Incomplete mini-league produces a head-to-head ranking.","category":"Tournament pairing rules","checks":6,"contract":"Synthetic model: Games contain distinct endpoints and an endpoint winner. Rank by wins then id only when every unordered pair in players has met; otherwise None. Outside games are ignored.","evaluation_group":"model-d3f35d6f34aee8c2","failed_approach":"Counting game records allows duplicate or outside games to mask missing pairs.","family":"z-tournament_pairing-head-to-head-complete","id":"FA-12811","implementations":{"attempt":{"sha256":"43190be3ecc03030125706c1235ba0c8975f8ca945adbad29c2fa38b8cdb62f8","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(players, games):\n    points={p:0 for p in players}\n    for a,b,w in games:\n        if a in points and b in points: points[w]+=1\n    if len(games)<len(players)*(len(players)-1)//2: return None\n    return sorted(players,key=lambda p:(-points[p],p))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('missing encounter', solve([N,N+1,N+2], [(N,N+1,N)]), None)\ncheck('duplicates hide missing', solve([N,N+1,N+2], [(N,N+1,N)]*3), None)\ncheck('outsider does not fill gap', solve([N,N+1], [(N+2,N+3,N+2)]), None)\ncheck('complete two', solve([N,N+1], [(N,N+1,N+1)]), [N+1,N])\ncheck('singleton', solve([N], []), [N])\ncheck('empty', solve([], []), [])\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":"372a42aca324eb608beb7ac8637acaeab9e84fe723ade5f98b3751e44e727526","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(players, games):\n    points={p:0 for p in players}\n    for a,b,w in games:\n        if a in points and b in points: points[w]+=1\n    return sorted(players,key=lambda p:(-points[p],p))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('missing encounter', solve([N,N+1,N+2], [(N,N+1,N)]), None)\ncheck('duplicates hide missing', solve([N,N+1,N+2], [(N,N+1,N)]*3), None)\ncheck('outsider does not fill gap', solve([N,N+1], [(N+2,N+3,N+2)]), None)\ncheck('complete two', solve([N,N+1], [(N,N+1,N+1)]), [N+1,N])\ncheck('singleton', solve([N], []), [N])\ncheck('empty', solve([], []), [])\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":"c22e0fe8820f70dd18ba2c645643975259cfb31482a6d1555861cefd1c711a44","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(players, games):\n    points={p:0 for p in players}; seen=set()\n    for a,b,w in games:\n        if a in points and b in points:\n            seen.add(tuple(sorted([a,b]))); points[w]+=1\n    if len(seen)!=len(players)*(len(players)-1)//2: return None\n    return sorted(players,key=lambda p:(-points[p],p))\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncheck('missing encounter', solve([N,N+1,N+2], [(N,N+1,N)]), None)\ncheck('duplicates hide missing', solve([N,N+1,N+2], [(N,N+1,N)]*3), None)\ncheck('outsider does not fill gap', solve([N,N+1], [(N+2,N+3,N+2)]), None)\ncheck('complete two', solve([N,N+1], [(N,N+1,N+1)]), [N+1,N])\ncheck('singleton', solve([N], []), [N])\ncheck('empty', solve([], []), [])\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 synthetic policy; does not implement an entire tournament system. 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-tournament_pairing-head-to-head-complete","generated_at":"2026-09-29T14:39:00.396011+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Makes the stated pairing or standings policy executable without assuming any real federation rulebook.","repair":"Games contain distinct endpoints and an endpoint winner. Rank by wins then id only when every unordered pair in players has met; otherwise None. Outside games are ignored.","root_cause":"Head-to-head ordering is used before every pair in the tied group has met.","sha256":"a99cad63209004bce17dfecb420a1fe72f23c128dfef14d017b272134e0108df","title":"Incomplete mini-league produces a head-to-head ranking · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.663,"exit_code":1,"observations":[{"actual":null,"check":"missing encounter","expected":null,"passed":true},{"actual":[1,2,3],"check":"duplicates hide missing","expected":null,"passed":false},{"actual":[1,2],"check":"outsider does not fill gap","expected":null,"passed":false},{"actual":[2,1],"check":"complete two","expected":[2,1],"passed":true},{"actual":[1],"check":"singleton","expected":[1],"passed":true},{"actual":[],"check":"empty","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"missing encounter\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicates hide missing\", \"actual\": [1, 2, 3], \"expected\": null, \"passed\": false}, {\"check\": \"outsider does not fill gap\", \"actual\": [1, 2], \"expected\": null, \"passed\": false}, {\"check\": \"complete two\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"empty\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.152,"exit_code":1,"observations":[{"actual":[1,2,3],"check":"missing encounter","expected":null,"passed":false},{"actual":[1,2,3],"check":"duplicates hide missing","expected":null,"passed":false},{"actual":[1,2],"check":"outsider does not fill gap","expected":null,"passed":false},{"actual":[2,1],"check":"complete two","expected":[2,1],"passed":true},{"actual":[1],"check":"singleton","expected":[1],"passed":true},{"actual":[],"check":"empty","expected":[],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"missing encounter\", \"actual\": [1, 2, 3], \"expected\": null, \"passed\": false}, {\"check\": \"duplicates hide missing\", \"actual\": [1, 2, 3], \"expected\": null, \"passed\": false}, {\"check\": \"outsider does not fill gap\", \"actual\": [1, 2], \"expected\": null, \"passed\": false}, {\"check\": \"complete two\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"empty\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.264,"exit_code":0,"observations":[{"actual":null,"check":"missing encounter","expected":null,"passed":true},{"actual":null,"check":"duplicates hide missing","expected":null,"passed":true},{"actual":null,"check":"outsider does not fill gap","expected":null,"passed":true},{"actual":[2,1],"check":"complete two","expected":[2,1],"passed":true},{"actual":[1],"check":"singleton","expected":[1],"passed":true},{"actual":[],"check":"empty","expected":[],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"missing encounter\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"duplicates hide missing\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"outsider does not fill gap\", \"actual\": null, \"expected\": null, \"passed\": true}, {\"check\": \"complete two\", \"actual\": [2, 1], \"expected\": [2, 1], \"passed\": true}, {\"check\": \"singleton\", \"actual\": [1], \"expected\": [1], \"passed\": true}, {\"check\": \"empty\", \"actual\": [], \"expected\": [], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}