FA-83901 / Sports scoring and tiebreakers / Open access
Set closed at six games without a two-game lead · case 01
A 6-5 set is recorded as complete.
ROOT CAUSE
The set closure only requires six games, not a two-game lead.
VERIFIED REPAIR
Require a two-game lead at six games (or seven games).
Unsuccessful approach: Checking only player A for the two-game lead lets B close 6-5 sets and delays B at 6-4.
Case contract
games is a string of game winners (A/B); best_of is 3 or 5. A set is won by the first player to 6 games with a lead of two, or at 7 games (7-5, or 7-6 after the tiebreak game played at 6-6). The match ends when a player has won best_of // 2 + 1 sets; later games are ignored. Return [set scores as "a-b" strings in A-B order, match winner or None]; an unfinished set with at least one game is appended as its current score.
Why this case matters
Tournament live-results feeds reconstruct set scores from game-level events.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(games, best_of):
sets = []
a = b = 0
won = {'A': 0, 'B': 0}
need = best_of // 2 + 1
for g in games:
if g == 'A':
a += 1
else:
b += 1
if (max(a, b) >= 6) or max(a, b) == 7:
w = 'A' if a > b else 'B'
won[w] += 1
sets.append('%d-%d' % (a, b))
a = b = 0
if won[w] == need:
return [sets, w]
if a or b:
sets.append('%d-%d' % (a, b))
return [sets, None]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBAABAABABAABBBBBAAAAB', 3), [['7-5', '4-6'], None]),
('regression: six game lead', ('BABBBBBABAABBBBAAAAABBA', 3), [['1-6', '7-5', '2-2'], None]),
('variant scenario 1', ('AAABBAAAAAABB', 5), [['6-2', '3-2'], None]),
('variant scenario 2', ('BAAAAABAABBBBAAAABABAABAABA', 3), [['6-2', '7-6'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('AAAABAAABBBBAAABBAABBAABA', 5), [['6-1', '4-6', '5-3'], None]),
('regression: six game lead', ('BAAAABBBABBAAAAA', 3), [['7-6', '3-0'], None]),
('variant scenario 1', ('BAAAA', 3), [['4-1'], None]),
('variant scenario 2',
('BAAAABABABABAABBBABABAAAAAAAAAA', 5),
[['6-3', '4-6', '6-1', '5-0'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBBBBBBBBABAABABBBBBAAAAA', 3), [['0-6', '4-6'], 'B']),
('regression: six game lead',
('BBABAAAABBAAABBABAABABBAAABBBABBAAABAA', 3),
[['7-5', '7-6'], 'A']),
('variant scenario 1', ('ABAABABBBABBBAABBBAAAAA', 5), [['5-7', '6-4', '1-0'], None]),
('variant scenario 2', ('BAAABBAABABB', 3), [['6-4', '0-2'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('BAAAAAAAAABBBAABBABBBBAABBBAA', 5),
[['6-1', '6-7', '4-5'], None]),
('regression: six game lead',
('BAABAAABBBABBABABBABBBBBAABBABBBABBAAAABABBABAA', 3),
[['6-7', '3-6'], 'B']),
('variant scenario 1', ('AAABA', 5), [['4-1'], None]),
('variant scenario 2', ('BBAAABABAABAAAAAAAAAAAABABB', 5), [['6-4', '6-1', '6-0'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('ABABBAABABAABAAAABAABAABBBAAAABAAAAAABBAAAABBBAAAABBAABBAB', 3),
[['7-5', '6-2'], 'A']),
('regression: six game lead',
('ABBAABBBBAABABABAAABBABAABAAAABBAAAA', 3),
[['3-6', '6-3', '6-4'], 'A']),
('variant scenario 1', ('BAAABAABABAAABABAABABBBBBB', 3), [['6-3', '6-3'], 'A']),
('variant scenario 2', ('AAABAAAAAABAAAABAAAABBABBAAABBAAABABAAA', 3), [['6-1', '6-1'], 'A'])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
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 |
|---|---|---|---|
| control bagel set | [['6-0'], None] | [['6-0'], None] | Passed |
| boundary seven-five | [['6-5', '1-0'], None] | [['7-5'], None] | Failed |
| boundary tiebreak set | [['6-5', '0-2'], None] | [['6-7'], None] | Failed |
| control straight sets | [['6-0', '6-0'], 'A'] | [['6-0', '6-0'], 'A'] | Passed |
| control in-progress set | [['6-0', '0-1'], None] | [['6-0', '0-1'], None] | Passed |
| control empty | [[], None] | [[], None] | Passed |
| regression: six game lead | [['6-5', '5-6'], None] | [['7-5', '4-6'], None] | Failed |
| regression: six game lead | [['1-6', '6-5', '3-2'], None] | [['1-6', '7-5', '2-2'], None] | Failed |
| variant scenario 1 | [['6-2', '3-2'], None] | [['6-2', '3-2'], None] | Passed |
| variant scenario 2 | [['6-2', '6-5'], 'A'] | [['6-2', '7-6'], 'A'] | Failed |
SHA-256 / a1fba748436c4d3567468b8108112ccac7ac52cc66cd8abdaa0d0f2af9bf0e44
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(games, best_of):
sets = []
a = b = 0
won = {'A': 0, 'B': 0}
need = best_of // 2 + 1
for g in games:
if g == 'A':
a += 1
else:
b += 1
if (a >= 6 and a - b >= 2) or max(a, b) == 7:
w = 'A' if a > b else 'B'
won[w] += 1
sets.append('%d-%d' % (a, b))
a = b = 0
if won[w] == need:
return [sets, w]
if a or b:
sets.append('%d-%d' % (a, b))
return [sets, None]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBAABAABABAABBBBBAAAAB', 3), [['7-5', '4-6'], None]),
('regression: six game lead', ('BABBBBBABAABBBBAAAAABBA', 3), [['1-6', '7-5', '2-2'], None]),
('variant scenario 1', ('AAABBAAAAAABB', 5), [['6-2', '3-2'], None]),
('variant scenario 2', ('BAAAAABAABBBBAAAABABAABAABA', 3), [['6-2', '7-6'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('AAAABAAABBBBAAABBAABBAABA', 5), [['6-1', '4-6', '5-3'], None]),
('regression: six game lead', ('BAAAABBBABBAAAAA', 3), [['7-6', '3-0'], None]),
('variant scenario 1', ('BAAAA', 3), [['4-1'], None]),
('variant scenario 2',
('BAAAABABABABAABBBABABAAAAAAAAAA', 5),
[['6-3', '4-6', '6-1', '5-0'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBBBBBBBBABAABABBBBBAAAAA', 3), [['0-6', '4-6'], 'B']),
('regression: six game lead',
('BBABAAAABBAAABBABAABABBAAABBBABBAAABAA', 3),
[['7-5', '7-6'], 'A']),
('variant scenario 1', ('ABAABABBBABBBAABBBAAAAA', 5), [['5-7', '6-4', '1-0'], None]),
('variant scenario 2', ('BAAABBAABABB', 3), [['6-4', '0-2'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('BAAAAAAAAABBBAABBABBBBAABBBAA', 5),
[['6-1', '6-7', '4-5'], None]),
('regression: six game lead',
('BAABAAABBBABBABABBABBBBBAABBABBBABBAAAABABBABAA', 3),
[['6-7', '3-6'], 'B']),
('variant scenario 1', ('AAABA', 5), [['4-1'], None]),
('variant scenario 2', ('BBAAABABAABAAAAAAAAAAAABABB', 5), [['6-4', '6-1', '6-0'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('ABABBAABABAABAAAABAABAABBBAAAABAAAAAABBAAAABBBAAAABBAABBAB', 3),
[['7-5', '6-2'], 'A']),
('regression: six game lead',
('ABBAABBBBAABABABAAABBABAABAAAABBAAAA', 3),
[['3-6', '6-3', '6-4'], 'A']),
('variant scenario 1', ('BAAABAABABAAABABAABABBBBBB', 3), [['6-3', '6-3'], 'A']),
('variant scenario 2', ('AAABAAAAAABAAAABAAAABBABBAAABBAAABABAAA', 3), [['6-1', '6-1'], 'A'])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
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 |
|---|---|---|---|
| control bagel set | [['6-0'], None] | [['6-0'], None] | Passed |
| boundary seven-five | [['7-5'], None] | [['7-5'], None] | Passed |
| boundary tiebreak set | [['6-7'], None] | [['6-7'], None] | Passed |
| control straight sets | [['6-0', '6-0'], 'A'] | [['6-0', '6-0'], 'A'] | Passed |
| control in-progress set | [['6-0', '0-1'], None] | [['6-0', '0-1'], None] | Passed |
| control empty | [[], None] | [[], None] | Passed |
| regression: six game lead | [['7-5', '4-6'], None] | [['7-5', '4-6'], None] | Passed |
| regression: six game lead | [['2-7', '6-4', '2-2'], None] | [['1-6', '7-5', '2-2'], None] | Failed |
| variant scenario 1 | [['6-2', '3-2'], None] | [['6-2', '3-2'], None] | Passed |
| variant scenario 2 | [['6-2', '7-6'], 'A'] | [['6-2', '7-6'], 'A'] | Passed |
SHA-256 / 50fdf9a39fa29f296a4c032d0bb3d789501fccbc3cdb90b411a54b61ce619193
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(games, best_of):
sets = []
a = b = 0
won = {'A': 0, 'B': 0}
need = best_of // 2 + 1
for g in games:
if g == 'A':
a += 1
else:
b += 1
if (max(a, b) >= 6 and abs(a - b) >= 2) or max(a, b) == 7:
w = 'A' if a > b else 'B'
won[w] += 1
sets.append('%d-%d' % (a, b))
a = b = 0
if won[w] == need:
return [sets, w]
if a or b:
sets.append('%d-%d' % (a, b))
return [sets, None]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
def run(args):
try:
return solve(*args)
except Exception as exc:
return 'raised ' + type(exc).__name__
cases = [[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBAABAABABAABBBBBAAAAB', 3), [['7-5', '4-6'], None]),
('regression: six game lead', ('BABBBBBABAABBBBAAAAABBA', 3), [['1-6', '7-5', '2-2'], None]),
('variant scenario 1', ('AAABBAAAAAABB', 5), [['6-2', '3-2'], None]),
('variant scenario 2', ('BAAAAABAABBBBAAAABABAABAABA', 3), [['6-2', '7-6'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('AAAABAAABBBBAAABBAABBAABA', 5), [['6-1', '4-6', '5-3'], None]),
('regression: six game lead', ('BAAAABBBABBAAAAA', 3), [['7-6', '3-0'], None]),
('variant scenario 1', ('BAAAA', 3), [['4-1'], None]),
('variant scenario 2',
('BAAAABABABABAABBBABABAAAAAAAAAA', 5),
[['6-3', '4-6', '6-1', '5-0'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead', ('BBBBBBBBBABAABABBBBBAAAAA', 3), [['0-6', '4-6'], 'B']),
('regression: six game lead',
('BBABAAAABBAAABBABAABABBAAABBBABBAAABAA', 3),
[['7-5', '7-6'], 'A']),
('variant scenario 1', ('ABAABABBBABBBAABBBAAAAA', 5), [['5-7', '6-4', '1-0'], None]),
('variant scenario 2', ('BAAABBAABABB', 3), [['6-4', '0-2'], None])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('BAAAAAAAAABBBAABBABBBBAABBBAA', 5),
[['6-1', '6-7', '4-5'], None]),
('regression: six game lead',
('BAABAAABBBABBABABBABBBBBAABBABBBABBAAAABABBABAA', 3),
[['6-7', '3-6'], 'B']),
('variant scenario 1', ('AAABA', 5), [['4-1'], None]),
('variant scenario 2', ('BBAAABABAABAAAAAAAAAAAABABB', 5), [['6-4', '6-1', '6-0'], 'A'])],
[('control bagel set', ('AAAAAA', 3), [['6-0'], None]),
('boundary seven-five', ('AAAAABBBBBAA', 3), [['7-5'], None]),
('boundary tiebreak set', ('AAAAABBBBBABB', 3), [['6-7'], None]),
('control straight sets', ('AAAAAAAAAAAA', 3), [['6-0', '6-0'], 'A']),
('control in-progress set', ('AAAAAAB', 3), [['6-0', '0-1'], None]),
('control empty', ('', 5), [[], None]),
('regression: six game lead',
('ABABBAABABAABAAAABAABAABBBAAAABAAAAAABBAAAABBBAAAABBAABBAB', 3),
[['7-5', '6-2'], 'A']),
('regression: six game lead',
('ABBAABBBBAABABABAAABBABAABAAAABBAAAA', 3),
[['3-6', '6-3', '6-4'], 'A']),
('variant scenario 1', ('BAAABAABABAAABABAABABBBBBB', 3), [['6-3', '6-3'], 'A']),
('variant scenario 2', ('AAABAAAAAABAAAABAAAABBABBAAABBAAABABAAA', 3), [['6-1', '6-1'], 'A'])]]
for label, args, expected in cases[N - 1]:
check(label, run(args), expected)
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 |
|---|---|---|---|
| control bagel set | [['6-0'], None] | [['6-0'], None] | Passed |
| boundary seven-five | [['7-5'], None] | [['7-5'], None] | Passed |
| boundary tiebreak set | [['6-7'], None] | [['6-7'], None] | Passed |
| control straight sets | [['6-0', '6-0'], 'A'] | [['6-0', '6-0'], 'A'] | Passed |
| control in-progress set | [['6-0', '0-1'], None] | [['6-0', '0-1'], None] | Passed |
| control empty | [[], None] | [[], None] | Passed |
| regression: six game lead | [['7-5', '4-6'], None] | [['7-5', '4-6'], None] | Passed |
| regression: six game lead | [['1-6', '7-5', '2-2'], None] | [['1-6', '7-5', '2-2'], None] | Passed |
| variant scenario 1 | [['6-2', '3-2'], None] | [['6-2', '3-2'], None] | Passed |
| variant scenario 2 | [['6-2', '7-6'], 'A'] | [['6-2', '7-6'], 'A'] | Passed |
SHA-256 / d4f19d2238d94c604dd2b54b6f3ba7b968ac02619176717c843af0c528daa786
Verification & scope
Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any governing body rulebook or operator house rules. 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:50:25.857791+00:00.
Case digest / 4e1253cfe89e869b6d722bc282e41cce8ea9ab023385079411c07ea918123583