FA-12826 / Tournament pairing rules / Open access
Withdrawn opponents disappear from historical tiebreaks · case 01
Withdrawn opponents disappear from historical tiebreaks.
ROOT CAUSE
Current active status filters already completed encounters.
VERIFIED REPAIR
Each encounter contributes its opponent final signed score, regardless of the current active flag in (score,active) records.
Unsuccessful approach: Reintroducing withdrawn players with a zero floor loses signed penalty adjustments.
Case contract
Synthetic model: Each encounter contributes its opponent final signed score, regardless of the current active flag in (score,active) records.
Why this case matters
Makes the stated pairing or standings policy executable without assuming any real federation rulebook.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(encounters, records):
return sum(records[p][0] for p in encounters if records[p][1])
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('withdrawn', solve(['a'], {'a':(N,False)}), N)
check('penalty', solve(['a'], {'a':(-N,False)}), -N)
check('active', solve(['a'], {'a':(N,True)}), N)
check('mixed', solve(['a','b'], {'a':(N,False),'b':(2,True)}), N+2)
check('empty', solve([], {}), 0)
check('zero withdrawn', solve(['a'], {'a':(0,False)}), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| withdrawn | 0 | 1 | Failed |
| penalty | 0 | -1 | Failed |
| active | 1 | 1 | Passed |
| mixed | 2 | 3 | Failed |
| empty | 0 | 0 | Passed |
| zero withdrawn | 0 | 0 | Passed |
SHA-256 / 658516157ba9a5f13fb04740f02f7f1ddeb11c7aff29f17cbcdd2261210bcbe7
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(encounters, records):
return sum(max(0,records[p][0]) for p in encounters)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('withdrawn', solve(['a'], {'a':(N,False)}), N)
check('penalty', solve(['a'], {'a':(-N,False)}), -N)
check('active', solve(['a'], {'a':(N,True)}), N)
check('mixed', solve(['a','b'], {'a':(N,False),'b':(2,True)}), N+2)
check('empty', solve([], {}), 0)
check('zero withdrawn', solve(['a'], {'a':(0,False)}), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| withdrawn | 1 | 1 | Passed |
| penalty | 0 | -1 | Failed |
| active | 1 | 1 | Passed |
| mixed | 3 | 3 | Passed |
| empty | 0 | 0 | Passed |
| zero withdrawn | 0 | 0 | Passed |
SHA-256 / a1e6320aac0fef3d96802df108327489634ceb547ed0649134635902ea9ebee3
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(encounters, records):
return sum(records[p][0] for p in encounters)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('withdrawn', solve(['a'], {'a':(N,False)}), N)
check('penalty', solve(['a'], {'a':(-N,False)}), -N)
check('active', solve(['a'], {'a':(N,True)}), N)
check('mixed', solve(['a','b'], {'a':(N,False),'b':(2,True)}), N+2)
check('empty', solve([], {}), 0)
check('zero withdrawn', solve(['a'], {'a':(0,False)}), 0)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| withdrawn | 1 | 1 | Passed |
| penalty | -1 | -1 | Passed |
| active | 1 | 1 | Passed |
| mixed | 3 | 3 | Passed |
| empty | 0 | 0 | Passed |
| zero withdrawn | 0 | 0 | Passed |
SHA-256 / 7eef2f1982b1718d6d993d2a69e60c2c766c6f5908348a24fbc4eab2764c84c7
Verification & scope
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.
Observations recorded using Python 3.12.14 at 2026-09-29T14:39:00.567534+00:00.
Case digest / 4b854d9bbef1fe272d435c82f3c53df64d476b0d04c39aed9f6ebc4c90cdbc63