{"abstract":"A 10-ball 25 earns no strike-rate bonus.","category":"Fantasy sports scoring","checks":7,"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.","contract_signature":"inn","evaluation_group":"w2-fantasy-sports-scoring-cricket-batting","failed_approach":"Dropping the role condition applies strike-rate penalties to bowlers.","family":"w2-fantasy-sports-scoring-cricket-batting-strike-rate-eligibility","id":"FA-85186","implementations":{"attempt":{"sha256":"e6a5d148858b0e8ef7a7015525bb28b65474c5cbbf45f5364793651e64d77b22","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(inn):\n    pts = inn['runs'] + inn['fours'] + inn['sixes'] * 2\n    if inn['runs'] >= 100:\n        pts += 16\n    elif inn['runs'] >= 50:\n        pts += 8\n    elif inn['runs'] >= 30:\n        pts += 4\n    if inn['out'] and inn['runs'] == 0 and inn['balls'] >= 1 and inn['role'] != 'BOWL':\n        pts -= 2\n    if inn['balls'] >= 10:\n        r, b = inn['runs'] * 100, inn['balls']\n        if r > 170 * b:\n            pts += 6\n        elif r > 150 * b:\n            pts += 4\n        elif r >= 130 * b:\n            pts += 2\n        elif r >= 70 * b:\n            pass\n        elif r >= 60 * b:\n            pts -= 2\n        elif r >= 50 * b:\n            pts -= 4\n        else:\n            pts -= 6\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 17, 'sixes': 2}], 25),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 11, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),\n  ('second regression', [{'balls': 35, 'fours': 1, 'out': True, 'role': 'BOWL', 'runs': 60, 'sixes': 2}], 73),\n  ('normal control 1', [{'balls': 33, 'fours': 9, 'out': False, 'role': 'BAT', 'runs': 57, 'sixes': 3}], 86),\n  ('normal control 2', [{'balls': 38, 'fours': 16, 'out': True, 'role': 'WK', 'runs': 65, 'sixes': 0}], 95),\n  ('normal control 3', [{'balls': 0, 'fours': 0, 'out': True, 'role': 'WK', 'runs': 0, 'sixes': 0}], 0),\n  ('normal control 4', [{'balls': 1, 'fours': 6, 'out': True, 'role': 'BOWL', 'runs': 30, 'sixes': 0}], 40)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 5, 'out': True, 'role': 'BAT', 'runs': 29, 'sixes': 0}], 40),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 11, 'fours': 3, 'out': True, 'role': 'BOWL', 'runs': 15, 'sixes': 0}], 18),\n  ('second regression', [{'balls': 47, 'fours': 10, 'out': False, 'role': 'BOWL', 'runs': 83, 'sixes': 3}],\n   107),\n  ('normal control 1', [{'balls': 36, 'fours': 6, 'out': True, 'role': 'BOWL', 'runs': 34, 'sixes': 0}], 44),\n  ('normal control 2', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 1}], 19),\n  ('normal control 3', [{'balls': 35, 'fours': 7, 'out': False, 'role': 'AR', 'runs': 46, 'sixes': 2}], 63),\n  ('normal control 4', [{'balls': 0, 'fours': 0, 'out': False, 'role': 'BAT', 'runs': 0, 'sixes': 0}], 0)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 5, 'out': False, 'role': 'BAT', 'runs': 51, 'sixes': 2}], 74),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 37, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 52, 'sixes': 0}], 63),\n  ('second regression', [{'balls': 47, 'fours': 5, 'out': True, 'role': 'BOWL', 'runs': 94, 'sixes': 9}],\n   125),\n  ('normal control 1', [{'balls': 1, 'fours': 12, 'out': False, 'role': 'BOWL', 'runs': 51, 'sixes': 0}], 71),\n  ('normal control 2', [{'balls': 11, 'fours': 2, 'out': True, 'role': 'AR', 'runs': 17, 'sixes': 0}], 23),\n  ('normal control 3', [{'balls': 32, 'fours': 10, 'out': True, 'role': 'AR', 'runs': 70, 'sixes': 0}], 94),\n  ('normal control 4', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'WK', 'runs': 30, 'sixes': 5}], 44)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 18, 'out': True, 'role': 'BAT', 'runs': 88, 'sixes': 2}], 124),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 20, 'fours': 3, 'out': True, 'role': 'BOWL', 'runs': 30, 'sixes': 1}], 39),\n  ('second regression', [{'balls': 13, 'fours': 4, 'out': True, 'role': 'BOWL', 'runs': 23, 'sixes': 0}], 27),\n  ('normal control 1', [{'balls': 11, 'fours': 3, 'out': True, 'role': 'WK', 'runs': 19, 'sixes': 1}], 30),\n  ('normal control 2', [{'balls': 0, 'fours': 0, 'out': False, 'role': 'BAT', 'runs': 0, 'sixes': 0}], 0),\n  ('normal control 3', [{'balls': 47, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 29, 'sixes': 4}], 35),\n  ('normal control 4', [{'balls': 1, 'fours': 0, 'out': True, 'role': 'BAT', 'runs': 0, 'sixes': 0}], -2)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 16, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 5}], 148),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 20, 'fours': 7, 'out': True, 'role': 'BOWL', 'runs': 29, 'sixes': 0}], 36),\n  ('second regression', [{'balls': 10, 'fours': 9, 'out': True, 'role': 'AR', 'runs': 51, 'sixes': 1}], 76),\n  ('normal control 1', [{'balls': 11, 'fours': 3, 'out': True, 'role': 'WK', 'runs': 33, 'sixes': 3}], 52),\n  ('normal control 2', [{'balls': 1, 'fours': 4, 'out': True, 'role': 'WK', 'runs': 29, 'sixes': 2}], 37),\n  ('normal control 3', [{'balls': 20, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 0, 'sixes': 0}], -8),\n  ('normal control 4', [{'balls': 23, 'fours': 11, 'out': False, 'role': 'BAT', 'runs': 100, 'sixes': 8}],\n   149)]]\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":"5ca87baa253bcc1b1e66a5b96beedbec323ed3be1af7e5b3c92fa0c965c556d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(inn):\n    pts = inn['runs'] + inn['fours'] + inn['sixes'] * 2\n    if inn['runs'] >= 100:\n        pts += 16\n    elif inn['runs'] >= 50:\n        pts += 8\n    elif inn['runs'] >= 30:\n        pts += 4\n    if inn['out'] and inn['runs'] == 0 and inn['balls'] >= 1 and inn['role'] != 'BOWL':\n        pts -= 2\n    if inn['balls'] > 10 and inn['role'] != 'BOWL':\n        r, b = inn['runs'] * 100, inn['balls']\n        if r > 170 * b:\n            pts += 6\n        elif r > 150 * b:\n            pts += 4\n        elif r >= 130 * b:\n            pts += 2\n        elif r >= 70 * b:\n            pass\n        elif r >= 60 * b:\n            pts -= 2\n        elif r >= 50 * b:\n            pts -= 4\n        else:\n            pts -= 6\n    return pts\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 17, 'sixes': 2}], 25),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 11, 'fours': 0, 'out': True, 'role': 'BOWL', 'runs': 0, 'sixes': 0}], 0),\n  ('second regression', [{'balls': 35, 'fours': 1, 'out': True, 'role': 'BOWL', 'runs': 60, 'sixes': 2}], 73),\n  ('normal control 1', [{'balls': 33, 'fours': 9, 'out': False, 'role': 'BAT', 'runs': 57, 'sixes': 3}], 86),\n  ('normal control 2', [{'balls': 38, 'fours': 16, 'out': True, 'role': 'WK', 'runs': 65, 'sixes': 0}], 95),\n  ('normal control 3', [{'balls': 0, 'fours': 0, 'out': True, 'role': 'WK', 'runs': 0, 'sixes': 0}], 0),\n  ('normal control 4', [{'balls': 1, 'fours': 6, 'out': True, 'role': 'BOWL', 'runs': 30, 'sixes': 0}], 40)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 5, 'out': True, 'role': 'BAT', 'runs': 29, 'sixes': 0}], 40),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 11, 'fours': 3, 'out': True, 'role': 'BOWL', 'runs': 15, 'sixes': 0}], 18),\n  ('second regression', [{'balls': 47, 'fours': 10, 'out': False, 'role': 'BOWL', 'runs': 83, 'sixes': 3}],\n   107),\n  ('normal control 1', [{'balls': 36, 'fours': 6, 'out': True, 'role': 'BOWL', 'runs': 34, 'sixes': 0}], 44),\n  ('normal control 2', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'BOWL', 'runs': 17, 'sixes': 1}], 19),\n  ('normal control 3', [{'balls': 35, 'fours': 7, 'out': False, 'role': 'AR', 'runs': 46, 'sixes': 2}], 63),\n  ('normal control 4', [{'balls': 0, 'fours': 0, 'out': False, 'role': 'BAT', 'runs': 0, 'sixes': 0}], 0)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 5, 'out': False, 'role': 'BAT', 'runs': 51, 'sixes': 2}], 74),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 37, 'fours': 3, 'out': False, 'role': 'BOWL', 'runs': 52, 'sixes': 0}], 63),\n  ('second regression', [{'balls': 47, 'fours': 5, 'out': True, 'role': 'BOWL', 'runs': 94, 'sixes': 9}],\n   125),\n  ('normal control 1', [{'balls': 1, 'fours': 12, 'out': False, 'role': 'BOWL', 'runs': 51, 'sixes': 0}], 71),\n  ('normal control 2', [{'balls': 11, 'fours': 2, 'out': True, 'role': 'AR', 'runs': 17, 'sixes': 0}], 23),\n  ('normal control 3', [{'balls': 32, 'fours': 10, 'out': True, 'role': 'AR', 'runs': 70, 'sixes': 0}], 94),\n  ('normal control 4', [{'balls': 9, 'fours': 0, 'out': False, 'role': 'WK', 'runs': 30, 'sixes': 5}], 44)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 18, 'out': True, 'role': 'BAT', 'runs': 88, 'sixes': 2}], 124),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 20, 'fours': 3, 'out': True, 'role': 'BOWL', 'runs': 30, 'sixes': 1}], 39),\n  ('second regression', [{'balls': 13, 'fours': 4, 'out': True, 'role': 'BOWL', 'runs': 23, 'sixes': 0}], 27),\n  ('normal control 1', [{'balls': 11, 'fours': 3, 'out': True, 'role': 'WK', 'runs': 19, 'sixes': 1}], 30),\n  ('normal control 2', [{'balls': 0, 'fours': 0, 'out': False, 'role': 'BAT', 'runs': 0, 'sixes': 0}], 0),\n  ('normal control 3', [{'balls': 47, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 29, 'sixes': 4}], 35),\n  ('normal control 4', [{'balls': 1, 'fours': 0, 'out': True, 'role': 'BAT', 'runs': 0, 'sixes': 0}], -2)],\n [('regression: strike-rate eligibility',\n   [{'balls': 10, 'fours': 16, 'out': True, 'role': 'AR', 'runs': 100, 'sixes': 5}], 148),\n  ('partial repair probe: strike-rate eligibility',\n   [{'balls': 20, 'fours': 7, 'out': True, 'role': 'BOWL', 'runs': 29, 'sixes': 0}], 36),\n  ('second regression', [{'balls': 10, 'fours': 9, 'out': True, 'role': 'AR', 'runs': 51, 'sixes': 1}], 76),\n  ('normal control 1', [{'balls': 11, 'fours': 3, 'out': True, 'role': 'WK', 'runs': 33, 'sixes': 3}], 52),\n  ('normal control 2', [{'balls': 1, 'fours': 4, 'out': True, 'role': 'WK', 'runs': 29, 'sixes': 2}], 37),\n  ('normal control 3', [{'balls': 20, 'fours': 0, 'out': True, 'role': 'AR', 'runs': 0, 'sixes': 0}], -8),\n  ('normal control 4', [{'balls': 23, 'fours': 11, 'out': False, 'role': 'BAT', 'runs': 100, 'sixes': 8}],\n   149)]]\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-cricket-batting-strike-rate-eligibility","generated_at":"2026-09-29T14:50:37.993202+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Cricket fantasy contests hinge on exclusive milestones, duck eligibility and strike-rate bands evaluated exactly.","root_cause":"The minimum-balls test is strict greater-than.","sha256":"7f1d60f4b5f57e76170c1f390dd42b2d97263d2fe0850dc1e1e3878b38f51917","title":"Ten-ball innings excluded from strike-rate scoring · 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":40.916,"exit_code":1,"observations":[{"actual":25,"check":"regression: strike-rate eligibility","expected":25,"passed":true},{"actual":-6,"check":"partial repair probe: strike-rate eligibility","expected":0,"passed":false},{"actual":79,"check":"second regression","expected":73,"passed":false},{"actual":86,"check":"normal control 1","expected":86,"passed":true},{"actual":95,"check":"normal control 2","expected":95,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true},{"actual":40,"check":"normal control 4","expected":40,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: strike-rate eligibility\", \"actual\": 25, \"expected\": 25, \"passed\": true}, {\"check\": \"partial repair probe: strike-rate eligibility\", \"actual\": -6, \"expected\": 0, \"passed\": false}, {\"check\": \"second regression\", \"actual\": 79, \"expected\": 73, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": 86, \"expected\": 86, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 95, \"expected\": 95, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 40, \"expected\": 40, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.729,"exit_code":1,"observations":[{"actual":21,"check":"regression: strike-rate eligibility","expected":25,"passed":false},{"actual":0,"check":"partial repair probe: strike-rate eligibility","expected":0,"passed":true},{"actual":73,"check":"second regression","expected":73,"passed":true},{"actual":86,"check":"normal control 1","expected":86,"passed":true},{"actual":95,"check":"normal control 2","expected":95,"passed":true},{"actual":0,"check":"normal control 3","expected":0,"passed":true},{"actual":40,"check":"normal control 4","expected":40,"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: strike-rate eligibility\", \"actual\": 21, \"expected\": 25, \"passed\": false}, {\"check\": \"partial repair probe: strike-rate eligibility\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"second regression\", \"actual\": 73, \"expected\": 73, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": 86, \"expected\": 86, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": 95, \"expected\": 95, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": 0, \"expected\": 0, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": 40, \"expected\": 40, \"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."}}