{"abstract":"A -3 skater gains 3 points.","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.","contract_signature":"g","evaluation_group":"w2-fantasy-sports-scoring-skater-line","failed_approach":"Clamping at zero hides the penalty for a negative rating.","family":"w2-fantasy-sports-scoring-skater-line-plus-minus-sign","id":"FA-85166","implementations":{"attempt":{"sha256":"119a3352e32c8f72a04ee6726f179315522da01848cefa965c1031c6b68a8559","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 + max(g['pm'], 0) * 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: plus-minus sign',\n   [{'a': 3, 'g': 2, 'pm': -3, 'ppa': 1, 'ppg': 1, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 2}], 128),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 3, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 9}], 186),\n  ('second regression',\n   [{'a': 3, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 4}], 171),\n  ('normal control 1',\n   [{'a': 0, 'g': 2, 'pm': 0, 'ppa': 0, 'ppg': 1, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 8}], 117),\n  ('normal control 2',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 8}], 192),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 0}], 65),\n  ('normal control 4',\n   [{'a': 1, 'g': 6, 'pm': 1, 'ppa': 2, 'ppg': 6, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 11}], 314)],\n [('regression: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 2}], 38),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 2, 'g': 2, 'pm': -1, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 6}], 129),\n  ('second regression',\n   [{'a': 2, 'g': 1, 'pm': -3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 3}], 72),\n  ('normal control 1',\n   [{'a': 3, 'g': 6, 'pm': 0, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 8}], 327),\n  ('normal control 2',\n   [{'a': 1, 'g': 2, 'pm': 2, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 3}], 117),\n  ('normal control 3',\n   [{'a': 3, 'g': 4, 'pm': 2, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 2, 'so_g': 1, 'sog': 9}], 296),\n  ('normal control 4',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 9}], 176)],\n [('regression: plus-minus sign',\n   [{'a': 3, 'g': 0, 'pm': -2, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 2}], 58),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 2}], 23),\n  ('second regression',\n   [{'a': 0, 'g': 0, 'pm': -1, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 4}], 11),\n  ('normal control 1',\n   [{'a': 1, 'g': 0, 'pm': 1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 2}], 48),\n  ('normal control 2',\n   [{'a': 0, 'g': 6, 'pm': 2, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 10}], 265),\n  ('normal control 3',\n   [{'a': 2, 'g': 2, 'pm': 0, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 2}], 128),\n  ('normal control 4',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 1, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 8}], 177)],\n [('regression: plus-minus sign',\n   [{'a': 1, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 2, 'so_g': 0, 'sog': 3}], 137),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 1, 'g': 6, 'pm': -1, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 7}], 253),\n  ('second regression',\n   [{'a': 1, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 6}], 194),\n  ('normal control 1',\n   [{'a': 2, 'g': 3, 'pm': 0, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 3, 'so_g': 1, 'sog': 3}], 212),\n  ('normal control 2',\n   [{'a': 2, 'g': 1, 'pm': 0, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 1}], 74),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': 2, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 4}], 106),\n  ('normal control 4',\n   [{'a': 3, 'g': 4, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 3, 'so_g': 0, 'sog': 9}], 271)],\n [('regression: plus-minus sign',\n   [{'a': 1, 'g': 6, 'pm': -2, 'ppa': 1, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 244),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 5}], 40),\n  ('second regression',\n   [{'a': 1, 'g': 3, 'pm': -2, 'ppa': 1, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 7}], 153),\n  ('normal control 1',\n   [{'a': 0, 'g': 1, 'pm': 2, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 7}], 93),\n  ('normal control 2',\n   [{'a': 1, 'g': 0, 'pm': 3, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 3}], 62),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': 0, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 7}], 78),\n  ('normal control 4',\n   [{'a': 0, 'g': 6, 'pm': 0, 'ppa': 0, 'ppg': 5, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 7}], 263)]]\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":"cfc8cac733daf18bc40b4dc2bee0d5ea93cad70bcb5cc6fb5809b23837a77b1a","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 + abs(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: plus-minus sign',\n   [{'a': 3, 'g': 2, 'pm': -3, 'ppa': 1, 'ppg': 1, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 2}], 128),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 3, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 9}], 186),\n  ('second regression',\n   [{'a': 3, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 4}], 171),\n  ('normal control 1',\n   [{'a': 0, 'g': 2, 'pm': 0, 'ppa': 0, 'ppg': 1, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 8}], 117),\n  ('normal control 2',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 8}], 192),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 0}], 65),\n  ('normal control 4',\n   [{'a': 1, 'g': 6, 'pm': 1, 'ppa': 2, 'ppg': 6, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 11}], 314)],\n [('regression: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 2}], 38),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 2, 'g': 2, 'pm': -1, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 6}], 129),\n  ('second regression',\n   [{'a': 2, 'g': 1, 'pm': -3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 3}], 72),\n  ('normal control 1',\n   [{'a': 3, 'g': 6, 'pm': 0, 'ppa': 2, 'ppg': 3, 'sha': 0, 'shg': 1, 'so_g': 1, 'sog': 8}], 327),\n  ('normal control 2',\n   [{'a': 1, 'g': 2, 'pm': 2, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 3}], 117),\n  ('normal control 3',\n   [{'a': 3, 'g': 4, 'pm': 2, 'ppa': 2, 'ppg': 2, 'sha': 0, 'shg': 2, 'so_g': 1, 'sog': 9}], 296),\n  ('normal control 4',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 0, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 9}], 176)],\n [('regression: plus-minus sign',\n   [{'a': 3, 'g': 0, 'pm': -2, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 2}], 58),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 2}], 23),\n  ('second regression',\n   [{'a': 0, 'g': 0, 'pm': -1, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 4}], 11),\n  ('normal control 1',\n   [{'a': 1, 'g': 0, 'pm': 1, 'ppa': 2, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 2}], 48),\n  ('normal control 2',\n   [{'a': 0, 'g': 6, 'pm': 2, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 10}], 265),\n  ('normal control 3',\n   [{'a': 2, 'g': 2, 'pm': 0, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 2}], 128),\n  ('normal control 4',\n   [{'a': 0, 'g': 3, 'pm': 2, 'ppa': 1, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 8}], 177)],\n [('regression: plus-minus sign',\n   [{'a': 1, 'g': 3, 'pm': -3, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 2, 'so_g': 0, 'sog': 3}], 137),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 1, 'g': 6, 'pm': -1, 'ppa': 0, 'ppg': 1, 'sha': 0, 'shg': 1, 'so_g': 0, 'sog': 7}], 253),\n  ('second regression',\n   [{'a': 1, 'g': 4, 'pm': -2, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 1, 'sog': 6}], 194),\n  ('normal control 1',\n   [{'a': 2, 'g': 3, 'pm': 0, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 3, 'so_g': 1, 'sog': 3}], 212),\n  ('normal control 2',\n   [{'a': 2, 'g': 1, 'pm': 0, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 1}], 74),\n  ('normal control 3',\n   [{'a': 3, 'g': 0, 'pm': 2, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 4}], 106),\n  ('normal control 4',\n   [{'a': 3, 'g': 4, 'pm': 0, 'ppa': 1, 'ppg': 0, 'sha': 0, 'shg': 3, 'so_g': 0, 'sog': 9}], 271)],\n [('regression: plus-minus sign',\n   [{'a': 1, 'g': 6, 'pm': -2, 'ppa': 1, 'ppg': 3, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 6}], 244),\n  ('partial repair probe: plus-minus sign',\n   [{'a': 0, 'g': 1, 'pm': -3, 'ppa': 2, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 5}], 40),\n  ('second regression',\n   [{'a': 1, 'g': 3, 'pm': -2, 'ppa': 1, 'ppg': 2, 'sha': 0, 'shg': 0, 'so_g': 1, 'sog': 7}], 153),\n  ('normal control 1',\n   [{'a': 0, 'g': 1, 'pm': 2, 'ppa': 1, 'ppg': 0, 'sha': 1, 'shg': 0, 'so_g': 0, 'sog': 7}], 93),\n  ('normal control 2',\n   [{'a': 1, 'g': 0, 'pm': 3, 'ppa': 0, 'ppg': 0, 'sha': 0, 'shg': 0, 'so_g': 0, 'sog': 3}], 62),\n  ('normal control 3',\n   [{'a': 0, 'g': 1, 'pm': 0, 'ppa': 0, 'ppg': 0, 'sha': 1, 'shg': 1, 'so_g': 0, 'sog': 7}], 78),\n  ('normal control 4',\n   [{'a': 0, 'g': 6, 'pm': 0, 'ppa': 0, 'ppg': 5, 'sha': 1, 'shg': 0, 'so_g': 1, 'sog': 7}], 263)]]\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-plus-minus-sign","generated_at":"2026-09-29T14:50:37.932492+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.","root_cause":"The absolute value of plus/minus is used.","sha256":"396ba1d402bbf9f701e317a770f377f3f04c72d07a435db4b3801612f66916cf","title":"Negative plus/minus scored as positive · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":37.592,"exit_code":1,"observations":[{"actual":158,"check":"regression: plus-minus sign","expected":128,"passed":false},{"actual":216,"check":"partial repair probe: plus-minus sign","expected":186,"passed":false},{"actual":201,"check":"second regression","expected":171,"passed":false},{"actual":117,"check":"normal control 1","expected":117,"passed":true},{"actual":192,"check":"normal control 2","expected":192,"passed":true},{"actual":65,"check":"normal control 3","expected":65,"passed":true},{"actual":314,"check":"normal control 4","expected":314,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: plus-minus sign\", \"actual\": 158, \"expected\": 128, \"passed\": false}, {\"check\": \"partial repair probe: plus-minus sign\", \"actual\": 216, \"expected\": 186, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 201, \"expected\": 171, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 117, \"expected\": 117, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 192, \"expected\": 192, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 65, \"expected\": 65, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 314, \"expected\": 314, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":38.713,"exit_code":1,"observations":[{"actual":188,"check":"regression: plus-minus sign","expected":128,"passed":false},{"actual":246,"check":"partial repair probe: plus-minus sign","expected":186,"passed":false},{"actual":231,"check":"second regression","expected":171,"passed":false},{"actual":117,"check":"normal control 1","expected":117,"passed":true},{"actual":192,"check":"normal control 2","expected":192,"passed":true},{"actual":65,"check":"normal control 3","expected":65,"passed":true},{"actual":314,"check":"normal control 4","expected":314,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: plus-minus sign\", \"actual\": 188, \"expected\": 128, \"passed\": false}, {\"check\": \"partial repair probe: plus-minus sign\", \"actual\": 246, \"expected\": 186, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 231, \"expected\": 171, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 117, \"expected\": 117, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 192, \"expected\": 192, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 65, \"expected\": 65, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 314, \"expected\": 314, \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}