FAILURE MAP
← Case archive

FA-12816 / Tournament pairing rules / Open access

Unplayed results are credited as draws · case 01

Unplayed results are credited as draws.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

A catch-all result branch awards one point to pending fixtures.

VERIFIED REPAIR

Result codes W,D,L,P,B award 3,1,0,0,3 points respectively; total all supplied records.

Unsuccessful approach: Explicit pending handling still awards the wrong configured bye credit.

Case contract

Synthetic model: Result codes W,D,L,P,B award 3,1,0,0,3 points respectively; total all supplied 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(results):
    return sum(3 if r=='W' else 0 if r=='L' else 1 for r in results)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('pending', solve(["P"]*N), 0)
check('bye', solve(["B"]*N), 3*N)
check('draw', solve(["D"]*N), N)
check('win', solve(["W"]*N), 3*N)
check('loss', solve(["L"]*N), 0)
check('mixed', solve(["W","D","P","B","L"]*N), 7*N)
check('empty', solve([]), 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 fixtureActualExpectedOutcome
pending10Failed
bye13Failed
draw11Passed
win33Passed
loss00Passed
mixed67Failed
empty00Passed

SHA-256 / 349820df9c6688e3cdfcc72e10cdc700e3cb6047ffed1f3ece0c568d63634666

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(results):
    return sum(3 if r=='W' else 1 if r in ('D','B') else 0 for r in results)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('pending', solve(["P"]*N), 0)
check('bye', solve(["B"]*N), 3*N)
check('draw', solve(["D"]*N), N)
check('win', solve(["W"]*N), 3*N)
check('loss', solve(["L"]*N), 0)
check('mixed', solve(["W","D","P","B","L"]*N), 7*N)
check('empty', solve([]), 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 fixtureActualExpectedOutcome
pending00Passed
bye13Failed
draw11Passed
win33Passed
loss00Passed
mixed57Failed
empty00Passed

SHA-256 / 8fecbf6597c28bcbb3204ea6b86db3a6d2b7cea2610a3cc655d34ce98f690a0e

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(results):
    return sum({'W':3,'D':1,'L':0,'P':0,'B':3}[r] for r in results)
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
check('pending', solve(["P"]*N), 0)
check('bye', solve(["B"]*N), 3*N)
check('draw', solve(["D"]*N), N)
check('win', solve(["W"]*N), 3*N)
check('loss', solve(["L"]*N), 0)
check('mixed', solve(["W","D","P","B","L"]*N), 7*N)
check('empty', solve([]), 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 fixtureActualExpectedOutcome
pending00Passed
bye33Passed
draw11Passed
win33Passed
loss00Passed
mixed77Passed
empty00Passed

SHA-256 / c76760e12fffc60528fed2ecf1ed2b683c1bd32e46b496df148237051140436a

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.483212+00:00.

Case digest / 3d24b3d9263bbf541263bb7eb2fa624762425dfd4a0a8141da5c1fa33c7d2679