{"abstract":"A 1.20 leg is excluded from the bonus count.","category":"Betting odds conversion","checks":7,"contract":"Winning accumulator bonus. Every leg price multiplies the accumulator. Legs priced at 1.20 or more qualify; the bonus percentage by qualifying count is {3: 5, 4: 10, 5: 15, 6: 20, 7: 25} with 7 or more paying 25 and fewer than 3 paying 0. The bonus is applied to the profit only: return = stake + profit * (100 + pct) / 100, rounded down. Return [qualifying legs, bonus pct, return cents].","evaluation_group":"w2-odds-conversion-accumulator-bonus","failed_approach":"Rounding prices to one decimal before comparing qualifies a 1.15 leg.","family":"w2-odds-conversion-accumulator-bonus-minimum-odds-boundary","id":"FA-84791","implementations":{"attempt":{"sha256":"7605e627173f946d53457d641f22ac3b6acd11681e841a63ffa93327fa5a80f1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(prices, stake_cents):\n    TABLE = {3: 5, 4: 10, 5: 15, 6: 20, 7: 25}\n    factor = Fraction(1)\n    q = 0\n    for p in prices:\n        d = Fraction(p)\n        factor *= d\n        if round(d, 1) >= Fraction(12, 10):\n            q += 1\n    pct = TABLE.get(min(q, 7), 0)\n    profit = stake_cents * (factor - 1)\n    return [q, pct, math.floor(stake_cents + profit * (100 + pct) / 100)]\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 treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['2.24', '2.16', '1.94', '1.38', '1.58', '1.20', '1.15'], 1000),\n   [6, 20, 33692]),\n  ('variant scenario 1',\n   (['1.81', '1.20', '1.25', '1.97', '1.84', '2.34', '1.19', '1.20', '1.20'], 500),\n   [8, 25, 24538]),\n  ('variant scenario 2', (['1.20', '1.19', '2.31', '1.60', '1.69'], 100), [4, 10, 971])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.64', '1.20'], 1000), [3, 5, 2533]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.19', '2.50'], 500), [2, 0, 2138]),\n  ('variant scenario 1', (['1.86', '1.45', '1.72', '1.20'], 100), [4, 10, 602]),\n  ('variant scenario 2', (['1.25', '1.25'], 500), [2, 0, 781])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.19', '1.25'], 500), [1, 0, 743]),\n  ('regression: minimum odds boundary',\n   (['1.15', '1.19', '1.15', '1.20', '2.77', '1.15', '1.19'], 100),\n   [2, 0, 715]),\n  ('variant scenario 1', (['1.70', '1.25', '1.25', '1.25', '1.19', '2.01'], 1000), [5, 15, 8983]),\n  ('variant scenario 2',\n   (['1.15', '1.25', '1.19', '1.92', '1.96', '1.25', '2.92', '1.10'], 500),\n   [5, 15, 14786])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.15'], 100), [1, 0, 165]),\n  ('regression: minimum odds boundary',\n   (['1.52', '1.19', '1.19', '1.25', '1.20', '1.44', '2.15'], 500),\n   [5, 15, 5672]),\n  ('variant scenario 1', (['1.25', '1.25', '1.62', '2.12', '1.25', '1.25'], 1000), [6, 20, 9861]),\n  ('variant scenario 2',\n   (['2.10', '1.19', '1.15', '1.53', '1.25', '1.15', '1.25'], 100),\n   [4, 10, 859])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['1.25', '1.19', '1.25', '2.32', '1.20', '2.77', '1.95'], 500),\n   [6, 20, 16676]),\n  ('variant scenario 1', (['1.19', '2.59', '1.19', '1.25', '1.75', '1.25'], 500), [4, 10, 5465]),\n  ('variant scenario 2', (['1.15', '1.25', '2.35'], 500), [2, 0, 1689])]]\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":"52b095d6851cba26a1dc0c71b347717f86f5b3a73606b23724e9809e9359ec76","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(prices, stake_cents):\n    TABLE = {3: 5, 4: 10, 5: 15, 6: 20, 7: 25}\n    factor = Fraction(1)\n    q = 0\n    for p in prices:\n        d = Fraction(p)\n        factor *= d\n        if d > Fraction(120, 100):\n            q += 1\n    pct = TABLE.get(min(q, 7), 0)\n    profit = stake_cents * (factor - 1)\n    return [q, pct, math.floor(stake_cents + profit * (100 + pct) / 100)]\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 treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['2.24', '2.16', '1.94', '1.38', '1.58', '1.20', '1.15'], 1000),\n   [6, 20, 33692]),\n  ('variant scenario 1',\n   (['1.81', '1.20', '1.25', '1.97', '1.84', '2.34', '1.19', '1.20', '1.20'], 500),\n   [8, 25, 24538]),\n  ('variant scenario 2', (['1.20', '1.19', '2.31', '1.60', '1.69'], 100), [4, 10, 971])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.64', '1.20'], 1000), [3, 5, 2533]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.19', '2.50'], 500), [2, 0, 2138]),\n  ('variant scenario 1', (['1.86', '1.45', '1.72', '1.20'], 100), [4, 10, 602]),\n  ('variant scenario 2', (['1.25', '1.25'], 500), [2, 0, 781])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.19', '1.25'], 500), [1, 0, 743]),\n  ('regression: minimum odds boundary',\n   (['1.15', '1.19', '1.15', '1.20', '2.77', '1.15', '1.19'], 100),\n   [2, 0, 715]),\n  ('variant scenario 1', (['1.70', '1.25', '1.25', '1.25', '1.19', '2.01'], 1000), [5, 15, 8983]),\n  ('variant scenario 2',\n   (['1.15', '1.25', '1.19', '1.92', '1.96', '1.25', '2.92', '1.10'], 500),\n   [5, 15, 14786])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.15'], 100), [1, 0, 165]),\n  ('regression: minimum odds boundary',\n   (['1.52', '1.19', '1.19', '1.25', '1.20', '1.44', '2.15'], 500),\n   [5, 15, 5672]),\n  ('variant scenario 1', (['1.25', '1.25', '1.62', '2.12', '1.25', '1.25'], 1000), [6, 20, 9861]),\n  ('variant scenario 2',\n   (['2.10', '1.19', '1.15', '1.53', '1.25', '1.15', '1.25'], 100),\n   [4, 10, 859])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['1.25', '1.19', '1.25', '2.32', '1.20', '2.77', '1.95'], 500),\n   [6, 20, 16676]),\n  ('variant scenario 1', (['1.19', '2.59', '1.19', '1.25', '1.75', '1.25'], 500), [4, 10, 5465]),\n  ('variant scenario 2', (['1.15', '1.25', '2.35'], 500), [2, 0, 1689])]]\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":"aaee990e96cfb2ad55ce78824f522b869dd80ac1fcef8262b200b6311b71b26b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(prices, stake_cents):\n    TABLE = {3: 5, 4: 10, 5: 15, 6: 20, 7: 25}\n    factor = Fraction(1)\n    q = 0\n    for p in prices:\n        d = Fraction(p)\n        factor *= d\n        if d >= Fraction(120, 100):\n            q += 1\n    pct = TABLE.get(min(q, 7), 0)\n    profit = stake_cents * (factor - 1)\n    return [q, pct, math.floor(stake_cents + profit * (100 + pct) / 100)]\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 treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['2.24', '2.16', '1.94', '1.38', '1.58', '1.20', '1.15'], 1000),\n   [6, 20, 33692]),\n  ('variant scenario 1',\n   (['1.81', '1.20', '1.25', '1.97', '1.84', '2.34', '1.19', '1.20', '1.20'], 500),\n   [8, 25, 24538]),\n  ('variant scenario 2', (['1.20', '1.19', '2.31', '1.60', '1.69'], 100), [4, 10, 971])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.64', '1.20'], 1000), [3, 5, 2533]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.19', '2.50'], 500), [2, 0, 2138]),\n  ('variant scenario 1', (['1.86', '1.45', '1.72', '1.20'], 100), [4, 10, 602]),\n  ('variant scenario 2', (['1.25', '1.25'], 500), [2, 0, 781])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.19', '1.25'], 500), [1, 0, 743]),\n  ('regression: minimum odds boundary',\n   (['1.15', '1.19', '1.15', '1.20', '2.77', '1.15', '1.19'], 100),\n   [2, 0, 715]),\n  ('variant scenario 1', (['1.70', '1.25', '1.25', '1.25', '1.19', '2.01'], 1000), [5, 15, 8983]),\n  ('variant scenario 2',\n   (['1.15', '1.25', '1.19', '1.92', '1.96', '1.25', '2.92', '1.10'], 500),\n   [5, 15, 14786])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary', (['1.25', '1.15', '1.15'], 100), [1, 0, 165]),\n  ('regression: minimum odds boundary',\n   (['1.52', '1.19', '1.19', '1.25', '1.20', '1.44', '2.15'], 500),\n   [5, 15, 5672]),\n  ('variant scenario 1', (['1.25', '1.25', '1.62', '2.12', '1.25', '1.25'], 1000), [6, 20, 9861]),\n  ('variant scenario 2',\n   (['2.10', '1.19', '1.15', '1.53', '1.25', '1.15', '1.25'], 100),\n   [4, 10, 859])],\n [('control treble', (['2.00', '2.00', '2.00'], 100), [3, 5, 835]),\n  ('boundary minimum odds leg', (['1.20', '2.00', '2.00'], 100), [3, 5, 499]),\n  ('boundary short leg does not qualify', (['1.19', '2.00', '2.00'], 100), [2, 0, 476]),\n  ('boundary eight legs capped',\n   (['1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50', '1.50'], 100),\n   [8, 25, 3178]),\n  ('regression: minimum odds boundary',\n   (['1.25', '1.19', '1.25', '2.32', '1.20', '2.77', '1.95'], 500),\n   [6, 20, 16676]),\n  ('variant scenario 1', (['1.19', '2.59', '1.19', '1.25', '1.75', '1.25'], 500), [4, 10, 5465]),\n  ('variant scenario 2', (['1.15', '1.25', '2.35'], 500), [2, 0, 1689])]]\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-accumulator-bonus-minimum-odds-boundary","generated_at":"2026-09-29T14:50:34.450442+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Acca promotions depend on minimum-odds qualification and apply the bonus to winnings.","repair":"Qualify legs priced at 1.20 or more.","root_cause":"The qualification test uses a strict greater-than.","sha256":"da7e5511141f5d154b6ddc9453ee69faf12b2ac36da7b5c81eddb66a0449818c","title":"Leg priced exactly at the minimum odds does not qualify · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.963,"exit_code":1,"observations":[{"actual":[3,5,835],"check":"control treble","expected":[3,5,835],"passed":true},{"actual":[3,5,499],"check":"boundary minimum odds leg","expected":[3,5,499],"passed":true},{"actual":[3,5,494],"check":"boundary short leg does not qualify","expected":[2,0,476],"passed":false},{"actual":[8,25,3178],"check":"boundary eight legs capped","expected":[8,25,3178],"passed":true},{"actual":[7,25,35054],"check":"regression: minimum odds boundary","expected":[6,20,33692],"passed":false},{"actual":[9,25,24538],"check":"variant scenario 1","expected":[8,25,24538],"passed":false},{"actual":[5,15,1010],"check":"variant scenario 2","expected":[4,10,971],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control treble\", \"actual\": [3, 5, 835], \"expected\": [3, 5, 835], \"passed\": true}, {\"check\": \"boundary minimum odds leg\", \"actual\": [3, 5, 499], \"expected\": [3, 5, 499], \"passed\": true}, {\"check\": \"boundary short leg does not qualify\", \"actual\": [3, 5, 494], \"expected\": [2, 0, 476], \"passed\": false}, {\"check\": \"boundary eight legs capped\", \"actual\": [8, 25, 3178], \"expected\": [8, 25, 3178], \"passed\": true}, {\"check\": \"regression: minimum odds boundary\", \"actual\": [7, 25, 35054], \"expected\": [6, 20, 33692], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [9, 25, 24538], \"expected\": [8, 25, 24538], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [5, 15, 1010], \"expected\": [4, 10, 971], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.207,"exit_code":1,"observations":[{"actual":[3,5,835],"check":"control treble","expected":[3,5,835],"passed":true},{"actual":[2,0,480],"check":"boundary minimum odds leg","expected":[3,5,499],"passed":false},{"actual":[2,0,476],"check":"boundary short leg does not qualify","expected":[2,0,476],"passed":true},{"actual":[8,25,3178],"check":"boundary eight legs capped","expected":[8,25,3178],"passed":true},{"actual":[5,15,32330],"check":"regression: minimum odds boundary","expected":[6,20,33692],"passed":false},{"actual":[5,15,22615],"check":"variant scenario 1","expected":[8,25,24538],"passed":false},{"actual":[3,5,931],"check":"variant scenario 2","expected":[4,10,971],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control treble\", \"actual\": [3, 5, 835], \"expected\": [3, 5, 835], \"passed\": true}, {\"check\": \"boundary minimum odds leg\", \"actual\": [2, 0, 480], \"expected\": [3, 5, 499], \"passed\": false}, {\"check\": \"boundary short leg does not qualify\", \"actual\": [2, 0, 476], \"expected\": [2, 0, 476], \"passed\": true}, {\"check\": \"boundary eight legs capped\", \"actual\": [8, 25, 3178], \"expected\": [8, 25, 3178], \"passed\": true}, {\"check\": \"regression: minimum odds boundary\", \"actual\": [5, 15, 32330], \"expected\": [6, 20, 33692], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [5, 15, 22615], \"expected\": [8, 25, 24538], \"passed\": false}, {\"check\": \"variant scenario 2\", \"actual\": [3, 5, 931], \"expected\": [4, 10, 971], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.653,"exit_code":0,"observations":[{"actual":[3,5,835],"check":"control treble","expected":[3,5,835],"passed":true},{"actual":[3,5,499],"check":"boundary minimum odds leg","expected":[3,5,499],"passed":true},{"actual":[2,0,476],"check":"boundary short leg does not qualify","expected":[2,0,476],"passed":true},{"actual":[8,25,3178],"check":"boundary eight legs capped","expected":[8,25,3178],"passed":true},{"actual":[6,20,33692],"check":"regression: minimum odds boundary","expected":[6,20,33692],"passed":true},{"actual":[8,25,24538],"check":"variant scenario 1","expected":[8,25,24538],"passed":true},{"actual":[4,10,971],"check":"variant scenario 2","expected":[4,10,971],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control treble\", \"actual\": [3, 5, 835], \"expected\": [3, 5, 835], \"passed\": true}, {\"check\": \"boundary minimum odds leg\", \"actual\": [3, 5, 499], \"expected\": [3, 5, 499], \"passed\": true}, {\"check\": \"boundary short leg does not qualify\", \"actual\": [2, 0, 476], \"expected\": [2, 0, 476], \"passed\": true}, {\"check\": \"boundary eight legs capped\", \"actual\": [8, 25, 3178], \"expected\": [8, 25, 3178], \"passed\": true}, {\"check\": \"regression: minimum odds boundary\", \"actual\": [6, 20, 33692], \"expected\": [6, 20, 33692], \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [8, 25, 24538], \"expected\": [8, 25, 24538], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [4, 10, 971], \"expected\": [4, 10, 971], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}