FA-12801 / Tournament pairing rules / Open access
Opponent tiebreak drops repeat encounters · case 01
Opponent tiebreak drops repeat encounters.
ROOT CAUSE
Opponent identifiers are deduplicated although every encounter contributes.
VERIFIED REPAIR
Sum the final integer score of each opponent occurrence; repeats and negative penalty-adjusted scores count.
Unsuccessful approach: Keeping occurrences but suppressing negative penalty-adjusted scores changes the sum.
Case contract
Synthetic model: Sum the final integer score of each opponent occurrence; repeats and negative penalty-adjusted scores count.
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(opponents, scores):
return sum(scores[x] for x in set(opponents))
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeat encounter', solve(['a','a'], {'a':N}), 2*N)
check('penalty score', solve(['a'], {'a':-N}), -N)
check('empty', solve([], {}), 0)
check('zero', solve(['a'], {'a':0}), 0)
check('mixed', solve(['a','b','a'], {'a':N,'b':2}), 2*N+2)
check('cancel', solve(['a','b'], {'a':N,'b':-N}), 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 |
|---|---|---|---|
| repeat encounter | 1 | 2 | Failed |
| penalty score | -1 | -1 | Passed |
| empty | 0 | 0 | Passed |
| zero | 0 | 0 | Passed |
| mixed | 3 | 4 | Failed |
| cancel | 0 | 0 | Passed |
SHA-256 / 1c1aaf31da0aa50f44eb24c2258328789690035c8bcd7e0da25afaa12df4daa9
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(opponents, scores):
return sum(scores[x] for x in opponents if scores[x]>0)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeat encounter', solve(['a','a'], {'a':N}), 2*N)
check('penalty score', solve(['a'], {'a':-N}), -N)
check('empty', solve([], {}), 0)
check('zero', solve(['a'], {'a':0}), 0)
check('mixed', solve(['a','b','a'], {'a':N,'b':2}), 2*N+2)
check('cancel', solve(['a','b'], {'a':N,'b':-N}), 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 |
|---|---|---|---|
| repeat encounter | 2 | 2 | Passed |
| penalty score | 0 | -1 | Failed |
| empty | 0 | 0 | Passed |
| zero | 0 | 0 | Passed |
| mixed | 4 | 4 | Passed |
| cancel | 1 | 0 | Failed |
SHA-256 / b520d86d7ca53cc1d1037bec9eedc360e733866d273640e73177e6493776e6ba
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(opponents, scores):
return sum(scores[x] for x in opponents)
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('repeat encounter', solve(['a','a'], {'a':N}), 2*N)
check('penalty score', solve(['a'], {'a':-N}), -N)
check('empty', solve([], {}), 0)
check('zero', solve(['a'], {'a':0}), 0)
check('mixed', solve(['a','b','a'], {'a':N,'b':2}), 2*N+2)
check('cancel', solve(['a','b'], {'a':N,'b':-N}), 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 |
|---|---|---|---|
| repeat encounter | 2 | 2 | Passed |
| penalty score | -1 | -1 | Passed |
| empty | 0 | 0 | Passed |
| zero | 0 | 0 | Passed |
| mixed | 4 | 4 | Passed |
| cancel | 0 | 0 | Passed |
SHA-256 / b3cd0ffefbaaa97a9ce78a1bae43922ad77d9c420647c85d9b89d67d97509be3
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.169424+00:00.
Case digest / 610ad6dc69308c5123bfc48796a1007366ffb42637d85ae839477e0cc048ace0