FA-85131 / Fantasy sports scoring / Open access
Empty-net goals charged to the pulled goalie · case 01
A goalie who allowed one goal is charged three after two late empty-netters.
ROOT CAUSE
Goalie goals against are taken from the team total including empty-net goals.
VERIFIED REPAIR
Subtract every empty-net goal from the team total.
Unsuccessful approach: Subtracting at most one empty-net goal still charges the second.
Case contract
Score a hockey goalie in tenths. Goals against charged to the goalie exclude empty-net goals scored on his team. shots_faced counts only shots the goalie faced, so saves = shots_faced - goalie goals against. Save 0.2, goal against -2, win 4, overtime loss 1, regulation loss 0. A shutout (+3) needs zero goalie goals against and at least 3600 seconds on ice; the decision does not matter.
Why this case matters
Goalie scoring depends on attribution of empty-net goals and on playing-time conditions for shutouts.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(g):
ga = g['team_ga']
saves = g['shots_faced'] - ga
pts = saves * 2 - ga * 20
pts += {'W': 40, 'OTL': 10}.get(g['decision'], 0)
if ga == 0 and g['toi_sec'] >= 3600:
pts += 30
return {'saves': saves, 'points': pts}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 26, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 62, 'saves': 26}),
('partial repair probe: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 2, 'shots_faced': 23, 'team_ga': 5, 'toi_sec': 2400}],
{'points': 20, 'saves': 20}),
('second regression',
[{'decision': None, 'empty_net_ga': 1, 'shots_faced': 16, 'team_ga': 1, 'toi_sec': 2400}],
{'points': 32, 'saves': 16}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 10, 'saves': 5}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 13, 'team_ga': 0, 'toi_sec': 2675}],
{'points': 36, 'saves': 13}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 26, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -4, 'saves': 23}),
('normal control 4',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 32, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 42, 'saves': 31})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 34, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 86, 'saves': 33}),
('partial repair probe: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 2, 'shots_faced': 29, 'team_ga': 4, 'toi_sec': 3900}],
{'points': 24, 'saves': 27}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 18, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -8, 'saves': 16}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 2, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -18, 'saves': 1}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 8, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 4, 'saves': 7}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 16, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -2, 'saves': 14}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 3, 'team_ga': 1, 'toi_sec': 3540}],
{'points': -6, 'saves': 2})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 38, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 32, 'saves': 36}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3600}],
{'points': 108, 'saves': 39}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3599}],
{'points': 56, 'saves': 38}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 36, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 28, 'saves': 34}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 20, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -30, 'saves': 15}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -10, 'saves': 15}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 40, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 150, 'saves': 40})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 37, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 74, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 1, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 2, 'saves': 1}),
('second regression',
[{'decision': None, 'empty_net_ga': 2, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 44, 'saves': 7}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 1, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -20, 'saves': 0}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 38, 'team_ga': 5, 'toi_sec': 3540}],
{'points': 6, 'saves': 33}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 15, 'team_ga': 0, 'toi_sec': 3540}],
{'points': 30, 'saves': 15}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 11, 'team_ga': 0, 'toi_sec': 2400}],
{'points': 32, 'saves': 11})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 40, 'team_ga': 4, 'toi_sec': 3599}],
{'points': 54, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 33, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 44, 'saves': 32}),
('second regression',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 6, 'team_ga': 3, 'toi_sec': 3600}],
{'points': -22, 'saves': 4}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 9, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 88, 'saves': 9}),
('normal control 2',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 25, 'team_ga': 0, 'toi_sec': 3599}],
{'points': 50, 'saves': 25}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -66, 'saves': 12}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 6, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 30, 'saves': 5})]]
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: empty-net attribution | {'points': 40, 'saves': 25} | {'points': 62, 'saves': 26} | Failed |
| partial repair probe: empty-net attribution | {'points': -24, 'saves': 18} | {'points': 20, 'saves': 20} | Failed |
| second regression | {'points': 10, 'saves': 15} | {'points': 32, 'saves': 16} | Failed |
| normal control 1 | {'points': 10, 'saves': 5} | {'points': 10, 'saves': 5} | Passed |
| normal control 2 | {'points': 36, 'saves': 13} | {'points': 36, 'saves': 13} | Passed |
| normal control 3 | {'points': -4, 'saves': 23} | {'points': -4, 'saves': 23} | Passed |
| normal control 4 | {'points': 42, 'saves': 31} | {'points': 42, 'saves': 31} | Passed |
SHA-256 / 27d4d82f117197741bfd8fc75020d8053d8549e244536b8a1bc449c52fd17889
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(g):
ga = g['team_ga'] - (1 if g['empty_net_ga'] else 0)
saves = g['shots_faced'] - ga
pts = saves * 2 - ga * 20
pts += {'W': 40, 'OTL': 10}.get(g['decision'], 0)
if ga == 0 and g['toi_sec'] >= 3600:
pts += 30
return {'saves': saves, 'points': pts}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 26, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 62, 'saves': 26}),
('partial repair probe: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 2, 'shots_faced': 23, 'team_ga': 5, 'toi_sec': 2400}],
{'points': 20, 'saves': 20}),
('second regression',
[{'decision': None, 'empty_net_ga': 1, 'shots_faced': 16, 'team_ga': 1, 'toi_sec': 2400}],
{'points': 32, 'saves': 16}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 10, 'saves': 5}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 13, 'team_ga': 0, 'toi_sec': 2675}],
{'points': 36, 'saves': 13}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 26, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -4, 'saves': 23}),
('normal control 4',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 32, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 42, 'saves': 31})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 34, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 86, 'saves': 33}),
('partial repair probe: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 2, 'shots_faced': 29, 'team_ga': 4, 'toi_sec': 3900}],
{'points': 24, 'saves': 27}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 18, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -8, 'saves': 16}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 2, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -18, 'saves': 1}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 8, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 4, 'saves': 7}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 16, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -2, 'saves': 14}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 3, 'team_ga': 1, 'toi_sec': 3540}],
{'points': -6, 'saves': 2})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 38, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 32, 'saves': 36}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3600}],
{'points': 108, 'saves': 39}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3599}],
{'points': 56, 'saves': 38}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 36, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 28, 'saves': 34}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 20, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -30, 'saves': 15}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -10, 'saves': 15}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 40, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 150, 'saves': 40})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 37, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 74, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 1, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 2, 'saves': 1}),
('second regression',
[{'decision': None, 'empty_net_ga': 2, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 44, 'saves': 7}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 1, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -20, 'saves': 0}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 38, 'team_ga': 5, 'toi_sec': 3540}],
{'points': 6, 'saves': 33}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 15, 'team_ga': 0, 'toi_sec': 3540}],
{'points': 30, 'saves': 15}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 11, 'team_ga': 0, 'toi_sec': 2400}],
{'points': 32, 'saves': 11})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 40, 'team_ga': 4, 'toi_sec': 3599}],
{'points': 54, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 33, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 44, 'saves': 32}),
('second regression',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 6, 'team_ga': 3, 'toi_sec': 3600}],
{'points': -22, 'saves': 4}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 9, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 88, 'saves': 9}),
('normal control 2',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 25, 'team_ga': 0, 'toi_sec': 3599}],
{'points': 50, 'saves': 25}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -66, 'saves': 12}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 6, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 30, 'saves': 5})]]
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: empty-net attribution | {'points': 62, 'saves': 26} | {'points': 62, 'saves': 26} | Passed |
| partial repair probe: empty-net attribution | {'points': -2, 'saves': 19} | {'points': 20, 'saves': 20} | Failed |
| second regression | {'points': 32, 'saves': 16} | {'points': 32, 'saves': 16} | Passed |
| normal control 1 | {'points': 10, 'saves': 5} | {'points': 10, 'saves': 5} | Passed |
| normal control 2 | {'points': 36, 'saves': 13} | {'points': 36, 'saves': 13} | Passed |
| normal control 3 | {'points': -4, 'saves': 23} | {'points': -4, 'saves': 23} | Passed |
| normal control 4 | {'points': 42, 'saves': 31} | {'points': 42, 'saves': 31} | Passed |
SHA-256 / 34d8511ea417b24cdbe3741c1a0762984f4bb4e606cb019e3e1d41e986ca5cdd
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(g):
ga = g['team_ga'] - g['empty_net_ga']
saves = g['shots_faced'] - ga
pts = saves * 2 - ga * 20
pts += {'W': 40, 'OTL': 10}.get(g['decision'], 0)
if ga == 0 and g['toi_sec'] >= 3600:
pts += 30
return {'saves': saves, 'points': pts}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 26, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 62, 'saves': 26}),
('partial repair probe: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 2, 'shots_faced': 23, 'team_ga': 5, 'toi_sec': 2400}],
{'points': 20, 'saves': 20}),
('second regression',
[{'decision': None, 'empty_net_ga': 1, 'shots_faced': 16, 'team_ga': 1, 'toi_sec': 2400}],
{'points': 32, 'saves': 16}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 10, 'saves': 5}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 13, 'team_ga': 0, 'toi_sec': 2675}],
{'points': 36, 'saves': 13}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 26, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -4, 'saves': 23}),
('normal control 4',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 32, 'team_ga': 1, 'toi_sec': 3540}],
{'points': 42, 'saves': 31})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 34, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 86, 'saves': 33}),
('partial repair probe: empty-net attribution',
[{'decision': 'OTL', 'empty_net_ga': 2, 'shots_faced': 29, 'team_ga': 4, 'toi_sec': 3900}],
{'points': 24, 'saves': 27}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 18, 'team_ga': 3, 'toi_sec': 3900}],
{'points': -8, 'saves': 16}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 2, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -18, 'saves': 1}),
('normal control 2',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 8, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 4, 'saves': 7}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 16, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -2, 'saves': 14}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 3, 'team_ga': 1, 'toi_sec': 3540}],
{'points': -6, 'saves': 2})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 38, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 32, 'saves': 36}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3600}],
{'points': 108, 'saves': 39}),
('second regression',
[{'decision': 'L', 'empty_net_ga': 1, 'shots_faced': 39, 'team_ga': 2, 'toi_sec': 3599}],
{'points': 56, 'saves': 38}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 36, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 28, 'saves': 34}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 20, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -30, 'saves': 15}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 2, 'toi_sec': 3600}],
{'points': -10, 'saves': 15}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 40, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 150, 'saves': 40})],
[('regression: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 37, 'team_ga': 2, 'toi_sec': 2400}],
{'points': 74, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 1, 'team_ga': 2, 'toi_sec': 3540}],
{'points': 2, 'saves': 1}),
('second regression',
[{'decision': None, 'empty_net_ga': 2, 'shots_faced': 7, 'team_ga': 2, 'toi_sec': 3900}],
{'points': 44, 'saves': 7}),
('normal control 1',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 1, 'team_ga': 1, 'toi_sec': 3600}],
{'points': -20, 'saves': 0}),
('normal control 2',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 38, 'team_ga': 5, 'toi_sec': 3540}],
{'points': 6, 'saves': 33}),
('normal control 3',
[{'decision': 'L', 'empty_net_ga': 0, 'shots_faced': 15, 'team_ga': 0, 'toi_sec': 3540}],
{'points': 30, 'saves': 15}),
('normal control 4',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 11, 'team_ga': 0, 'toi_sec': 2400}],
{'points': 32, 'saves': 11})],
[('regression: empty-net attribution',
[{'decision': 'W', 'empty_net_ga': 1, 'shots_faced': 40, 'team_ga': 4, 'toi_sec': 3599}],
{'points': 54, 'saves': 37}),
('partial repair probe: empty-net attribution',
[{'decision': 'L', 'empty_net_ga': 2, 'shots_faced': 33, 'team_ga': 3, 'toi_sec': 2400}],
{'points': 44, 'saves': 32}),
('second regression',
[{'decision': 'OTL', 'empty_net_ga': 1, 'shots_faced': 6, 'team_ga': 3, 'toi_sec': 3600}],
{'points': -22, 'saves': 4}),
('normal control 1',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 9, 'team_ga': 0, 'toi_sec': 3600}],
{'points': 88, 'saves': 9}),
('normal control 2',
[{'decision': None, 'empty_net_ga': 0, 'shots_faced': 25, 'team_ga': 0, 'toi_sec': 3599}],
{'points': 50, 'saves': 25}),
('normal control 3',
[{'decision': 'OTL', 'empty_net_ga': 0, 'shots_faced': 17, 'team_ga': 5, 'toi_sec': 2400}],
{'points': -66, 'saves': 12}),
('normal control 4',
[{'decision': 'W', 'empty_net_ga': 0, 'shots_faced': 6, 'team_ga': 1, 'toi_sec': 3599}],
{'points': 30, 'saves': 5})]]
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: empty-net attribution | {'points': 62, 'saves': 26} | {'points': 62, 'saves': 26} | Passed |
| partial repair probe: empty-net attribution | {'points': 20, 'saves': 20} | {'points': 20, 'saves': 20} | Passed |
| second regression | {'points': 32, 'saves': 16} | {'points': 32, 'saves': 16} | Passed |
| normal control 1 | {'points': 10, 'saves': 5} | {'points': 10, 'saves': 5} | Passed |
| normal control 2 | {'points': 36, 'saves': 13} | {'points': 36, 'saves': 13} | Passed |
| normal control 3 | {'points': -4, 'saves': 23} | {'points': -4, 'saves': 23} | Passed |
| normal control 4 | {'points': 42, 'saves': 31} | {'points': 42, 'saves': 31} | Passed |
SHA-256 / 10cf0cd3546609aa248ddbdb96cd829a507c72b6e43abbd77ca6041d52453a8c
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.664234+00:00.
Case digest / e3d3f96b7cd3dbc5e6263a990ac08acf5803619df6dd4f4f160b92deb707f477