{"abstract":"Only four-goal games receive the hat-trick bonus.","category":"Fantasy sports scoring","checks":7,"contract":"Score a hockey skater in tenths: goal 3, assist 2, plus/minus 1 per unit (negative allowed), shot on goal 0.4, power-play points (goals plus assists) 0.5 extra each, short-handed points 1 extra each, and a single 2 point hat-trick bonus for three or more goals. Shootout goals (so_g) are not goals and score nothing.","evaluation_group":"w2-fantasy-sports-scoring-skater-line","failed_approach":"Awarding a bonus per three goals doubles it for a six-goal night.","family":"w2-fantasy-sports-scoring-skater-line-hat-trick-bonus","id":"FA-85156","implementations":{"attempt":{"sha256":"f905ec3e4905c41383088482cc03bf9692379b354d50bb3e9b04d8d37921df5a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(g):\n    pts = g['g'] * 30 + g['a'] * 20 + g['pm'] * 10 + g['sog'] * 4\n    pts += (g['ppg'] + g['ppa']) * 5\n    pts += (g['shg'] + g['sha']) * 10\n    pts += 20 * (g['g'] // 3)\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hat trick bonus',\n   [{'a': 1, 'g': 3, 'pm': 3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 5}], 205),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -1, 'ppa': 2, 'ppg': 5, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 333),\n  ('second regression',\n   [{'a': 3, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 8}], 347),\n  ('normal control 1',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 4, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 10}], 200),\n  ('normal control 2',\n   [{'a': 2, 'g': 4, 'pm': -3, 'ppa': 1, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 8}], 212),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 6}], 49),\n  ('normal control 4',\n   [{'a': 3, 'g': 2, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 9}], 141),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 2, 'g': 6, 'pm': -3, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 12}], 293),\n  ('second regression',\n   [{'a': 3, 'g': 3, 'pm': -2, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 8}], 252),\n  ('normal control 2',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 0, 'ppg': 3, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 7}], 183),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': -1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 64),\n  ('normal control 4',\n   [{'a': 0, 'g': 1, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 52)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 3}], 132),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 5, 'so_g': 0, 'sog': 9}], 341),\n  ('second regression',\n   [{'a': 2, 'g': 3, 'pm': -2, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 4}], 181),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 9}], 236),\n  ('normal control 2',\n   [{'a': 3, 'g': 0, 'pm': 3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 122),\n  ('normal control 3',\n   [{'a': 3, 'g': 4, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 9}], 251),\n  ('normal control 4',\n   [{'a': 2, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 5}], 200)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 8}], 177),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 1, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 303),\n  ('second regression',\n   [{'a': 1, 'g': 3, 'pm': 1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 8}], 192),\n  ('normal control 1',\n   [{'a': 3, 'g': 0, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 0}], 35),\n  ('normal control 2',\n   [{'a': 1, 'g': 2, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 94),\n  ('normal control 3',\n   [{'a': 0, 'g': 0, 'pm': 3, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 4}], 56),\n  ('normal control 4',\n   [{'a': 3, 'g': 4, 'pm': -2, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 3, 'so_g': 0, 'sog': 9}], 256)],\n [('regression: hat trick bonus',\n   [{'a': 2, 'g': 3, 'pm': -1, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 5}], 185),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 4, 'so_g': 0, 'sog': 8}], 322),\n  ('second regression',\n   [{'a': 1, 'g': 6, 'pm': 0, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 7}], 273),\n  ('normal control 1',\n   [{'a': 0, 'g': 0, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 2}], 8),\n  ('normal control 2',\n   [{'a': 2, 'g': 1, 'pm': 3, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 2}], 118),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 19),\n  ('normal control 4',\n   [{'a': 1, 'g': 1, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 6}], 119)]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"7d0b74ce7235149365e9992a9ae3ac56863031a9cf6d4d4521784290d906000a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(g):\n    pts = g['g'] * 30 + g['a'] * 20 + g['pm'] * 10 + g['sog'] * 4\n    pts += (g['ppg'] + g['ppa']) * 5\n    pts += (g['shg'] + g['sha']) * 10\n    if g['g'] > 3:\n        pts += 20\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hat trick bonus',\n   [{'a': 1, 'g': 3, 'pm': 3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 5}], 205),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -1, 'ppa': 2, 'ppg': 5, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 333),\n  ('second regression',\n   [{'a': 3, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 8}], 347),\n  ('normal control 1',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 4, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 10}], 200),\n  ('normal control 2',\n   [{'a': 2, 'g': 4, 'pm': -3, 'ppa': 1, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 8}], 212),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 6}], 49),\n  ('normal control 4',\n   [{'a': 3, 'g': 2, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 9}], 141),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 2, 'g': 6, 'pm': -3, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 12}], 293),\n  ('second regression',\n   [{'a': 3, 'g': 3, 'pm': -2, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 8}], 252),\n  ('normal control 2',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 0, 'ppg': 3, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 7}], 183),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': -1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 64),\n  ('normal control 4',\n   [{'a': 0, 'g': 1, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 52)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 3}], 132),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 5, 'so_g': 0, 'sog': 9}], 341),\n  ('second regression',\n   [{'a': 2, 'g': 3, 'pm': -2, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 4}], 181),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 9}], 236),\n  ('normal control 2',\n   [{'a': 3, 'g': 0, 'pm': 3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 122),\n  ('normal control 3',\n   [{'a': 3, 'g': 4, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 9}], 251),\n  ('normal control 4',\n   [{'a': 2, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 5}], 200)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 8}], 177),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 1, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 303),\n  ('second regression',\n   [{'a': 1, 'g': 3, 'pm': 1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 8}], 192),\n  ('normal control 1',\n   [{'a': 3, 'g': 0, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 0}], 35),\n  ('normal control 2',\n   [{'a': 1, 'g': 2, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 94),\n  ('normal control 3',\n   [{'a': 0, 'g': 0, 'pm': 3, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 4}], 56),\n  ('normal control 4',\n   [{'a': 3, 'g': 4, 'pm': -2, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 3, 'so_g': 0, 'sog': 9}], 256)],\n [('regression: hat trick bonus',\n   [{'a': 2, 'g': 3, 'pm': -1, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 5}], 185),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 4, 'so_g': 0, 'sog': 8}], 322),\n  ('second regression',\n   [{'a': 1, 'g': 6, 'pm': 0, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 7}], 273),\n  ('normal control 1',\n   [{'a': 0, 'g': 0, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 2}], 8),\n  ('normal control 2',\n   [{'a': 2, 'g': 1, 'pm': 3, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 2}], 118),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 19),\n  ('normal control 4',\n   [{'a': 1, 'g': 1, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 6}], 119)]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"53bd5ee7ac2fa0d57169fc55c60981b7369aca5c2890c203df92e86ce09613ea","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(g):\n    pts = g['g'] * 30 + g['a'] * 20 + g['pm'] * 10 + g['sog'] * 4\n    pts += (g['ppg'] + g['ppa']) * 5\n    pts += (g['shg'] + g['sha']) * 10\n    if g['g'] >= 3:\n        pts += 20\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: hat trick bonus',\n   [{'a': 1, 'g': 3, 'pm': 3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 5}], 205),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -1, 'ppa': 2, 'ppg': 5, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 333),\n  ('second regression',\n   [{'a': 3, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 8}], 347),\n  ('normal control 1',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 4, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 10}], 200),\n  ('normal control 2',\n   [{'a': 2, 'g': 4, 'pm': -3, 'ppa': 1, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 8}], 212),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 6}], 49),\n  ('normal control 4',\n   [{'a': 3, 'g': 2, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -3, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 9}], 141),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 2, 'g': 6, 'pm': -3, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 12}], 293),\n  ('second regression',\n   [{'a': 3, 'g': 3, 'pm': -2, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 174),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 8}], 252),\n  ('normal control 2',\n   [{'a': 0, 'g': 4, 'pm': -2, 'ppa': 0, 'ppg': 3, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 7}], 183),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': -1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 64),\n  ('normal control 4',\n   [{'a': 0, 'g': 1, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 52)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 3}], 132),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 5, 'so_g': 0, 'sog': 9}], 341),\n  ('second regression',\n   [{'a': 2, 'g': 3, 'pm': -2, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 2, 'so_g': 1, 'sog': 4}], 181),\n  ('normal control 1',\n   [{'a': 3, 'g': 4, 'pm': -1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 9}], 236),\n  ('normal control 2',\n   [{'a': 3, 'g': 0, 'pm': 3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 3}], 122),\n  ('normal control 3',\n   [{'a': 3, 'g': 4, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 9}], 251),\n  ('normal control 4',\n   [{'a': 2, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 5}], 200)],\n [('regression: hat trick bonus',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 8}], 177),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 1, 'g': 6, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 12}], 303),\n  ('second regression',\n   [{'a': 1, 'g': 3, 'pm': 1, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 8}], 192),\n  ('normal control 1',\n   [{'a': 3, 'g': 0, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 0}], 35),\n  ('normal control 2',\n   [{'a': 1, 'g': 2, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 94),\n  ('normal control 3',\n   [{'a': 0, 'g': 0, 'pm': 3, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 4}], 56),\n  ('normal control 4',\n   [{'a': 3, 'g': 4, 'pm': -2, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 3, 'so_g': 0, 'sog': 9}], 256)],\n [('regression: hat trick bonus',\n   [{'a': 2, 'g': 3, 'pm': -1, 'ppa': 1, 'ppg': 2, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 5}], 185),\n  ('partial repair probe: hat trick bonus',\n   [{'a': 3, 'g': 6, 'pm': -3, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 4, 'so_g': 0, 'sog': 8}], 322),\n  ('second regression',\n   [{'a': 1, 'g': 6, 'pm': 0, 'ppa': 2, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 7}], 273),\n  ('normal control 1',\n   [{'a': 0, 'g': 0, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 2}], 8),\n  ('normal control 2',\n   [{'a': 2, 'g': 1, 'pm': 3, 'ppa': 1, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 2}], 118),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 1}], 19),\n  ('normal control 4',\n   [{'a': 1, 'g': 1, 'pm': 2, 'ppa': 2, 'ppg': 1, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 6}], 119)]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-fantasy-sports-scoring-skater-line-hat-trick-bonus","generated_at":"2026-09-29T14:50:37.819407+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Special-teams extras, plus/minus signs and shootout exclusions are frequent skater scoring defects.","repair":"Award one bonus when goals are at least three.","root_cause":"The hat-trick test requires more than three goals.","sha256":"d376408531f15617a4fee6a7e3e0f26421c110d6832db203d53cade874332f62","title":"Three-goal game misses the hat-trick bonus · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":38.98,"exit_code":1,"observations":[{"actual":205,"check":"regression: hat trick bonus","expected":205,"passed":true},{"actual":353,"check":"partial repair probe: hat trick bonus","expected":333,"passed":false},{"actual":367,"check":"second regression","expected":347,"passed":false},{"actual":200,"check":"normal control 1","expected":200,"passed":true},{"actual":212,"check":"normal control 2","expected":212,"passed":true},{"actual":49,"check":"normal control 3","expected":49,"passed":true},{"actual":174,"check":"normal control 4","expected":174,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hat trick bonus\", \"actual\": 205, \"expected\": 205, \"passed\": true}, {\"check\": \"partial repair probe: hat trick bonus\", \"actual\": 353, \"expected\": 333, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 367, \"expected\": 347, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 200, \"expected\": 200, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 212, \"expected\": 212, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 49, \"expected\": 49, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 174, \"expected\": 174, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.038,"exit_code":1,"observations":[{"actual":185,"check":"regression: hat trick bonus","expected":205,"passed":false},{"actual":333,"check":"partial repair probe: hat trick bonus","expected":333,"passed":true},{"actual":347,"check":"second regression","expected":347,"passed":true},{"actual":200,"check":"normal control 1","expected":200,"passed":true},{"actual":212,"check":"normal control 2","expected":212,"passed":true},{"actual":49,"check":"normal control 3","expected":49,"passed":true},{"actual":174,"check":"normal control 4","expected":174,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hat trick bonus\", \"actual\": 185, \"expected\": 205, \"passed\": false}, {\"check\": \"partial repair probe: hat trick bonus\", \"actual\": 333, \"expected\": 333, \"passed\": true}, {\"check\": \"second regression\", \"actual\": 347, \"expected\": 347, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 200, \"expected\": 200, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 212, \"expected\": 212, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 49, \"expected\": 49, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 174, \"expected\": 174, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.324,"exit_code":0,"observations":[{"actual":205,"check":"regression: hat trick bonus","expected":205,"passed":true},{"actual":333,"check":"partial repair probe: hat trick bonus","expected":333,"passed":true},{"actual":347,"check":"second regression","expected":347,"passed":true},{"actual":200,"check":"normal control 1","expected":200,"passed":true},{"actual":212,"check":"normal control 2","expected":212,"passed":true},{"actual":49,"check":"normal control 3","expected":49,"passed":true},{"actual":174,"check":"normal control 4","expected":174,"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: hat trick bonus\", \"actual\": 205, \"expected\": 205, \"passed\": true}, {\"check\": \"partial repair probe: hat trick bonus\", \"actual\": 333, \"expected\": 333, \"passed\": true}, {\"check\": \"second regression\", \"actual\": 347, \"expected\": 347, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 200, \"expected\": 200, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 212, \"expected\": 212, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 49, \"expected\": 49, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 174, \"expected\": 174, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}