{"abstract":"A winner nobody backed raises a division error or pays 0.00.","category":"Betting odds conversion","checks":8,"contract":"Pari-mutuel win dividend per unit stake. The net pool is pool * (100 - takeout_pct) / 100; with a dead heat it is split equally among the winning runners. Each runner's dividend is its share divided by the stakes on it, broken down to the 10-cent step below (breakage), with a minimum of 1.10. A winner with no stakes gets None. Return dividends as \"D.D0\" strings in winners order.","contract_signature":"pool_cents, takeout_pct, winners","evaluation_group":"w2-odds-conversion-tote-win-dividend","failed_approach":"Returning \"0.00\" suggests a paid dividend of zero.","family":"w2-odds-conversion-tote-win-dividend-unbacked-winner","id":"FA-84731","implementations":{"attempt":{"sha256":"b4f93f9202ff7b4c2f56cdc5e701411745f360ed3e02d7d9089ccc8571afc45c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(pool_cents, takeout_pct, winners):\n    net = Fraction(pool_cents) * (100 - Fraction(takeout_pct)) / 100\n    share = net / len(winners)\n    out = []\n    for s in winners:\n        if s == 0:\n            out.append('0.00')\n            continue\n        dimes = math.floor(share / s * 10)\n        dimes = max(dimes, 11)\n        out.append('%d.%d0' % (dimes // 10, dimes % 10))\n    return out\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 single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (250000, '0', [0]), [None]),\n  ('variant scenario 1', (100000, '16', [46029]), ['1.80']),\n  ('variant scenario 2', (50000, '0', [19014, 1025, 3517]), ['1.10', '16.20', '4.70'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (250000, '20', [41766, 0, 146516]), ['1.50', None, '1.10']),\n  ('variant scenario 1', (20000, '16', [8054]), ['2.00']),\n  ('variant scenario 2', (1234500, '20', [948216, 357944, 406471]), ['1.10', '1.10', '1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (20000, '16', [0]), [None]),\n  ('variant scenario 1', (20000, '15', [15831, 15772]), ['1.10', '1.10']),\n  ('variant scenario 2', (20000, '16', [19210]), ['1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (20000, '15', [0]), [None]),\n  ('variant scenario 1', (50000, '16', [40000]), ['1.10']),\n  ('variant scenario 2', (100000, '16', [1500, 50366]), ['28.00', '1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (1234500, '0', [636655, 0, 10000]), ['1.10', None, '41.10']),\n  ('variant scenario 1', (50000, '0', [27761]), ['1.80']),\n  ('variant scenario 2', (20000, '20', [5443, 16144]), ['1.40', '1.10'])]]\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":"1cb656a93a13356946341780d5f893d69f524677f5e46b5714a2a89cd28ea5de","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(pool_cents, takeout_pct, winners):\n    net = Fraction(pool_cents) * (100 - Fraction(takeout_pct)) / 100\n    share = net / len(winners)\n    out = []\n    for s in winners:\n        dimes = math.floor(share / s * 10)\n        dimes = max(dimes, 11)\n        out.append('%d.%d0' % (dimes // 10, dimes % 10))\n    return out\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 single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (250000, '0', [0]), [None]),\n  ('variant scenario 1', (100000, '16', [46029]), ['1.80']),\n  ('variant scenario 2', (50000, '0', [19014, 1025, 3517]), ['1.10', '16.20', '4.70'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (250000, '20', [41766, 0, 146516]), ['1.50', None, '1.10']),\n  ('variant scenario 1', (20000, '16', [8054]), ['2.00']),\n  ('variant scenario 2', (1234500, '20', [948216, 357944, 406471]), ['1.10', '1.10', '1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (20000, '16', [0]), [None]),\n  ('variant scenario 1', (20000, '15', [15831, 15772]), ['1.10', '1.10']),\n  ('variant scenario 2', (20000, '16', [19210]), ['1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (20000, '15', [0]), [None]),\n  ('variant scenario 1', (50000, '16', [40000]), ['1.10']),\n  ('variant scenario 2', (100000, '16', [1500, 50366]), ['28.00', '1.10'])],\n [('control single winner', (100000, '15', [25000]), ['3.40']),\n  ('boundary breakage down', (100000, '16', [30000]), ['2.80']),\n  ('boundary minimum dividend', (100000, '20', [90000]), ['1.10']),\n  ('boundary dead heat split', (100000, '20', [10000, 40000]), ['4.00', '1.10']),\n  ('control unbacked winner', (100000, '15', [0]), [None]),\n  ('regression: unbacked winner', (1234500, '0', [636655, 0, 10000]), ['1.10', None, '41.10']),\n  ('variant scenario 1', (50000, '0', [27761]), ['1.80']),\n  ('variant scenario 2', (20000, '20', [5443, 16144]), ['1.40', '1.10'])]]\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-tote-win-dividend-unbacked-winner","generated_at":"2026-09-29T14:50:33.857768+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Tote operators compute dividends with takeout, breakage and minimum-dividend rules.","root_cause":"There is no guard for zero stakes on a winner.","sha256":"65ad7456963b4baadfb8c97382df01dae2f3b866d84bac6d0fb4d0279afc0597","title":"Winner with no stakes crashes the dividend · 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":42.437,"exit_code":1,"observations":[{"actual":["3.40"],"check":"control single winner","expected":["3.40"],"passed":true},{"actual":["2.80"],"check":"boundary breakage down","expected":["2.80"],"passed":true},{"actual":["1.10"],"check":"boundary minimum dividend","expected":["1.10"],"passed":true},{"actual":["4.00","1.10"],"check":"boundary dead heat split","expected":["4.00","1.10"],"passed":true},{"actual":["0.00"],"check":"control unbacked winner","expected":[null],"passed":false},{"actual":["0.00"],"check":"regression: unbacked winner","expected":[null],"passed":false},{"actual":["1.80"],"check":"variant scenario 1","expected":["1.80"],"passed":true},{"actual":["1.10","16.20","4.70"],"check":"variant scenario 2","expected":["1.10","16.20","4.70"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single winner\", \"actual\": [\"3.40\"], \"expected\": [\"3.40\"], \"passed\": true}, {\"check\": \"boundary breakage down\", \"actual\": [\"2.80\"], \"expected\": [\"2.80\"], \"passed\": true}, {\"check\": \"boundary minimum dividend\", \"actual\": [\"1.10\"], \"expected\": [\"1.10\"], \"passed\": true}, {\"check\": \"boundary dead heat split\", \"actual\": [\"4.00\", \"1.10\"], \"expected\": [\"4.00\", \"1.10\"], \"passed\": true}, {\"check\": \"control unbacked winner\", \"actual\": [\"0.00\"], \"expected\": [null], \"passed\": false}, {\"check\": \"regression: unbacked winner\", \"actual\": [\"0.00\"], \"expected\": [null], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"1.80\"], \"expected\": [\"1.80\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"1.10\", \"16.20\", \"4.70\"], \"expected\": [\"1.10\", \"16.20\", \"4.70\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.788,"exit_code":1,"observations":[{"actual":["3.40"],"check":"control single winner","expected":["3.40"],"passed":true},{"actual":["2.80"],"check":"boundary breakage down","expected":["2.80"],"passed":true},{"actual":["1.10"],"check":"boundary minimum dividend","expected":["1.10"],"passed":true},{"actual":["4.00","1.10"],"check":"boundary dead heat split","expected":["4.00","1.10"],"passed":true},{"actual":"raised ZeroDivisionError","check":"control unbacked winner","expected":[null],"passed":false},{"actual":"raised ZeroDivisionError","check":"regression: unbacked winner","expected":[null],"passed":false},{"actual":["1.80"],"check":"variant scenario 1","expected":["1.80"],"passed":true},{"actual":["1.10","16.20","4.70"],"check":"variant scenario 2","expected":["1.10","16.20","4.70"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control single winner\", \"actual\": [\"3.40\"], \"expected\": [\"3.40\"], \"passed\": true}, {\"check\": \"boundary breakage down\", \"actual\": [\"2.80\"], \"expected\": [\"2.80\"], \"passed\": true}, {\"check\": \"boundary minimum dividend\", \"actual\": [\"1.10\"], \"expected\": [\"1.10\"], \"passed\": true}, {\"check\": \"boundary dead heat split\", \"actual\": [\"4.00\", \"1.10\"], \"expected\": [\"4.00\", \"1.10\"], \"passed\": true}, {\"check\": \"control unbacked winner\", \"actual\": \"raised ZeroDivisionError\", \"expected\": [null], \"passed\": false}, {\"check\": \"regression: unbacked winner\", \"actual\": \"raised ZeroDivisionError\", \"expected\": [null], \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"1.80\"], \"expected\": [\"1.80\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"1.10\", \"16.20\", \"4.70\"], \"expected\": [\"1.10\", \"16.20\", \"4.70\"], \"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."}}