{"abstract":"A \"+50\" or \"-99\" line is expanded instead of rejected.","category":"Betting odds conversion","checks":10,"contract":"Expand an American moneyline (\"+150\", \"150\" or \"-200\"; magnitude at least 100, otherwise \"invalid\"). Profit per unit is N/100 for positive or unsigned lines and 100/N for negative lines. Return [decimal price with two decimals, reduced fractional profit \"a/b\", implied probability percent with one decimal], all computed exactly and rounded half up.","evaluation_group":"w2-odds-conversion-american-moneyline-expansion","failed_approach":"Checking the minimum only for positive lines still accepts \"-99\".","family":"w2-odds-conversion-american-moneyline-expansion-magnitude-minimum","id":"FA-84371","implementations":{"attempt":{"sha256":"31a1b4228505199efec473657545286cae3c6e821e38708765d14eb54d0382cb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(american):\n    s = american.strip()\n    neg = s.startswith('-')\n    n = int(s.lstrip('+-'))\n    if n < 100 and not neg:\n        return 'invalid'\n    profit = Fraction(100, n) if neg else Fraction(n, 100)\n    dec = 1 + profit\n    def fmt(x, places):\n        q = 10 ** places\n        v = math.floor(x * q + Fraction(1, 2))\n        return '%d.%0*d' % (v // q, places, v % q)\n    prob = Fraction(n, n + 100) * 100 if neg else Fraction(100, n + 100) * 100\n    return [fmt(dec, 2), '%d/%d' % (profit.numerator, profit.denominator), fmt(prob, 1)]\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 underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('110',), ['2.10', '11/10', '47.6']),\n  ('variant scenario 2', ('+1135',), ['12.35', '227/20', '8.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-175',), ['1.57', '4/7', '63.6']),\n  ('variant scenario 2', ('846',), ['9.46', '423/50', '10.6'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+655',), ['7.55', '131/20', '13.2']),\n  ('variant scenario 2', ('+800',), ['9.00', '8/1', '11.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+1106',), ['12.06', '553/50', '8.3']),\n  ('variant scenario 2', ('-772',), ['1.13', '25/193', '88.5'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-115',), ['1.87', '20/23', '53.5']),\n  ('variant scenario 2', ('100',), ['2.00', '1/1', '50.0'])]]\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":"e4ce2f9bf302ac4138410c160bf9a8fe19ea49d13a2ae1373c322ce0b3603b85","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(american):\n    s = american.strip()\n    neg = s.startswith('-')\n    n = int(s.lstrip('+-'))\n    if n <= 0:\n        return 'invalid'\n    profit = Fraction(100, n) if neg else Fraction(n, 100)\n    dec = 1 + profit\n    def fmt(x, places):\n        q = 10 ** places\n        v = math.floor(x * q + Fraction(1, 2))\n        return '%d.%0*d' % (v // q, places, v % q)\n    prob = Fraction(n, n + 100) * 100 if neg else Fraction(100, n + 100) * 100\n    return [fmt(dec, 2), '%d/%d' % (profit.numerator, profit.denominator), fmt(prob, 1)]\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 underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('110',), ['2.10', '11/10', '47.6']),\n  ('variant scenario 2', ('+1135',), ['12.35', '227/20', '8.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-175',), ['1.57', '4/7', '63.6']),\n  ('variant scenario 2', ('846',), ['9.46', '423/50', '10.6'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+655',), ['7.55', '131/20', '13.2']),\n  ('variant scenario 2', ('+800',), ['9.00', '8/1', '11.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+1106',), ['12.06', '553/50', '8.3']),\n  ('variant scenario 2', ('-772',), ['1.13', '25/193', '88.5'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-115',), ['1.87', '20/23', '53.5']),\n  ('variant scenario 2', ('100',), ['2.00', '1/1', '50.0'])]]\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":"6eb3e9f332a76eb3ba39b58cd279d6594bb44c7d7938c77aa364b6d21df18841","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(american):\n    s = american.strip()\n    neg = s.startswith('-')\n    n = int(s.lstrip('+-'))\n    if n < 100:\n        return 'invalid'\n    profit = Fraction(100, n) if neg else Fraction(n, 100)\n    dec = 1 + profit\n    def fmt(x, places):\n        q = 10 ** places\n        v = math.floor(x * q + Fraction(1, 2))\n        return '%d.%0*d' % (v // q, places, v % q)\n    prob = Fraction(n, n + 100) * 100 if neg else Fraction(100, n + 100) * 100\n    return [fmt(dec, 2), '%d/%d' % (profit.numerator, profit.denominator), fmt(prob, 1)]\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 underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('110',), ['2.10', '11/10', '47.6']),\n  ('variant scenario 2', ('+1135',), ['12.35', '227/20', '8.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-175',), ['1.57', '4/7', '63.6']),\n  ('variant scenario 2', ('846',), ['9.46', '423/50', '10.6'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+655',), ['7.55', '131/20', '13.2']),\n  ('variant scenario 2', ('+800',), ['9.00', '8/1', '11.1'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('+1106',), ['12.06', '553/50', '8.3']),\n  ('variant scenario 2', ('-772',), ['1.13', '25/193', '88.5'])],\n [('control underdog', ('+150',), ['2.50', '3/2', '40.0']),\n  ('control favourite', ('-200',), ['1.50', '1/2', '66.7']),\n  ('boundary even money', ('+100',), ['2.00', '1/1', '50.0']),\n  ('boundary unsigned line', ('250',), ['3.50', '5/2', '28.6']),\n  ('boundary below minimum', ('+50',), 'invalid'),\n  ('control half-up decimal', ('-800',), ['1.13', '1/8', '88.9']),\n  ('regression: magnitude minimum', ('+50',), 'invalid'),\n  ('regression: magnitude minimum', ('-99',), 'invalid'),\n  ('variant scenario 1', ('-115',), ['1.87', '20/23', '53.5']),\n  ('variant scenario 2', ('100',), ['2.00', '1/1', '50.0'])]]\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-american-moneyline-expansion-magnitude-minimum","generated_at":"2026-09-29T14:50:30.357662+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Odds screens show American, decimal, fractional and implied-probability columns for one price.","repair":"Reject magnitudes below 100 for both signs.","root_cause":"The guard only rejects non-positive magnitudes.","sha256":"f32c4c2302d1196933f5ed5cf2bfed22adede4375ee82fdbdb81fa6531bd44ee","title":"Moneylines below 100 accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":42.508,"exit_code":1,"observations":[{"actual":["2.50","3/2","40.0"],"check":"control underdog","expected":["2.50","3/2","40.0"],"passed":true},{"actual":["1.50","1/2","66.7"],"check":"control favourite","expected":["1.50","1/2","66.7"],"passed":true},{"actual":["2.00","1/1","50.0"],"check":"boundary even money","expected":["2.00","1/1","50.0"],"passed":true},{"actual":["3.50","5/2","28.6"],"check":"boundary unsigned line","expected":["3.50","5/2","28.6"],"passed":true},{"actual":"invalid","check":"boundary below minimum","expected":"invalid","passed":true},{"actual":["1.13","1/8","88.9"],"check":"control half-up decimal","expected":["1.13","1/8","88.9"],"passed":true},{"actual":"invalid","check":"regression: magnitude minimum","expected":"invalid","passed":true},{"actual":["2.01","100/99","49.7"],"check":"regression: magnitude minimum","expected":"invalid","passed":false},{"actual":["2.10","11/10","47.6"],"check":"variant scenario 1","expected":["2.10","11/10","47.6"],"passed":true},{"actual":["12.35","227/20","8.1"],"check":"variant scenario 2","expected":["12.35","227/20","8.1"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control underdog\", \"actual\": [\"2.50\", \"3/2\", \"40.0\"], \"expected\": [\"2.50\", \"3/2\", \"40.0\"], \"passed\": true}, {\"check\": \"control favourite\", \"actual\": [\"1.50\", \"1/2\", \"66.7\"], \"expected\": [\"1.50\", \"1/2\", \"66.7\"], \"passed\": true}, {\"check\": \"boundary even money\", \"actual\": [\"2.00\", \"1/1\", \"50.0\"], \"expected\": [\"2.00\", \"1/1\", \"50.0\"], \"passed\": true}, {\"check\": \"boundary unsigned line\", \"actual\": [\"3.50\", \"5/2\", \"28.6\"], \"expected\": [\"3.50\", \"5/2\", \"28.6\"], \"passed\": true}, {\"check\": \"boundary below minimum\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control half-up decimal\", \"actual\": [\"1.13\", \"1/8\", \"88.9\"], \"expected\": [\"1.13\", \"1/8\", \"88.9\"], \"passed\": true}, {\"check\": \"regression: magnitude minimum\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: magnitude minimum\", \"actual\": [\"2.01\", \"100/99\", \"49.7\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"2.10\", \"11/10\", \"47.6\"], \"expected\": [\"2.10\", \"11/10\", \"47.6\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"12.35\", \"227/20\", \"8.1\"], \"expected\": [\"12.35\", \"227/20\", \"8.1\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.481,"exit_code":1,"observations":[{"actual":["2.50","3/2","40.0"],"check":"control underdog","expected":["2.50","3/2","40.0"],"passed":true},{"actual":["1.50","1/2","66.7"],"check":"control favourite","expected":["1.50","1/2","66.7"],"passed":true},{"actual":["2.00","1/1","50.0"],"check":"boundary even money","expected":["2.00","1/1","50.0"],"passed":true},{"actual":["3.50","5/2","28.6"],"check":"boundary unsigned line","expected":["3.50","5/2","28.6"],"passed":true},{"actual":["1.50","1/2","66.7"],"check":"boundary below minimum","expected":"invalid","passed":false},{"actual":["1.13","1/8","88.9"],"check":"control half-up decimal","expected":["1.13","1/8","88.9"],"passed":true},{"actual":["1.50","1/2","66.7"],"check":"regression: magnitude minimum","expected":"invalid","passed":false},{"actual":["2.01","100/99","49.7"],"check":"regression: magnitude minimum","expected":"invalid","passed":false},{"actual":["2.10","11/10","47.6"],"check":"variant scenario 1","expected":["2.10","11/10","47.6"],"passed":true},{"actual":["12.35","227/20","8.1"],"check":"variant scenario 2","expected":["12.35","227/20","8.1"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control underdog\", \"actual\": [\"2.50\", \"3/2\", \"40.0\"], \"expected\": [\"2.50\", \"3/2\", \"40.0\"], \"passed\": true}, {\"check\": \"control favourite\", \"actual\": [\"1.50\", \"1/2\", \"66.7\"], \"expected\": [\"1.50\", \"1/2\", \"66.7\"], \"passed\": true}, {\"check\": \"boundary even money\", \"actual\": [\"2.00\", \"1/1\", \"50.0\"], \"expected\": [\"2.00\", \"1/1\", \"50.0\"], \"passed\": true}, {\"check\": \"boundary unsigned line\", \"actual\": [\"3.50\", \"5/2\", \"28.6\"], \"expected\": [\"3.50\", \"5/2\", \"28.6\"], \"passed\": true}, {\"check\": \"boundary below minimum\", \"actual\": [\"1.50\", \"1/2\", \"66.7\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"control half-up decimal\", \"actual\": [\"1.13\", \"1/8\", \"88.9\"], \"expected\": [\"1.13\", \"1/8\", \"88.9\"], \"passed\": true}, {\"check\": \"regression: magnitude minimum\", \"actual\": [\"1.50\", \"1/2\", \"66.7\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"regression: magnitude minimum\", \"actual\": [\"2.01\", \"100/99\", \"49.7\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"2.10\", \"11/10\", \"47.6\"], \"expected\": [\"2.10\", \"11/10\", \"47.6\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"12.35\", \"227/20\", \"8.1\"], \"expected\": [\"12.35\", \"227/20\", \"8.1\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":43.218,"exit_code":0,"observations":[{"actual":["2.50","3/2","40.0"],"check":"control underdog","expected":["2.50","3/2","40.0"],"passed":true},{"actual":["1.50","1/2","66.7"],"check":"control favourite","expected":["1.50","1/2","66.7"],"passed":true},{"actual":["2.00","1/1","50.0"],"check":"boundary even money","expected":["2.00","1/1","50.0"],"passed":true},{"actual":["3.50","5/2","28.6"],"check":"boundary unsigned line","expected":["3.50","5/2","28.6"],"passed":true},{"actual":"invalid","check":"boundary below minimum","expected":"invalid","passed":true},{"actual":["1.13","1/8","88.9"],"check":"control half-up decimal","expected":["1.13","1/8","88.9"],"passed":true},{"actual":"invalid","check":"regression: magnitude minimum","expected":"invalid","passed":true},{"actual":"invalid","check":"regression: magnitude minimum","expected":"invalid","passed":true},{"actual":["2.10","11/10","47.6"],"check":"variant scenario 1","expected":["2.10","11/10","47.6"],"passed":true},{"actual":["12.35","227/20","8.1"],"check":"variant scenario 2","expected":["12.35","227/20","8.1"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control underdog\", \"actual\": [\"2.50\", \"3/2\", \"40.0\"], \"expected\": [\"2.50\", \"3/2\", \"40.0\"], \"passed\": true}, {\"check\": \"control favourite\", \"actual\": [\"1.50\", \"1/2\", \"66.7\"], \"expected\": [\"1.50\", \"1/2\", \"66.7\"], \"passed\": true}, {\"check\": \"boundary even money\", \"actual\": [\"2.00\", \"1/1\", \"50.0\"], \"expected\": [\"2.00\", \"1/1\", \"50.0\"], \"passed\": true}, {\"check\": \"boundary unsigned line\", \"actual\": [\"3.50\", \"5/2\", \"28.6\"], \"expected\": [\"3.50\", \"5/2\", \"28.6\"], \"passed\": true}, {\"check\": \"boundary below minimum\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control half-up decimal\", \"actual\": [\"1.13\", \"1/8\", \"88.9\"], \"expected\": [\"1.13\", \"1/8\", \"88.9\"], \"passed\": true}, {\"check\": \"regression: magnitude minimum\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: magnitude minimum\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [\"2.10\", \"11/10\", \"47.6\"], \"expected\": [\"2.10\", \"11/10\", \"47.6\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"12.35\", \"227/20\", \"8.1\"], \"expected\": [\"12.35\", \"227/20\", \"8.1\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}