FA-85286 / Fantasy sports scoring / Open access
Pars do not break a birdie streak · case 01
Birdie, par, birdie, birdie counts as a three-hole streak.
ROOT CAUSE
The streak resets only on bogeys.
THE FAILURE
The streak resets only on bogeys.
Unsuccessful approach: Decrementing the run lets a streak survive an intervening par.
Case contract
Score a golf round given [par, strokes] per hole, in tenths: albatross or better 13, eagle 8, birdie 3, par 0.5, bogey -0.5, double bogey or worse -1; any hole-in-one earns +5 on top. Each maximal run of three or more consecutive birdie-or-better holes earns one 3 point streak bonus. A complete 18-hole round with no bogey or worse earns +3; a complete 18-hole round under 70 strokes earns +5.
Why this case matters
Golf fantasy streak and round bonuses depend on precise run detection and completion conditions.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(holes):
pts = 0
run = 0
streaks = 0
for par, strokes in holes:
d = strokes - par
if d <= -3:
pts += 130
elif d == -2:
pts += 80
elif d == -1:
pts += 30
elif d == 0:
pts += 5
elif d == 1:
pts -= 5
else:
pts -= 10
if strokes == 1:
pts += 50
if d < 0:
run += 1
if run == 3:
streaks += 1
elif d > 0:
run = 0
pts += 30 * streaks
if len(holes) == 18 and all(s - p <= 0 for p, s in holes):
pts += 30
if len(holes) == 18 and sum(s for _, s in holes) < 70:
pts += 50
return pts
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: streak reset on par',
[[[3, 2], [4, 3], [4, 3], [3, 3], [4, 3], [4, 4], [3, 2], [4, 4], [4, 4], [4, 4], [4, 1], [5, 3], [4, 3],
[4, 2]]],
605),
('partial repair probe: streak reset on par',
[[[3, 5], [4, 3], [4, 3], [4, 3], [3, 2], [4, 4], [5, 4], [5, 4], [4, 1], [4, 4], [4, 3], [5, 4], [4, 4],
[5, 6]]],
480),
('second regression',
[[[5, 5], [5, 5], [5, 5], [3, 2], [4, 3], [4, 5], [4, 2], [4, 4], [4, 4], [4, 3], [3, 4], [4, 3], [3, 3],
[3, 3], [5, 4], [4, 4], [4, 3], [4, 4]]],
345),
('normal control 1',
[[[3, 3], [4, 4], [5, 5], [3, 1], [4, 2], [5, 6], [4, 3], [4, 3], [4, 3], [4, 3], [3, 3], [5, 4], [4, 4],
[4, 3], [4, 6], [4, 3], [4, 5], [5, 5]]],
510),
('normal control 2',
[[[4, 3], [4, 3], [3, 2], [5, 4], [3, 2], [4, 4], [4, 4], [4, 3], [3, 3], [4, 5], [4, 4], [4, 4], [5, 4],
[5, 3], [4, 1], [3, 2], [3, 3], [4, 4]]],
640),
('normal control 3',
[[[3, 1], [4, 4], [4, 3], [4, 4], [3, 3], [4, 3], [4, 4], [5, 4], [5, 4], [5, 5], [4, 4], [3, 2], [4, 3],
[3, 1]]],
500),
('normal control 4',
[[[4, 4], [4, 3], [4, 1], [4, 3], [4, 4], [4, 4], [5, 5], [3, 3], [5, 5], [3, 2], [4, 4], [5, 4], [3, 3],
[3, 2], [3, 3], [4, 4], [4, 2], [5, 5]]],
575)],
[('regression: streak reset on par',
[[[4, 4], [3, 2], [4, 4], [5, 1], [5, 5], [4, 4], [3, 2], [3, 2], [5, 5], [4, 3], [5, 1], [5, 6], [4, 3],
[5, 6]]],
525),
('partial repair probe: streak reset on par',
[[[4, 4], [4, 4], [4, 3], [4, 4], [3, 3], [3, 3], [3, 5], [3, 3], [3, 2], [4, 2], [4, 3], [4, 6], [4, 3],
[4, 5], [4, 3], [3, 2], [4, 3], [4, 3]]],
435),
('second regression',
[[[4, 4], [5, 5], [3, 4], [3, 5], [3, 2], [4, 3], [3, 3], [5, 4], [5, 1], [4, 3], [5, 6], [4, 4], [4, 3],
[3, 2], [4, 4], [4, 4], [3, 2], [4, 4]]],
485),
('normal control 1',
[[[4, 4], [4, 1], [3, 3], [3, 2], [4, 4], [4, 1], [4, 3], [4, 3], [4, 3], [5, 4], [5, 5], [5, 5], [3, 2],
[4, 3], [5, 5], [4, 3], [4, 4], [3, 3]]],
750),
('normal control 2',
[[[5, 6], [4, 3], [3, 1], [5, 4], [4, 3], [5, 5], [4, 4], [3, 3], [3, 3], [3, 2], [5, 6], [4, 3], [5, 5],
[5, 5], [4, 4], [4, 3], [4, 3], [3, 2]]],
505),
('normal control 3',
[[[3, 3], [3, 3], [3, 3], [4, 4], [3, 1], [3, 3], [4, 3], [3, 4], [3, 5], [4, 4], [5, 5], [5, 7], [4, 2],
[5, 5], [4, 5], [4, 2], [3, 2], [5, 5]]],
415),
('normal control 4', [[[4, 4], [4, 5], [4, 4], [5, 4], [5, 4], [4, 4], [4, 3], [5, 4], [4, 3]]], 190)],
[('regression: streak reset on par',
[[[4, 4], [4, 4], [4, 1], [4, 3], [4, 4], [5, 5], [4, 3], [4, 4], [3, 3], [4, 3], [3, 2], [4, 4], [3, 3],
[4, 2], [3, 3], [4, 4], [3, 3], [3, 3]]],
520),
('partial repair probe: streak reset on par',
[[[3, 3], [4, 4], [3, 2], [4, 3], [3, 2], [5, 4], [3, 3], [5, 3], [4, 3], [4, 3], [5, 5], [4, 3], [4, 3],
[5, 4], [4, 4], [3, 3], [4, 3], [4, 4]]],
585),
('second regression',
[[[3, 2], [3, 3], [4, 4], [4, 5], [3, 3], [5, 5], [4, 4], [3, 3], [3, 3], [4, 4], [4, 5], [4, 3], [3, 3],
[3, 2], [5, 5], [5, 3], [5, 4], [4, 4]]],
295),
('normal control 1',
[[[4, 4], [4, 4], [3, 3], [4, 4], [3, 2], [5, 4], [3, 3], [4, 4], [4, 2], [4, 3], [5, 5], [4, 4], [4, 3],
[5, 4], [4, 3], [4, 4], [3, 3], [3, 3]]],
425),
('normal control 2',
[[[3, 2], [3, 5], [4, 3], [4, 4], [3, 3], [5, 5], [4, 1], [3, 4], [3, 2], [5, 5], [4, 4], [4, 5], [5, 4],
[4, 4], [4, 4], [5, 5], [3, 3], [4, 4]]],
380),
('normal control 3',
[[[5, 4], [4, 2], [3, 2], [5, 5], [5, 5], [3, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 4], [4, 3], [4, 6],
[4, 4], [4, 4], [4, 4], [5, 7], [4, 4]]],
265),
('normal control 4',
[[[4, 4], [4, 5], [4, 3], [4, 6], [3, 3], [4, 3], [5, 4], [4, 4], [4, 4], [4, 5], [5, 3], [5, 5], [3, 3],
[4, 1]]],
360)],
[('regression: streak reset on par',
[[[4, 3], [3, 2], [4, 4], [4, 4], [3, 2], [5, 3], [4, 3], [5, 4], [3, 3], [5, 4], [5, 5], [4, 3], [4, 3],
[3, 1], [5, 4], [4, 4], [4, 3], [5, 5]]],
680),
('partial repair probe: streak reset on par',
[[[4, 3], [4, 4], [4, 4], [5, 3], [5, 4], [5, 4], [5, 5], [3, 2], [5, 5]]], 250),
('second regression',
[[[3, 2], [4, 4], [4, 4], [4, 3], [4, 3], [4, 4], [4, 6], [4, 3], [4, 5], [5, 4], [4, 3], [5, 6], [5, 4],
[4, 3], [4, 3], [3, 2], [3, 5], [5, 1]]],
545),
('normal control 1', [[[5, 5], [4, 3], [4, 4], [4, 4], [5, 5], [4, 4], [4, 3], [5, 5], [5, 6]]], 85),
('normal control 2',
[[[5, 4], [4, 4], [4, 5], [3, 5], [5, 5], [4, 4], [3, 3], [5, 6], [5, 4], [4, 4], [5, 3], [5, 3], [4, 4],
[5, 4], [5, 4], [3, 1], [5, 7], [4, 4]]],
445),
('normal control 3',
[[[3, 3], [5, 5], [3, 2], [4, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 2], [4, 3], [3, 3], [3, 2], [4, 4],
[3, 3], [4, 6], [4, 2], [4, 3], [4, 3]]],
510),
('normal control 4',
[[[3, 2], [4, 3], [3, 4], [5, 5], [3, 1], [5, 5], [4, 2], [3, 2], [5, 4], [4, 3], [5, 4], [3, 3], [4, 4],
[4, 2]]],
515)],
[('regression: streak reset on par',
[[[5, 4], [4, 4], [5, 5], [3, 3], [4, 4], [4, 4], [5, 4], [3, 3], [5, 5], [4, 2], [4, 3], [5, 5], [4, 4],
[4, 4]]],
220),
('partial repair probe: streak reset on par',
[[[4, 5], [5, 4], [3, 1], [5, 5], [4, 4], [4, 3], [4, 3], [5, 4], [4, 4], [5, 5], [3, 1], [4, 3], [4, 4],
[4, 3], [5, 4], [3, 4], [5, 7], [4, 4]]],
560),
('second regression',
[[[5, 5], [4, 4], [4, 6], [4, 3], [4, 4], [4, 4], [3, 2], [4, 3], [4, 4], [4, 4], [5, 7], [4, 3], [4, 6],
[5, 5], [4, 3], [5, 4], [4, 3], [4, 5]]],
240),
('normal control 1',
[[[5, 5], [5, 4], [4, 4], [5, 5], [4, 4], [4, 4], [5, 5], [3, 3], [3, 3], [5, 4], [5, 5], [4, 4], [3, 3],
[5, 5]]],
120),
('normal control 2',
[[[4, 4], [4, 4], [3, 2], [5, 5], [3, 3], [3, 1], [3, 2], [3, 2], [4, 3], [3, 1], [3, 3], [4, 4], [5, 5],
[3, 4]]],
440),
('normal control 3', [[[4, 3], [5, 5], [4, 4], [4, 3], [3, 3], [5, 4], [5, 4], [5, 4], [5, 4]]], 225),
('normal control 4',
[[[3, 3], [4, 3], [3, 3], [3, 1], [4, 4], [4, 4], [4, 4], [5, 4], [4, 3], [4, 4], [4, 4], [5, 4], [3, 3],
[3, 1], [4, 3], [3, 2], [3, 3], [5, 5]]],
600)]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*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 |
|---|---|---|---|
| regression: streak reset on par | 575 | 605 | Failed |
| partial repair probe: streak reset on par | 450 | 480 | Failed |
| second regression | 375 | 345 | Failed |
| normal control 1 | 510 | 510 | Passed |
| normal control 2 | 640 | 640 | Passed |
| normal control 3 | 500 | 500 | Passed |
| normal control 4 | 575 | 575 | Passed |
SHA-256 / a744074fe0e4a90d8204523f59db2a48ca65c2dfc1a0fc8a109320178d06eb31
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(holes):
pts = 0
run = 0
streaks = 0
for par, strokes in holes:
d = strokes - par
if d <= -3:
pts += 130
elif d == -2:
pts += 80
elif d == -1:
pts += 30
elif d == 0:
pts += 5
elif d == 1:
pts -= 5
else:
pts -= 10
if strokes == 1:
pts += 50
if d < 0:
run += 1
if run == 3:
streaks += 1
else:
run = max(run - 1, 0)
pts += 30 * streaks
if len(holes) == 18 and all(s - p <= 0 for p, s in holes):
pts += 30
if len(holes) == 18 and sum(s for _, s in holes) < 70:
pts += 50
return pts
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: streak reset on par',
[[[3, 2], [4, 3], [4, 3], [3, 3], [4, 3], [4, 4], [3, 2], [4, 4], [4, 4], [4, 4], [4, 1], [5, 3], [4, 3],
[4, 2]]],
605),
('partial repair probe: streak reset on par',
[[[3, 5], [4, 3], [4, 3], [4, 3], [3, 2], [4, 4], [5, 4], [5, 4], [4, 1], [4, 4], [4, 3], [5, 4], [4, 4],
[5, 6]]],
480),
('second regression',
[[[5, 5], [5, 5], [5, 5], [3, 2], [4, 3], [4, 5], [4, 2], [4, 4], [4, 4], [4, 3], [3, 4], [4, 3], [3, 3],
[3, 3], [5, 4], [4, 4], [4, 3], [4, 4]]],
345),
('normal control 1',
[[[3, 3], [4, 4], [5, 5], [3, 1], [4, 2], [5, 6], [4, 3], [4, 3], [4, 3], [4, 3], [3, 3], [5, 4], [4, 4],
[4, 3], [4, 6], [4, 3], [4, 5], [5, 5]]],
510),
('normal control 2',
[[[4, 3], [4, 3], [3, 2], [5, 4], [3, 2], [4, 4], [4, 4], [4, 3], [3, 3], [4, 5], [4, 4], [4, 4], [5, 4],
[5, 3], [4, 1], [3, 2], [3, 3], [4, 4]]],
640),
('normal control 3',
[[[3, 1], [4, 4], [4, 3], [4, 4], [3, 3], [4, 3], [4, 4], [5, 4], [5, 4], [5, 5], [4, 4], [3, 2], [4, 3],
[3, 1]]],
500),
('normal control 4',
[[[4, 4], [4, 3], [4, 1], [4, 3], [4, 4], [4, 4], [5, 5], [3, 3], [5, 5], [3, 2], [4, 4], [5, 4], [3, 3],
[3, 2], [3, 3], [4, 4], [4, 2], [5, 5]]],
575)],
[('regression: streak reset on par',
[[[4, 4], [3, 2], [4, 4], [5, 1], [5, 5], [4, 4], [3, 2], [3, 2], [5, 5], [4, 3], [5, 1], [5, 6], [4, 3],
[5, 6]]],
525),
('partial repair probe: streak reset on par',
[[[4, 4], [4, 4], [4, 3], [4, 4], [3, 3], [3, 3], [3, 5], [3, 3], [3, 2], [4, 2], [4, 3], [4, 6], [4, 3],
[4, 5], [4, 3], [3, 2], [4, 3], [4, 3]]],
435),
('second regression',
[[[4, 4], [5, 5], [3, 4], [3, 5], [3, 2], [4, 3], [3, 3], [5, 4], [5, 1], [4, 3], [5, 6], [4, 4], [4, 3],
[3, 2], [4, 4], [4, 4], [3, 2], [4, 4]]],
485),
('normal control 1',
[[[4, 4], [4, 1], [3, 3], [3, 2], [4, 4], [4, 1], [4, 3], [4, 3], [4, 3], [5, 4], [5, 5], [5, 5], [3, 2],
[4, 3], [5, 5], [4, 3], [4, 4], [3, 3]]],
750),
('normal control 2',
[[[5, 6], [4, 3], [3, 1], [5, 4], [4, 3], [5, 5], [4, 4], [3, 3], [3, 3], [3, 2], [5, 6], [4, 3], [5, 5],
[5, 5], [4, 4], [4, 3], [4, 3], [3, 2]]],
505),
('normal control 3',
[[[3, 3], [3, 3], [3, 3], [4, 4], [3, 1], [3, 3], [4, 3], [3, 4], [3, 5], [4, 4], [5, 5], [5, 7], [4, 2],
[5, 5], [4, 5], [4, 2], [3, 2], [5, 5]]],
415),
('normal control 4', [[[4, 4], [4, 5], [4, 4], [5, 4], [5, 4], [4, 4], [4, 3], [5, 4], [4, 3]]], 190)],
[('regression: streak reset on par',
[[[4, 4], [4, 4], [4, 1], [4, 3], [4, 4], [5, 5], [4, 3], [4, 4], [3, 3], [4, 3], [3, 2], [4, 4], [3, 3],
[4, 2], [3, 3], [4, 4], [3, 3], [3, 3]]],
520),
('partial repair probe: streak reset on par',
[[[3, 3], [4, 4], [3, 2], [4, 3], [3, 2], [5, 4], [3, 3], [5, 3], [4, 3], [4, 3], [5, 5], [4, 3], [4, 3],
[5, 4], [4, 4], [3, 3], [4, 3], [4, 4]]],
585),
('second regression',
[[[3, 2], [3, 3], [4, 4], [4, 5], [3, 3], [5, 5], [4, 4], [3, 3], [3, 3], [4, 4], [4, 5], [4, 3], [3, 3],
[3, 2], [5, 5], [5, 3], [5, 4], [4, 4]]],
295),
('normal control 1',
[[[4, 4], [4, 4], [3, 3], [4, 4], [3, 2], [5, 4], [3, 3], [4, 4], [4, 2], [4, 3], [5, 5], [4, 4], [4, 3],
[5, 4], [4, 3], [4, 4], [3, 3], [3, 3]]],
425),
('normal control 2',
[[[3, 2], [3, 5], [4, 3], [4, 4], [3, 3], [5, 5], [4, 1], [3, 4], [3, 2], [5, 5], [4, 4], [4, 5], [5, 4],
[4, 4], [4, 4], [5, 5], [3, 3], [4, 4]]],
380),
('normal control 3',
[[[5, 4], [4, 2], [3, 2], [5, 5], [5, 5], [3, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 4], [4, 3], [4, 6],
[4, 4], [4, 4], [4, 4], [5, 7], [4, 4]]],
265),
('normal control 4',
[[[4, 4], [4, 5], [4, 3], [4, 6], [3, 3], [4, 3], [5, 4], [4, 4], [4, 4], [4, 5], [5, 3], [5, 5], [3, 3],
[4, 1]]],
360)],
[('regression: streak reset on par',
[[[4, 3], [3, 2], [4, 4], [4, 4], [3, 2], [5, 3], [4, 3], [5, 4], [3, 3], [5, 4], [5, 5], [4, 3], [4, 3],
[3, 1], [5, 4], [4, 4], [4, 3], [5, 5]]],
680),
('partial repair probe: streak reset on par',
[[[4, 3], [4, 4], [4, 4], [5, 3], [5, 4], [5, 4], [5, 5], [3, 2], [5, 5]]], 250),
('second regression',
[[[3, 2], [4, 4], [4, 4], [4, 3], [4, 3], [4, 4], [4, 6], [4, 3], [4, 5], [5, 4], [4, 3], [5, 6], [5, 4],
[4, 3], [4, 3], [3, 2], [3, 5], [5, 1]]],
545),
('normal control 1', [[[5, 5], [4, 3], [4, 4], [4, 4], [5, 5], [4, 4], [4, 3], [5, 5], [5, 6]]], 85),
('normal control 2',
[[[5, 4], [4, 4], [4, 5], [3, 5], [5, 5], [4, 4], [3, 3], [5, 6], [5, 4], [4, 4], [5, 3], [5, 3], [4, 4],
[5, 4], [5, 4], [3, 1], [5, 7], [4, 4]]],
445),
('normal control 3',
[[[3, 3], [5, 5], [3, 2], [4, 3], [4, 3], [4, 4], [4, 4], [4, 4], [4, 2], [4, 3], [3, 3], [3, 2], [4, 4],
[3, 3], [4, 6], [4, 2], [4, 3], [4, 3]]],
510),
('normal control 4',
[[[3, 2], [4, 3], [3, 4], [5, 5], [3, 1], [5, 5], [4, 2], [3, 2], [5, 4], [4, 3], [5, 4], [3, 3], [4, 4],
[4, 2]]],
515)],
[('regression: streak reset on par',
[[[5, 4], [4, 4], [5, 5], [3, 3], [4, 4], [4, 4], [5, 4], [3, 3], [5, 5], [4, 2], [4, 3], [5, 5], [4, 4],
[4, 4]]],
220),
('partial repair probe: streak reset on par',
[[[4, 5], [5, 4], [3, 1], [5, 5], [4, 4], [4, 3], [4, 3], [5, 4], [4, 4], [5, 5], [3, 1], [4, 3], [4, 4],
[4, 3], [5, 4], [3, 4], [5, 7], [4, 4]]],
560),
('second regression',
[[[5, 5], [4, 4], [4, 6], [4, 3], [4, 4], [4, 4], [3, 2], [4, 3], [4, 4], [4, 4], [5, 7], [4, 3], [4, 6],
[5, 5], [4, 3], [5, 4], [4, 3], [4, 5]]],
240),
('normal control 1',
[[[5, 5], [5, 4], [4, 4], [5, 5], [4, 4], [4, 4], [5, 5], [3, 3], [3, 3], [5, 4], [5, 5], [4, 4], [3, 3],
[5, 5]]],
120),
('normal control 2',
[[[4, 4], [4, 4], [3, 2], [5, 5], [3, 3], [3, 1], [3, 2], [3, 2], [4, 3], [3, 1], [3, 3], [4, 4], [5, 5],
[3, 4]]],
440),
('normal control 3', [[[4, 3], [5, 5], [4, 4], [4, 3], [3, 3], [5, 4], [5, 4], [5, 4], [5, 4]]], 225),
('normal control 4',
[[[3, 3], [4, 3], [3, 3], [3, 1], [4, 4], [4, 4], [4, 4], [5, 4], [4, 3], [4, 4], [4, 4], [5, 4], [3, 3],
[3, 1], [4, 3], [3, 2], [3, 3], [5, 5]]],
600)]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*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 |
|---|---|---|---|
| regression: streak reset on par | 665 | 605 | Failed |
| partial repair probe: streak reset on par | 450 | 480 | Failed |
| second regression | 345 | 345 | Passed |
| normal control 1 | 510 | 510 | Passed |
| normal control 2 | 640 | 640 | Passed |
| normal control 3 | 500 | 500 | Passed |
| normal control 4 | 575 | 575 | Passed |
SHA-256 / e2b24cb08c07d3d0c686e51af8d710bdc210799b533a85bec1201b902e52c762
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 7 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗Verification & scope
A deterministic toy scoring contract stipulated for this example; it is not the rulebook of any real fantasy platform. 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:39.007196+00:00.
Case digest / 9709cb1b248e2a5e9bea1641ea81c2dfeb1e43c052575b4dfddf61674d245055