FA-85171 / Fantasy sports scoring / Open access
Century also collects the half-century and thirty bonuses · case 01
A 100-run innings scores 28 milestone points instead of 16.
ROOT CAUSE
Milestone checks are independent ifs, so every lower milestone stacks.
VERIFIED REPAIR
Award only the highest milestone reached.
Unsuccessful approach: Chaining only the 50/100 tiers still stacks the 30-run bonus on top.
Case contract
Score a T20 batting innings: 1 per run, +1 per four, +2 per six; only the highest milestone bonus applies (30+ -> 4, 50+ -> 8, 100+ -> 16). A duck (-2) applies when the batter is out for 0 after facing at least one ball, except for BOWL-role players. Strike-rate bonus for non-BOWL players with at least 10 balls, using exact runs*100 vs balls: >170 +6, >150 +4, >=130 +2, >=70 0, >=60 -2, >=50 -4, below -6.
Why this case matters
Cricket fantasy contests hinge on exclusive milestones, duck eligibility and strike-rate bands evaluated exactly.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(inn):
pts = inn['runs'] + inn['fours'] + inn['sixes'] * 2
if inn['runs'] >= 100:
pts += 16
if inn['runs'] >= 50:
pts += 8
if inn['runs'] >= 30:
pts += 4
if inn['out'] and inn['runs'] == 0 and inn['balls'] >= 1 and inn['role'] != 'BOWL':
pts -= 2
if inn['balls'] >= 10 and inn['role'] != 'BOWL':
r, b = inn['runs'] * 100, inn['balls']
if r > 170 * b:
pts += 6
elif r > 150 * b:
pts += 4
elif r >= 130 * b:
pts += 2
elif r >= 70 * b:
pass
elif r >= 60 * b:
pts -= 2
elif r >= 50 * b:
pts -= 4
else:
pts -= 6
return pts
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: milestone exclusivity',
[{'balls': 9, 'fours': 17, 'out': True, 'role': 'WK', 'runs': 100, 'sixes': 5}], 143),
('partial repair probe: milestone exclusivity',
[{'balls': 1, 'fours': 3, 'out': True, 'role': 'BAT', 'runs': 96, 'sixes': 12}], 131),
('second regression', [{'balls': 60, 'fours': 15, 'out': False, 'role': 'AR', 'runs': 79, 'sixes': 0}],
104),
('normal control 1', [{'balls': 1, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 30, 'sixes': 3}], 42),
('normal control 2', [{'balls': 46, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 17),
('normal control 3', [{'balls': 10, 'fours': 4, 'out': False, 'role': 'BOWL', 'runs': 16, 'sixes': 0}], 20),
('normal control 4', [{'balls': 9, 'fours': 0, 'out': True, 'role': 'BAT', 'runs': 0, 'sixes': 0}], -2)],
[('regression: milestone exclusivity',
[{'balls': 40, 'fours': 10, 'out': True, 'role': 'BAT', 'runs': 53, 'sixes': 2}], 77),
('partial repair probe: milestone exclusivity',
[{'balls': 20, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 100, 'sixes': 4}], 132),
('second regression', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 50, 'sixes': 5}], 68),
('normal control 1', [{'balls': 20, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 2', [{'balls': 18, 'fours': 5, 'out': True, 'role': 'BAT', 'runs': 24, 'sixes': 0}], 31),
('normal control 3', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 30, 'sixes': 2}], 44),
('normal control 4', [{'balls': 9, 'fours': 5, 'out': False, 'role': 'BOWL', 'runs': 30, 'sixes': 0}], 39)],
[('regression: milestone exclusivity',
[{'balls': 51, 'fours': 15, 'out': True, 'role': 'BOWL', 'runs': 67, 'sixes': 1}], 92),
('partial repair probe: milestone exclusivity',
[{'balls': 40, 'fours': 11, 'out': True, 'role': 'AR', 'runs': 69, 'sixes': 2}], 98),
('second regression', [{'balls': 47, 'fours': 6, 'out': True, 'role': 'AR', 'runs': 62, 'sixes': 5}], 88),
('normal control 1', [{'balls': 20, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 20),
('normal control 2', [{'balls': 23, 'fours': 4, 'out': False, 'role': 'WK', 'runs': 34, 'sixes': 0}], 44),
('normal control 3', [{'balls': 44, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 34, 'sixes': 0}], 38),
('normal control 4', [{'balls': 20, 'fours': 6, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 1}], 50)],
[('regression: milestone exclusivity',
[{'balls': 23, 'fours': 3, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 3}], 131),
('partial repair probe: milestone exclusivity',
[{'balls': 38, 'fours': 0, 'out': False, 'role': 'WK', 'runs': 58, 'sixes': 3}], 76),
('second regression', [{'balls': 51, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 50, 'sixes': 1}],
63),
('normal control 1', [{'balls': 11, 'fours': 6, 'out': False, 'role': 'BAT', 'runs': 29, 'sixes': 0}], 41),
('normal control 2', [{'balls': 19, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 25, 'sixes': 1}], 30),
('normal control 3', [{'balls': 0, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 4', [{'balls': 20, 'fours': 1, 'out': True, 'role': 'BAT', 'runs': 34, 'sixes': 3}], 49)],
[('regression: milestone exclusivity',
[{'balls': 20, 'fours': 24, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 0}], 146),
('partial repair probe: milestone exclusivity',
[{'balls': 10, 'fours': 18, 'out': True, 'role': 'WK', 'runs': 98, 'sixes': 0}], 130),
('second regression', [{'balls': 10, 'fours': 17, 'out': True, 'role': 'BOWL', 'runs': 100, 'sixes': 5}],
143),
('normal control 1', [{'balls': 12, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 16, 'sixes': 2}], 20),
('normal control 2', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 3', [{'balls': 11, 'fours': 5, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 2}], 53),
('normal control 4', [{'balls': 47, 'fours': 1, 'out': False, 'role': 'WK', 'runs': 30, 'sixes': 0}], 33)]]
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: milestone exclusivity | 155 | 143 | Failed |
| partial repair probe: milestone exclusivity | 135 | 131 | Failed |
| second regression | 108 | 104 | Failed |
| normal control 1 | 42 | 42 | Passed |
| normal control 2 | 17 | 17 | Passed |
| normal control 3 | 20 | 20 | Passed |
| normal control 4 | -2 | -2 | Passed |
SHA-256 / a38c32b18b5a2de449a3d543ab568d6401c311e237ee136cef6361349175c9e1
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(inn):
pts = inn['runs'] + inn['fours'] + inn['sixes'] * 2
if inn['runs'] >= 100:
pts += 16
elif inn['runs'] >= 50:
pts += 8
if inn['runs'] >= 30:
pts += 4
if inn['out'] and inn['runs'] == 0 and inn['balls'] >= 1 and inn['role'] != 'BOWL':
pts -= 2
if inn['balls'] >= 10 and inn['role'] != 'BOWL':
r, b = inn['runs'] * 100, inn['balls']
if r > 170 * b:
pts += 6
elif r > 150 * b:
pts += 4
elif r >= 130 * b:
pts += 2
elif r >= 70 * b:
pass
elif r >= 60 * b:
pts -= 2
elif r >= 50 * b:
pts -= 4
else:
pts -= 6
return pts
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: milestone exclusivity',
[{'balls': 9, 'fours': 17, 'out': True, 'role': 'WK', 'runs': 100, 'sixes': 5}], 143),
('partial repair probe: milestone exclusivity',
[{'balls': 1, 'fours': 3, 'out': True, 'role': 'BAT', 'runs': 96, 'sixes': 12}], 131),
('second regression', [{'balls': 60, 'fours': 15, 'out': False, 'role': 'AR', 'runs': 79, 'sixes': 0}],
104),
('normal control 1', [{'balls': 1, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 30, 'sixes': 3}], 42),
('normal control 2', [{'balls': 46, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 17),
('normal control 3', [{'balls': 10, 'fours': 4, 'out': False, 'role': 'BOWL', 'runs': 16, 'sixes': 0}], 20),
('normal control 4', [{'balls': 9, 'fours': 0, 'out': True, 'role': 'BAT', 'runs': 0, 'sixes': 0}], -2)],
[('regression: milestone exclusivity',
[{'balls': 40, 'fours': 10, 'out': True, 'role': 'BAT', 'runs': 53, 'sixes': 2}], 77),
('partial repair probe: milestone exclusivity',
[{'balls': 20, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 100, 'sixes': 4}], 132),
('second regression', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 50, 'sixes': 5}], 68),
('normal control 1', [{'balls': 20, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 2', [{'balls': 18, 'fours': 5, 'out': True, 'role': 'BAT', 'runs': 24, 'sixes': 0}], 31),
('normal control 3', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 30, 'sixes': 2}], 44),
('normal control 4', [{'balls': 9, 'fours': 5, 'out': False, 'role': 'BOWL', 'runs': 30, 'sixes': 0}], 39)],
[('regression: milestone exclusivity',
[{'balls': 51, 'fours': 15, 'out': True, 'role': 'BOWL', 'runs': 67, 'sixes': 1}], 92),
('partial repair probe: milestone exclusivity',
[{'balls': 40, 'fours': 11, 'out': True, 'role': 'AR', 'runs': 69, 'sixes': 2}], 98),
('second regression', [{'balls': 47, 'fours': 6, 'out': True, 'role': 'AR', 'runs': 62, 'sixes': 5}], 88),
('normal control 1', [{'balls': 20, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 20),
('normal control 2', [{'balls': 23, 'fours': 4, 'out': False, 'role': 'WK', 'runs': 34, 'sixes': 0}], 44),
('normal control 3', [{'balls': 44, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 34, 'sixes': 0}], 38),
('normal control 4', [{'balls': 20, 'fours': 6, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 1}], 50)],
[('regression: milestone exclusivity',
[{'balls': 23, 'fours': 3, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 3}], 131),
('partial repair probe: milestone exclusivity',
[{'balls': 38, 'fours': 0, 'out': False, 'role': 'WK', 'runs': 58, 'sixes': 3}], 76),
('second regression', [{'balls': 51, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 50, 'sixes': 1}],
63),
('normal control 1', [{'balls': 11, 'fours': 6, 'out': False, 'role': 'BAT', 'runs': 29, 'sixes': 0}], 41),
('normal control 2', [{'balls': 19, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 25, 'sixes': 1}], 30),
('normal control 3', [{'balls': 0, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 4', [{'balls': 20, 'fours': 1, 'out': True, 'role': 'BAT', 'runs': 34, 'sixes': 3}], 49)],
[('regression: milestone exclusivity',
[{'balls': 20, 'fours': 24, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 0}], 146),
('partial repair probe: milestone exclusivity',
[{'balls': 10, 'fours': 18, 'out': True, 'role': 'WK', 'runs': 98, 'sixes': 0}], 130),
('second regression', [{'balls': 10, 'fours': 17, 'out': True, 'role': 'BOWL', 'runs': 100, 'sixes': 5}],
143),
('normal control 1', [{'balls': 12, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 16, 'sixes': 2}], 20),
('normal control 2', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 3', [{'balls': 11, 'fours': 5, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 2}], 53),
('normal control 4', [{'balls': 47, 'fours': 1, 'out': False, 'role': 'WK', 'runs': 30, 'sixes': 0}], 33)]]
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: milestone exclusivity | 147 | 143 | Failed |
| partial repair probe: milestone exclusivity | 135 | 131 | Failed |
| second regression | 108 | 104 | Failed |
| normal control 1 | 42 | 42 | Passed |
| normal control 2 | 17 | 17 | Passed |
| normal control 3 | 20 | 20 | Passed |
| normal control 4 | -2 | -2 | Passed |
SHA-256 / c6a7c8ccc917e62b5b34f0ad648f77f6002dfc0e6db8881f4d60d96e49715df2
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(inn):
pts = inn['runs'] + inn['fours'] + inn['sixes'] * 2
if inn['runs'] >= 100:
pts += 16
elif inn['runs'] >= 50:
pts += 8
elif inn['runs'] >= 30:
pts += 4
if inn['out'] and inn['runs'] == 0 and inn['balls'] >= 1 and inn['role'] != 'BOWL':
pts -= 2
if inn['balls'] >= 10 and inn['role'] != 'BOWL':
r, b = inn['runs'] * 100, inn['balls']
if r > 170 * b:
pts += 6
elif r > 150 * b:
pts += 4
elif r >= 130 * b:
pts += 2
elif r >= 70 * b:
pass
elif r >= 60 * b:
pts -= 2
elif r >= 50 * b:
pts -= 4
else:
pts -= 6
return pts
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: milestone exclusivity',
[{'balls': 9, 'fours': 17, 'out': True, 'role': 'WK', 'runs': 100, 'sixes': 5}], 143),
('partial repair probe: milestone exclusivity',
[{'balls': 1, 'fours': 3, 'out': True, 'role': 'BAT', 'runs': 96, 'sixes': 12}], 131),
('second regression', [{'balls': 60, 'fours': 15, 'out': False, 'role': 'AR', 'runs': 79, 'sixes': 0}],
104),
('normal control 1', [{'balls': 1, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 30, 'sixes': 3}], 42),
('normal control 2', [{'balls': 46, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 17),
('normal control 3', [{'balls': 10, 'fours': 4, 'out': False, 'role': 'BOWL', 'runs': 16, 'sixes': 0}], 20),
('normal control 4', [{'balls': 9, 'fours': 0, 'out': True, 'role': 'BAT', 'runs': 0, 'sixes': 0}], -2)],
[('regression: milestone exclusivity',
[{'balls': 40, 'fours': 10, 'out': True, 'role': 'BAT', 'runs': 53, 'sixes': 2}], 77),
('partial repair probe: milestone exclusivity',
[{'balls': 20, 'fours': 2, 'out': False, 'role': 'BAT', 'runs': 100, 'sixes': 4}], 132),
('second regression', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 50, 'sixes': 5}], 68),
('normal control 1', [{'balls': 20, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 2', [{'balls': 18, 'fours': 5, 'out': True, 'role': 'BAT', 'runs': 24, 'sixes': 0}], 31),
('normal control 3', [{'balls': 11, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 30, 'sixes': 2}], 44),
('normal control 4', [{'balls': 9, 'fours': 5, 'out': False, 'role': 'BOWL', 'runs': 30, 'sixes': 0}], 39)],
[('regression: milestone exclusivity',
[{'balls': 51, 'fours': 15, 'out': True, 'role': 'BOWL', 'runs': 67, 'sixes': 1}], 92),
('partial repair probe: milestone exclusivity',
[{'balls': 40, 'fours': 11, 'out': True, 'role': 'AR', 'runs': 69, 'sixes': 2}], 98),
('second regression', [{'balls': 47, 'fours': 6, 'out': True, 'role': 'AR', 'runs': 62, 'sixes': 5}], 88),
('normal control 1', [{'balls': 20, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 0}], 20),
('normal control 2', [{'balls': 23, 'fours': 4, 'out': False, 'role': 'WK', 'runs': 34, 'sixes': 0}], 44),
('normal control 3', [{'balls': 44, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 34, 'sixes': 0}], 38),
('normal control 4', [{'balls': 20, 'fours': 6, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 1}], 50)],
[('regression: milestone exclusivity',
[{'balls': 23, 'fours': 3, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 3}], 131),
('partial repair probe: milestone exclusivity',
[{'balls': 38, 'fours': 0, 'out': False, 'role': 'WK', 'runs': 58, 'sixes': 3}], 76),
('second regression', [{'balls': 51, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 50, 'sixes': 1}],
63),
('normal control 1', [{'balls': 11, 'fours': 6, 'out': False, 'role': 'BAT', 'runs': 29, 'sixes': 0}], 41),
('normal control 2', [{'balls': 19, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 25, 'sixes': 1}], 30),
('normal control 3', [{'balls': 0, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 4', [{'balls': 20, 'fours': 1, 'out': True, 'role': 'BAT', 'runs': 34, 'sixes': 3}], 49)],
[('regression: milestone exclusivity',
[{'balls': 20, 'fours': 24, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 0}], 146),
('partial repair probe: milestone exclusivity',
[{'balls': 10, 'fours': 18, 'out': True, 'role': 'WK', 'runs': 98, 'sixes': 0}], 130),
('second regression', [{'balls': 10, 'fours': 17, 'out': True, 'role': 'BOWL', 'runs': 100, 'sixes': 5}],
143),
('normal control 1', [{'balls': 12, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 16, 'sixes': 2}], 20),
('normal control 2', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),
('normal control 3', [{'balls': 11, 'fours': 5, 'out': False, 'role': 'AR', 'runs': 34, 'sixes': 2}], 53),
('normal control 4', [{'balls': 47, 'fours': 1, 'out': False, 'role': 'WK', 'runs': 30, 'sixes': 0}], 33)]]
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: milestone exclusivity | 143 | 143 | Passed |
| partial repair probe: milestone exclusivity | 131 | 131 | Passed |
| second regression | 104 | 104 | Passed |
| normal control 1 | 42 | 42 | Passed |
| normal control 2 | 17 | 17 | Passed |
| normal control 3 | 20 | 20 | Passed |
| normal control 4 | -2 | -2 | Passed |
SHA-256 / 22fd208a4dae3cd8c94bfa0b71f77734ab85bbdba73460e669e833b5d446e80a
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:37.933609+00:00.
Case digest / 38c01fd63dcd5724829d6b18a4201bdb3a574e28ffa557434780fb3745c8ef19