FA-84186 / Sports scoring and tiebreakers / Open access
Closure notation reports the wrong holes figure · case 01
A 3&2 win is printed as "3&16" or "3&3".
ROOT CAUSE
The second number is the holes played instead of the holes remaining.
VERIFIED REPAIR
Print the holes remaining after the closing hole.
Unsuccessful approach: Counting the closing hole as still remaining is off by one.
Case contract
Eighteen-hole match play. holes is a string of hole results: A, B or H (halved). The match closes as soon as the lead exceeds the holes remaining: "X wins L&R" (L lead, R remaining), or "X wins L up" if it closes on the 18th. Later characters are ignored. After 18 holes level: "halved". Unfinished: "all square", "X dormie R" when the lead equals the holes remaining, otherwise "X L up".
Why this case matters
Ryder-Cup style boards and match-play brackets display closure notation like 3&2 and dormie.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(holes):
lead = 0
played = 0
for h in holes:
played += 1
if h == 'A':
lead += 1
elif h == 'B':
lead -= 1
remaining = 18 - played
if abs(lead) > remaining:
side = 'A' if lead > 0 else 'B'
if remaining == 0:
return '%s wins %d up' % (side, abs(lead))
return '%s wins %d&%d' % (side, abs(lead), played)
if played == 18:
return 'halved'
remaining = 18 - played
if lead == 0:
return 'all square'
side = 'A' if lead > 0 else 'B'
if abs(lead) == remaining:
return '%s dormie %d' % (side, remaining)
return '%s %d up' % (side, abs(lead))
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 early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHHAHBBAAABAABAAAH',), 'A wins 3&2'),
('variant scenario 1', ('AHAAAAAAB',), 'A 6 up'),
('variant scenario 2', ('AABBBHHBBBBABAA',), 'B dormie 3')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('BBAHHHHBHHABAHBHAAA',), 'A wins 1&-1'),
('variant scenario 1', ('HAAHHBBH',), 'all square'),
('variant scenario 2', ('BAABABHB',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('AHAHHABAAHHAHBAAABAABB',), 'A wins 5&3'),
('variant scenario 1', ('ABABHAHA',), 'A 2 up'),
('variant scenario 2', ('HAHAHAAAAAAAAHAHHA',), 'A wins 8&7')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('HAAAABHBBAAAHBBHAHB',), 'A wins 3&1'),
('variant scenario 1', ('ABAHBHBAA',), 'A 1 up'),
('variant scenario 2', ('BBBAAHAAABBBABH',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHBHAAAAHAAA',), 'A wins 6&5'),
('variant scenario 1', ('BABHHBHAAAABAAABBHHB',), 'A wins 4&3'),
('variant scenario 2', ('AHBAAHBAHAAAABABAABAB',), 'A wins 6&5')]]
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 early lead | A 2 up | A 2 up | Passed |
| boundary dormie | A dormie 3 | A dormie 3 | Passed |
| boundary closure three and two | B wins 3&16 | B wins 3&2 | Failed |
| boundary one up at eighteen | A wins 1 up | A wins 1 up | Passed |
| control halved match | halved | halved | Passed |
| control all square | all square | all square | Passed |
| regression: closure notation | A wins 3&16 | A wins 3&2 | Failed |
| variant scenario 1 | A 6 up | A 6 up | Passed |
| variant scenario 2 | B dormie 3 | B dormie 3 | Passed |
SHA-256 / 4450adaf7015ee5210747f6c975bc4e4011cdb57e3a69e13d311b0083927de7b
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(holes):
lead = 0
played = 0
for h in holes:
played += 1
if h == 'A':
lead += 1
elif h == 'B':
lead -= 1
remaining = 18 - played
if abs(lead) > remaining:
side = 'A' if lead > 0 else 'B'
if remaining == 0:
return '%s wins %d up' % (side, abs(lead))
return '%s wins %d&%d' % (side, abs(lead), remaining + 1)
if played == 18:
return 'halved'
remaining = 18 - played
if lead == 0:
return 'all square'
side = 'A' if lead > 0 else 'B'
if abs(lead) == remaining:
return '%s dormie %d' % (side, remaining)
return '%s %d up' % (side, abs(lead))
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 early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHHAHBBAAABAABAAAH',), 'A wins 3&2'),
('variant scenario 1', ('AHAAAAAAB',), 'A 6 up'),
('variant scenario 2', ('AABBBHHBBBBABAA',), 'B dormie 3')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('BBAHHHHBHHABAHBHAAA',), 'A wins 1&-1'),
('variant scenario 1', ('HAAHHBBH',), 'all square'),
('variant scenario 2', ('BAABABHB',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('AHAHHABAAHHAHBAAABAABB',), 'A wins 5&3'),
('variant scenario 1', ('ABABHAHA',), 'A 2 up'),
('variant scenario 2', ('HAHAHAAAAAAAAHAHHA',), 'A wins 8&7')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('HAAAABHBBAAAHBBHAHB',), 'A wins 3&1'),
('variant scenario 1', ('ABAHBHBAA',), 'A 1 up'),
('variant scenario 2', ('BBBAAHAAABBBABH',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHBHAAAAHAAA',), 'A wins 6&5'),
('variant scenario 1', ('BABHHBHAAAABAAABBHHB',), 'A wins 4&3'),
('variant scenario 2', ('AHBAAHBAHAAAABABAABAB',), 'A wins 6&5')]]
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 early lead | A 2 up | A 2 up | Passed |
| boundary dormie | A dormie 3 | A dormie 3 | Passed |
| boundary closure three and two | B wins 3&3 | B wins 3&2 | Failed |
| boundary one up at eighteen | A wins 1 up | A wins 1 up | Passed |
| control halved match | halved | halved | Passed |
| control all square | all square | all square | Passed |
| regression: closure notation | A wins 3&3 | A wins 3&2 | Failed |
| variant scenario 1 | A 6 up | A 6 up | Passed |
| variant scenario 2 | B dormie 3 | B dormie 3 | Passed |
SHA-256 / 60ef7a2d60167e37b550418c2fe8a391c08e669b2d3326fba4d8a0a8fa6d25cd
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(holes):
lead = 0
played = 0
for h in holes:
played += 1
if h == 'A':
lead += 1
elif h == 'B':
lead -= 1
remaining = 18 - played
if abs(lead) > remaining:
side = 'A' if lead > 0 else 'B'
if remaining == 0:
return '%s wins %d up' % (side, abs(lead))
return '%s wins %d&%d' % (side, abs(lead), remaining)
if played == 18:
return 'halved'
remaining = 18 - played
if lead == 0:
return 'all square'
side = 'A' if lead > 0 else 'B'
if abs(lead) == remaining:
return '%s dormie %d' % (side, remaining)
return '%s %d up' % (side, abs(lead))
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 early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHHAHBBAAABAABAAAH',), 'A wins 3&2'),
('variant scenario 1', ('AHAAAAAAB',), 'A 6 up'),
('variant scenario 2', ('AABBBHHBBBBABAA',), 'B dormie 3')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('BBAHHHHBHHABAHBHAAA',), 'A wins 1&-1'),
('variant scenario 1', ('HAAHHBBH',), 'all square'),
('variant scenario 2', ('BAABABHB',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('AHAHHABAAHHAHBAAABAABB',), 'A wins 5&3'),
('variant scenario 1', ('ABABHAHA',), 'A 2 up'),
('variant scenario 2', ('HAHAHAAAAAAAAHAHHA',), 'A wins 8&7')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('HAAAABHBBAAAHBBHAHB',), 'A wins 3&1'),
('variant scenario 1', ('ABAHBHBAA',), 'A 1 up'),
('variant scenario 2', ('BBBAAHAAABBBABH',), 'B 1 up')],
[('control early lead', ('AAH',), 'A 2 up'),
('boundary dormie', ('AAAHHHHHHHHHHHH',), 'A dormie 3'),
('boundary closure three and two', ('BBBHHHHHHHHHHHHH',), 'B wins 3&2'),
('boundary one up at eighteen', ('AHHHHHHHHHHHHHHHHH',), 'A wins 1 up'),
('control halved match', ('ABABABABABABABABAB',), 'halved'),
('control all square', ('HAB',), 'all square'),
('regression: closure notation', ('ABHBHAAAAHAAA',), 'A wins 6&5'),
('variant scenario 1', ('BABHHBHAAAABAAABBHHB',), 'A wins 4&3'),
('variant scenario 2', ('AHBAAHBAHAAAABABAABAB',), 'A wins 6&5')]]
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 early lead | A 2 up | A 2 up | Passed |
| boundary dormie | A dormie 3 | A dormie 3 | Passed |
| boundary closure three and two | B wins 3&2 | B wins 3&2 | Passed |
| boundary one up at eighteen | A wins 1 up | A wins 1 up | Passed |
| control halved match | halved | halved | Passed |
| control all square | all square | all square | Passed |
| regression: closure notation | A wins 3&2 | A wins 3&2 | Passed |
| variant scenario 1 | A 6 up | A 6 up | Passed |
| variant scenario 2 | B dormie 3 | B dormie 3 | Passed |
SHA-256 / 0e0b121aae099453f11bcfd83cb994721f95319d632bd78ef605b6f263c1d099
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:28.537717+00:00.
Case digest / c152ae86179347e89ff22f407efe61192d870b4d0e03444a12369e92cd916efd