{"abstract":"A yankee is settled as 15 lines, or as 10 lines without the fourfold.","category":"Betting odds conversion","checks":8,"contract":"Full-cover system bets. system: trixie (3 selections: doubles and treble), patent (3: singles, doubles, treble), yankee (4: doubles, trebles, fourfold), lucky15 (4: singles through fourfold). Wrong selection count returns \"invalid\". Every combination is a line staked unit_cents; a line with a losing selection returns 0; void selections count as price 1. Return [lines, total stake, total return rounded down].","evaluation_group":"w2-odds-conversion-full-cover-system-bets","failed_approach":"Dropping the fourfold leaves 10 lines.","family":"w2-odds-conversion-full-cover-system-bets-yankee-composition","id":"FA-84641","implementations":{"attempt":{"sha256":"186b476a7d90dcf26541f87f08a2050393aba043e191615dc79d1c9fe7b24f99","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport itertools\nimport math\nN = 1\nobservations = []\ndef solve(selections, unit_cents, system):\n    SYS = {'trixie': (3, [2, 3]), 'patent': (3, [1, 2, 3]), 'yankee': (4, [2, 3]), 'lucky15': (4, [1, 2, 3, 4])}\n    n, sizes = SYS[system]\n    if len(selections) != n:\n        return 'invalid'\n    lines = [c for k in sizes for c in itertools.combinations(range(n), k)]\n    ret = Fraction(0)\n    for combo in lines:\n        m = Fraction(1)\n        for i in combo:\n            price, result = selections[i]\n            if result == 'lose':\n                m = Fraction(0)\n                break\n            if result == 'win':\n                m *= Fraction(price)\n        ret += unit_cents * m\n    return [len(lines), unit_cents * len(lines), math.floor(ret)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'win'], ['2.17', 'win'], ['4.78', 'void'], ['3.18', 'void']], 50, 'yankee'),\n   [11, 550, 3464]),\n  ('variant scenario 1',\n   ([['1.95', 'win'], ['4.63', 'win'], ['5.31', 'win']], 25, 'trixie'),\n   [4, 100, 2297]),\n  ('variant scenario 2',\n   ([['5.78', 'win'], ['1.85', 'lose'], ['1.47', 'void'], ['1.41', 'void']], 25, 'lucky15'),\n   [15, 375, 653])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'lose'], ['1.90', 'win'], ['2.16', 'lose'], ['1.45', 'win']], 50, 'yankee'),\n   [11, 550, 137]),\n  ('variant scenario 1',\n   ([['2.42', 'lose'], ['2.58', 'win'], ['2.00', 'lose'], ['4.02', 'win']], 100, 'lucky15'),\n   [15, 1500, 1697]),\n  ('variant scenario 2',\n   ([['2.34', 'win'], ['1.77', 'lose'], ['4.10', 'lose']], 100, 'patent'),\n   [7, 700, 234])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['3.11', 'win'], ['5.18', 'win'], ['2.02', 'win'], ['1.76', 'win']], 100, 'yankee'),\n   [11, 1100, 19864]),\n  ('variant scenario 1',\n   ([['4.95', 'win'], ['5.49', 'void'], ['4.60', 'void']], 100, 'trixie'),\n   [4, 400, 1585]),\n  ('variant scenario 2',\n   ([['3.01', 'lose'], ['4.92', 'lose'], ['1.83', 'lose'], ['2.53', 'lose'], ['3.61', 'void']],\n    100,\n    'lucky15'),\n   'invalid')],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.73', 'void'], ['3.73', 'void'], ['2.13', 'lose'], ['3.62', 'win']], 25, 'yankee'),\n   [11, 275, 296]),\n  ('variant scenario 1',\n   ([['4.26', 'win'], ['1.31', 'void'], ['1.86', 'void']], 100, 'patent'),\n   [7, 700, 2004]),\n  ('variant scenario 2',\n   ([['4.86', 'void'], ['3.74', 'void'], ['3.83', 'win']], 25, 'trixie'),\n   [4, 100, 312])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['1.39', 'win'], ['4.34', 'void'], ['2.29', 'void'], ['5.41', 'void']], 50, 'yankee'),\n   [11, 550, 686]),\n  ('variant scenario 1',\n   ([['4.65', 'win'], ['1.35', 'void'], ['1.60', 'void']], 25, 'patent'),\n   [7, 175, 540]),\n  ('variant scenario 2',\n   ([['3.24', 'win'], ['1.34', 'void'], ['3.79', 'win']], 100, 'trixie'),\n   [4, 400, 3158])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"1c7ccaefedc92e2e70b80e90fba40cc7b2827c125032e18e36c89b60377efeb0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport itertools\nimport math\nN = 1\nobservations = []\ndef solve(selections, unit_cents, system):\n    SYS = {'trixie': (3, [2, 3]), 'patent': (3, [1, 2, 3]), 'yankee': (4, [1, 2, 3, 4]), 'lucky15': (4, [1, 2, 3, 4])}\n    n, sizes = SYS[system]\n    if len(selections) != n:\n        return 'invalid'\n    lines = [c for k in sizes for c in itertools.combinations(range(n), k)]\n    ret = Fraction(0)\n    for combo in lines:\n        m = Fraction(1)\n        for i in combo:\n            price, result = selections[i]\n            if result == 'lose':\n                m = Fraction(0)\n                break\n            if result == 'win':\n                m *= Fraction(price)\n        ret += unit_cents * m\n    return [len(lines), unit_cents * len(lines), math.floor(ret)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'win'], ['2.17', 'win'], ['4.78', 'void'], ['3.18', 'void']], 50, 'yankee'),\n   [11, 550, 3464]),\n  ('variant scenario 1',\n   ([['1.95', 'win'], ['4.63', 'win'], ['5.31', 'win']], 25, 'trixie'),\n   [4, 100, 2297]),\n  ('variant scenario 2',\n   ([['5.78', 'win'], ['1.85', 'lose'], ['1.47', 'void'], ['1.41', 'void']], 25, 'lucky15'),\n   [15, 375, 653])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'lose'], ['1.90', 'win'], ['2.16', 'lose'], ['1.45', 'win']], 50, 'yankee'),\n   [11, 550, 137]),\n  ('variant scenario 1',\n   ([['2.42', 'lose'], ['2.58', 'win'], ['2.00', 'lose'], ['4.02', 'win']], 100, 'lucky15'),\n   [15, 1500, 1697]),\n  ('variant scenario 2',\n   ([['2.34', 'win'], ['1.77', 'lose'], ['4.10', 'lose']], 100, 'patent'),\n   [7, 700, 234])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['3.11', 'win'], ['5.18', 'win'], ['2.02', 'win'], ['1.76', 'win']], 100, 'yankee'),\n   [11, 1100, 19864]),\n  ('variant scenario 1',\n   ([['4.95', 'win'], ['5.49', 'void'], ['4.60', 'void']], 100, 'trixie'),\n   [4, 400, 1585]),\n  ('variant scenario 2',\n   ([['3.01', 'lose'], ['4.92', 'lose'], ['1.83', 'lose'], ['2.53', 'lose'], ['3.61', 'void']],\n    100,\n    'lucky15'),\n   'invalid')],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.73', 'void'], ['3.73', 'void'], ['2.13', 'lose'], ['3.62', 'win']], 25, 'yankee'),\n   [11, 275, 296]),\n  ('variant scenario 1',\n   ([['4.26', 'win'], ['1.31', 'void'], ['1.86', 'void']], 100, 'patent'),\n   [7, 700, 2004]),\n  ('variant scenario 2',\n   ([['4.86', 'void'], ['3.74', 'void'], ['3.83', 'win']], 25, 'trixie'),\n   [4, 100, 312])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['1.39', 'win'], ['4.34', 'void'], ['2.29', 'void'], ['5.41', 'void']], 50, 'yankee'),\n   [11, 550, 686]),\n  ('variant scenario 1',\n   ([['4.65', 'win'], ['1.35', 'void'], ['1.60', 'void']], 25, 'patent'),\n   [7, 175, 540]),\n  ('variant scenario 2',\n   ([['3.24', 'win'], ['1.34', 'void'], ['3.79', 'win']], 100, 'trixie'),\n   [4, 400, 3158])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"5d5e7335c81c28b2db3f2b0b317b36f9677196cd968f950a2d496feac0badf55","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport itertools\nimport math\nN = 1\nobservations = []\ndef solve(selections, unit_cents, system):\n    SYS = {'trixie': (3, [2, 3]), 'patent': (3, [1, 2, 3]), 'yankee': (4, [2, 3, 4]), 'lucky15': (4, [1, 2, 3, 4])}\n    n, sizes = SYS[system]\n    if len(selections) != n:\n        return 'invalid'\n    lines = [c for k in sizes for c in itertools.combinations(range(n), k)]\n    ret = Fraction(0)\n    for combo in lines:\n        m = Fraction(1)\n        for i in combo:\n            price, result = selections[i]\n            if result == 'lose':\n                m = Fraction(0)\n                break\n            if result == 'win':\n                m *= Fraction(price)\n        ret += unit_cents * m\n    return [len(lines), unit_cents * len(lines), math.floor(ret)]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ndef run(args):\n    try:\n        return solve(*args)\n    except Exception as exc:\n        return 'raised ' + type(exc).__name__\ncases = [[('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'win'], ['2.17', 'win'], ['4.78', 'void'], ['3.18', 'void']], 50, 'yankee'),\n   [11, 550, 3464]),\n  ('variant scenario 1',\n   ([['1.95', 'win'], ['4.63', 'win'], ['5.31', 'win']], 25, 'trixie'),\n   [4, 100, 2297]),\n  ('variant scenario 2',\n   ([['5.78', 'win'], ['1.85', 'lose'], ['1.47', 'void'], ['1.41', 'void']], 25, 'lucky15'),\n   [15, 375, 653])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.29', 'lose'], ['1.90', 'win'], ['2.16', 'lose'], ['1.45', 'win']], 50, 'yankee'),\n   [11, 550, 137]),\n  ('variant scenario 1',\n   ([['2.42', 'lose'], ['2.58', 'win'], ['2.00', 'lose'], ['4.02', 'win']], 100, 'lucky15'),\n   [15, 1500, 1697]),\n  ('variant scenario 2',\n   ([['2.34', 'win'], ['1.77', 'lose'], ['4.10', 'lose']], 100, 'patent'),\n   [7, 700, 234])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['3.11', 'win'], ['5.18', 'win'], ['2.02', 'win'], ['1.76', 'win']], 100, 'yankee'),\n   [11, 1100, 19864]),\n  ('variant scenario 1',\n   ([['4.95', 'win'], ['5.49', 'void'], ['4.60', 'void']], 100, 'trixie'),\n   [4, 400, 1585]),\n  ('variant scenario 2',\n   ([['3.01', 'lose'], ['4.92', 'lose'], ['1.83', 'lose'], ['2.53', 'lose'], ['3.61', 'void']],\n    100,\n    'lucky15'),\n   'invalid')],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['5.73', 'void'], ['3.73', 'void'], ['2.13', 'lose'], ['3.62', 'win']], 25, 'yankee'),\n   [11, 275, 296]),\n  ('variant scenario 1',\n   ([['4.26', 'win'], ['1.31', 'void'], ['1.86', 'void']], 100, 'patent'),\n   [7, 700, 2004]),\n  ('variant scenario 2',\n   ([['4.86', 'void'], ['3.74', 'void'], ['3.83', 'win']], 25, 'trixie'),\n   [4, 100, 312])],\n [('control trixie all win',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 2000]),\n  ('control yankee line count',\n   ([['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'yankee'),\n   [11, 1100, 0]),\n  ('boundary void selection',\n   ([['2.00', 'void'], ['3.00', 'win'], ['2.00', 'win']], 100, 'trixie'),\n   [4, 400, 1700]),\n  ('boundary patent single winner',\n   ([['5.00', 'win'], ['2.00', 'lose'], ['2.00', 'lose']], 100, 'patent'),\n   [7, 700, 500]),\n  ('boundary wrong count',\n   ([['2.00', 'win'], ['2.00', 'win'], ['2.00', 'win']], 100, 'yankee'),\n   'invalid'),\n  ('regression: yankee composition',\n   ([['1.39', 'win'], ['4.34', 'void'], ['2.29', 'void'], ['5.41', 'void']], 50, 'yankee'),\n   [11, 550, 686]),\n  ('variant scenario 1',\n   ([['4.65', 'win'], ['1.35', 'void'], ['1.60', 'void']], 25, 'patent'),\n   [7, 175, 540]),\n  ('variant scenario 2',\n   ([['3.24', 'win'], ['1.34', 'void'], ['3.79', 'win']], 100, 'trixie'),\n   [4, 400, 3158])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, run(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":"Stipulated, bounded toy contract stated in the contract field; not a claim of conformance with any operator, exchange or regulator rule set. 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-odds-conversion-full-cover-system-bets-yankee-composition","generated_at":"2026-09-29T14:50:32.961442+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Bookmaker settlement expands system bets into combination lines before pricing each one.","repair":"A yankee is doubles, trebles and the fourfold only (11 lines).","root_cause":"The yankee definition includes single lines.","sha256":"eb965b4eb4765ef6c7b3f7f6e337133f0bfce3c187862d08c6f55ee805ff1486","title":"Yankee expanded with singles or without the fourfold · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.726,"exit_code":1,"observations":[{"actual":[4,400,2000],"check":"control trixie all win","expected":[4,400,2000],"passed":true},{"actual":[10,1000,0],"check":"control yankee line count","expected":[11,1100,0],"passed":false},{"actual":[4,400,1700],"check":"boundary void selection","expected":[4,400,1700],"passed":true},{"actual":[7,700,500],"check":"boundary patent single winner","expected":[7,700,500],"passed":true},{"actual":"invalid","check":"boundary wrong count","expected":"invalid","passed":true},{"actual":[10,500,2890],"check":"regression: yankee composition","expected":[11,550,3464],"passed":false},{"actual":[4,100,2297],"check":"variant scenario 1","expected":[4,100,2297],"passed":true},{"actual":[15,375,653],"check":"variant scenario 2","expected":[15,375,653],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control trixie all win\", \"actual\": [4, 400, 2000], \"expected\": [4, 400, 2000], \"passed\": true}, {\"check\": \"control yankee line count\", \"actual\": [10, 1000, 0], \"expected\": [11, 1100, 0], \"passed\": false}, {\"check\": \"boundary void selection\", \"actual\": [4, 400, 1700], \"expected\": [4, 400, 1700], \"passed\": true}, {\"check\": \"boundary patent single winner\", \"actual\": [7, 700, 500], \"expected\": [7, 700, 500], \"passed\": true}, {\"check\": \"boundary wrong count\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: yankee composition\", \"actual\": [10, 500, 2890], \"expected\": [11, 550, 3464], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [4, 100, 2297], \"expected\": [4, 100, 2297], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [15, 375, 653], \"expected\": [15, 375, 653], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.279,"exit_code":1,"observations":[{"actual":[4,400,2000],"check":"control trixie all win","expected":[4,400,2000],"passed":true},{"actual":[15,1500,0],"check":"control yankee line count","expected":[11,1100,0],"passed":false},{"actual":[4,400,1700],"check":"boundary void selection","expected":[4,400,1700],"passed":true},{"actual":[7,700,500],"check":"boundary patent single winner","expected":[7,700,500],"passed":true},{"actual":"invalid","check":"boundary wrong count","expected":"invalid","passed":true},{"actual":[15,750,3937],"check":"regression: yankee composition","expected":[11,550,3464],"passed":false},{"actual":[4,100,2297],"check":"variant scenario 1","expected":[4,100,2297],"passed":true},{"actual":[15,375,653],"check":"variant scenario 2","expected":[15,375,653],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control trixie all win\", \"actual\": [4, 400, 2000], \"expected\": [4, 400, 2000], \"passed\": true}, {\"check\": \"control yankee line count\", \"actual\": [15, 1500, 0], \"expected\": [11, 1100, 0], \"passed\": false}, {\"check\": \"boundary void selection\", \"actual\": [4, 400, 1700], \"expected\": [4, 400, 1700], \"passed\": true}, {\"check\": \"boundary patent single winner\", \"actual\": [7, 700, 500], \"expected\": [7, 700, 500], \"passed\": true}, {\"check\": \"boundary wrong count\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: yankee composition\", \"actual\": [15, 750, 3937], \"expected\": [11, 550, 3464], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [4, 100, 2297], \"expected\": [4, 100, 2297], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [15, 375, 653], \"expected\": [15, 375, 653], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.714,"exit_code":0,"observations":[{"actual":[4,400,2000],"check":"control trixie all win","expected":[4,400,2000],"passed":true},{"actual":[11,1100,0],"check":"control yankee line count","expected":[11,1100,0],"passed":true},{"actual":[4,400,1700],"check":"boundary void selection","expected":[4,400,1700],"passed":true},{"actual":[7,700,500],"check":"boundary patent single winner","expected":[7,700,500],"passed":true},{"actual":"invalid","check":"boundary wrong count","expected":"invalid","passed":true},{"actual":[11,550,3464],"check":"regression: yankee composition","expected":[11,550,3464],"passed":true},{"actual":[4,100,2297],"check":"variant scenario 1","expected":[4,100,2297],"passed":true},{"actual":[15,375,653],"check":"variant scenario 2","expected":[15,375,653],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control trixie all win\", \"actual\": [4, 400, 2000], \"expected\": [4, 400, 2000], \"passed\": true}, {\"check\": \"control yankee line count\", \"actual\": [11, 1100, 0], \"expected\": [11, 1100, 0], \"passed\": true}, {\"check\": \"boundary void selection\", \"actual\": [4, 400, 1700], \"expected\": [4, 400, 1700], \"passed\": true}, {\"check\": \"boundary patent single winner\", \"actual\": [7, 700, 500], \"expected\": [7, 700, 500], \"passed\": true}, {\"check\": \"boundary wrong count\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: yankee composition\", \"actual\": [11, 550, 3464], \"expected\": [11, 550, 3464], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [4, 100, 2297], \"expected\": [4, 100, 2297], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [15, 375, 653], \"expected\": [15, 375, 653], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}