{"abstract":"\"5/0\" raises a division error and \"0/1\" is priced at 1.00.","category":"Betting odds conversion","checks":11,"contract":"Parse traditional fractional odds text, case-insensitively: \"a/b\" or \"a-b\" with positive integers, \"evens\"/\"evs\"/\"even\" for 1/1, and an optional trailing \" on\" meaning odds-on (the fraction is inverted, \"2/1 on\" = 1/2). Zero parts or anything else return \"invalid\". Return [decimal price rounded half up to two decimals, reduced profit fraction \"a/b\"].","evaluation_group":"w2-odds-conversion-fractional-odds-parser","failed_approach":"Guarding only the denominator still accepts a zero-profit \"0/1\" price.","family":"w2-odds-conversion-fractional-odds-parser-zero-part-guard","id":"FA-84401","implementations":{"attempt":{"sha256":"2b7019834c475bc88e1d4cdd3033d1682de6f32bae984ab11a73aec9d3afa9a0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(text):\n    t = text.strip().lower()\n    on = t.endswith(' on')\n    if on:\n        t = t[:-3].strip()\n    if t in ('evens', 'evs', 'even'):\n        frac = Fraction(1)\n    else:\n        for sep in ('/', '-'):\n            if sep in t:\n                a, _, b = t.partition(sep)\n                break\n        else:\n            return 'invalid'\n        if not a.isdigit() or not b.isdigit() or int(b) == 0:\n            return 'invalid'\n        frac = Fraction(int(a), int(b))\n    if on:\n        frac = 1 / frac\n    dec = 1 + frac\n    cents = math.floor(dec * 100 + Fraction(1, 2))\n    return ['%d.%02d' % (cents // 100, cents % 100), '%d/%d' % (frac.numerator, frac.denominator)]\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 five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('9-11',), ['1.82', '9/11']),\n  ('variant scenario 2', ('18/4',), ['5.50', '9/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('2/1 on',), ['1.50', '1/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('12/6',), ['3.00', '2/1']),\n  ('variant scenario 2', ('12-1',), ['13.00', '12/1'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('3-2',), ['2.50', '3/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('6/3',), ['3.00', '2/1']),\n  ('variant scenario 2', ('13/5',), ['3.60', '13/5'])]]\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":"0ef8c3a33a0a527ec008e51f766b574eb4e7a143c544a8aad9218e4eed13239a","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(text):\n    t = text.strip().lower()\n    on = t.endswith(' on')\n    if on:\n        t = t[:-3].strip()\n    if t in ('evens', 'evs', 'even'):\n        frac = Fraction(1)\n    else:\n        for sep in ('/', '-'):\n            if sep in t:\n                a, _, b = t.partition(sep)\n                break\n        else:\n            return 'invalid'\n        if not a.isdigit() or not b.isdigit():\n            return 'invalid'\n        frac = Fraction(int(a), int(b))\n    if on:\n        frac = 1 / frac\n    dec = 1 + frac\n    cents = math.floor(dec * 100 + Fraction(1, 2))\n    return ['%d.%02d' % (cents // 100, cents % 100), '%d/%d' % (frac.numerator, frac.denominator)]\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 five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('9-11',), ['1.82', '9/11']),\n  ('variant scenario 2', ('18/4',), ['5.50', '9/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('2/1 on',), ['1.50', '1/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('12/6',), ['3.00', '2/1']),\n  ('variant scenario 2', ('12-1',), ['13.00', '12/1'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('3-2',), ['2.50', '3/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('6/3',), ['3.00', '2/1']),\n  ('variant scenario 2', ('13/5',), ['3.60', '13/5'])]]\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":"d77132b3aa21cae9e4ab73d680c5a5c94f92266c2142854edf14f4669901a9af","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom fractions import Fraction\nimport math\nN = 1\nobservations = []\ndef solve(text):\n    t = text.strip().lower()\n    on = t.endswith(' on')\n    if on:\n        t = t[:-3].strip()\n    if t in ('evens', 'evs', 'even'):\n        frac = Fraction(1)\n    else:\n        for sep in ('/', '-'):\n            if sep in t:\n                a, _, b = t.partition(sep)\n                break\n        else:\n            return 'invalid'\n        if not a.isdigit() or not b.isdigit() or int(b) == 0 or int(a) == 0:\n            return 'invalid'\n        frac = Fraction(int(a), int(b))\n    if on:\n        frac = 1 / frac\n    dec = 1 + frac\n    cents = math.floor(dec * 100 + Fraction(1, 2))\n    return ['%d.%02d' % (cents // 100, cents % 100), '%d/%d' % (frac.numerator, frac.denominator)]\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 five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('9-11',), ['1.82', '9/11']),\n  ('variant scenario 2', ('18/4',), ['5.50', '9/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('2/1 on',), ['1.50', '1/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('12/6',), ['3.00', '2/1']),\n  ('variant scenario 2', ('12-1',), ['13.00', '12/1'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('evens',), ['2.00', '1/1']),\n  ('variant scenario 2', ('3-2',), ['2.50', '3/2'])],\n [('control five to two', ('5/2',), ['3.50', '5/2']),\n  ('control hyphen separator', ('11-4',), ['3.75', '11/4']),\n  ('boundary evens alias', ('EVS',), ['2.00', '1/1']),\n  ('boundary odds-on suffix', ('2/1 on',), ['1.50', '1/2']),\n  ('boundary unreduced input', ('4/6',), ['1.67', '2/3']),\n  ('boundary zero denominator', ('5/0',), 'invalid'),\n  ('control half-up rounding', ('1/8',), ['1.13', '1/8']),\n  ('regression: zero part guard', ('5/0',), 'invalid'),\n  ('regression: zero part guard', ('0/1',), 'invalid'),\n  ('variant scenario 1', ('6/3',), ['3.00', '2/1']),\n  ('variant scenario 2', ('13/5',), ['3.60', '13/5'])]]\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-fractional-odds-parser-zero-part-guard","generated_at":"2026-09-29T14:50:30.524581+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Racing feeds and manual price entry use traditional fractional notation with odds-on suffixes.","repair":"Reject zero numerators and denominators.","root_cause":"The parser does not reject zero parts.","sha256":"a6c74f4a94a85344750dbb688a37ba92f2176ba06527e0349945b52058fe7fe9","title":"Zero numerator or denominator accepted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":45.131,"exit_code":1,"observations":[{"actual":["3.50","5/2"],"check":"control five to two","expected":["3.50","5/2"],"passed":true},{"actual":["3.75","11/4"],"check":"control hyphen separator","expected":["3.75","11/4"],"passed":true},{"actual":["2.00","1/1"],"check":"boundary evens alias","expected":["2.00","1/1"],"passed":true},{"actual":["1.50","1/2"],"check":"boundary odds-on suffix","expected":["1.50","1/2"],"passed":true},{"actual":["1.67","2/3"],"check":"boundary unreduced input","expected":["1.67","2/3"],"passed":true},{"actual":"invalid","check":"boundary zero denominator","expected":"invalid","passed":true},{"actual":["1.13","1/8"],"check":"control half-up rounding","expected":["1.13","1/8"],"passed":true},{"actual":"invalid","check":"regression: zero part guard","expected":"invalid","passed":true},{"actual":["1.00","0/1"],"check":"regression: zero part guard","expected":"invalid","passed":false},{"actual":["1.82","9/11"],"check":"variant scenario 1","expected":["1.82","9/11"],"passed":true},{"actual":["5.50","9/2"],"check":"variant scenario 2","expected":["5.50","9/2"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control five to two\", \"actual\": [\"3.50\", \"5/2\"], \"expected\": [\"3.50\", \"5/2\"], \"passed\": true}, {\"check\": \"control hyphen separator\", \"actual\": [\"3.75\", \"11/4\"], \"expected\": [\"3.75\", \"11/4\"], \"passed\": true}, {\"check\": \"boundary evens alias\", \"actual\": [\"2.00\", \"1/1\"], \"expected\": [\"2.00\", \"1/1\"], \"passed\": true}, {\"check\": \"boundary odds-on suffix\", \"actual\": [\"1.50\", \"1/2\"], \"expected\": [\"1.50\", \"1/2\"], \"passed\": true}, {\"check\": \"boundary unreduced input\", \"actual\": [\"1.67\", \"2/3\"], \"expected\": [\"1.67\", \"2/3\"], \"passed\": true}, {\"check\": \"boundary zero denominator\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control half-up rounding\", \"actual\": [\"1.13\", \"1/8\"], \"expected\": [\"1.13\", \"1/8\"], \"passed\": true}, {\"check\": \"regression: zero part guard\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: zero part guard\", \"actual\": [\"1.00\", \"0/1\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"1.82\", \"9/11\"], \"expected\": [\"1.82\", \"9/11\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"5.50\", \"9/2\"], \"expected\": [\"5.50\", \"9/2\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.237,"exit_code":1,"observations":[{"actual":["3.50","5/2"],"check":"control five to two","expected":["3.50","5/2"],"passed":true},{"actual":["3.75","11/4"],"check":"control hyphen separator","expected":["3.75","11/4"],"passed":true},{"actual":["2.00","1/1"],"check":"boundary evens alias","expected":["2.00","1/1"],"passed":true},{"actual":["1.50","1/2"],"check":"boundary odds-on suffix","expected":["1.50","1/2"],"passed":true},{"actual":["1.67","2/3"],"check":"boundary unreduced input","expected":["1.67","2/3"],"passed":true},{"actual":"raised ZeroDivisionError","check":"boundary zero denominator","expected":"invalid","passed":false},{"actual":["1.13","1/8"],"check":"control half-up rounding","expected":["1.13","1/8"],"passed":true},{"actual":"raised ZeroDivisionError","check":"regression: zero part guard","expected":"invalid","passed":false},{"actual":["1.00","0/1"],"check":"regression: zero part guard","expected":"invalid","passed":false},{"actual":["1.82","9/11"],"check":"variant scenario 1","expected":["1.82","9/11"],"passed":true},{"actual":["5.50","9/2"],"check":"variant scenario 2","expected":["5.50","9/2"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control five to two\", \"actual\": [\"3.50\", \"5/2\"], \"expected\": [\"3.50\", \"5/2\"], \"passed\": true}, {\"check\": \"control hyphen separator\", \"actual\": [\"3.75\", \"11/4\"], \"expected\": [\"3.75\", \"11/4\"], \"passed\": true}, {\"check\": \"boundary evens alias\", \"actual\": [\"2.00\", \"1/1\"], \"expected\": [\"2.00\", \"1/1\"], \"passed\": true}, {\"check\": \"boundary odds-on suffix\", \"actual\": [\"1.50\", \"1/2\"], \"expected\": [\"1.50\", \"1/2\"], \"passed\": true}, {\"check\": \"boundary unreduced input\", \"actual\": [\"1.67\", \"2/3\"], \"expected\": [\"1.67\", \"2/3\"], \"passed\": true}, {\"check\": \"boundary zero denominator\", \"actual\": \"raised ZeroDivisionError\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"control half-up rounding\", \"actual\": [\"1.13\", \"1/8\"], \"expected\": [\"1.13\", \"1/8\"], \"passed\": true}, {\"check\": \"regression: zero part guard\", \"actual\": \"raised ZeroDivisionError\", \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"regression: zero part guard\", \"actual\": [\"1.00\", \"0/1\"], \"expected\": \"invalid\", \"passed\": false}, {\"check\": \"variant scenario 1\", \"actual\": [\"1.82\", \"9/11\"], \"expected\": [\"1.82\", \"9/11\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"5.50\", \"9/2\"], \"expected\": [\"5.50\", \"9/2\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.001,"exit_code":0,"observations":[{"actual":["3.50","5/2"],"check":"control five to two","expected":["3.50","5/2"],"passed":true},{"actual":["3.75","11/4"],"check":"control hyphen separator","expected":["3.75","11/4"],"passed":true},{"actual":["2.00","1/1"],"check":"boundary evens alias","expected":["2.00","1/1"],"passed":true},{"actual":["1.50","1/2"],"check":"boundary odds-on suffix","expected":["1.50","1/2"],"passed":true},{"actual":["1.67","2/3"],"check":"boundary unreduced input","expected":["1.67","2/3"],"passed":true},{"actual":"invalid","check":"boundary zero denominator","expected":"invalid","passed":true},{"actual":["1.13","1/8"],"check":"control half-up rounding","expected":["1.13","1/8"],"passed":true},{"actual":"invalid","check":"regression: zero part guard","expected":"invalid","passed":true},{"actual":"invalid","check":"regression: zero part guard","expected":"invalid","passed":true},{"actual":["1.82","9/11"],"check":"variant scenario 1","expected":["1.82","9/11"],"passed":true},{"actual":["5.50","9/2"],"check":"variant scenario 2","expected":["5.50","9/2"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"control five to two\", \"actual\": [\"3.50\", \"5/2\"], \"expected\": [\"3.50\", \"5/2\"], \"passed\": true}, {\"check\": \"control hyphen separator\", \"actual\": [\"3.75\", \"11/4\"], \"expected\": [\"3.75\", \"11/4\"], \"passed\": true}, {\"check\": \"boundary evens alias\", \"actual\": [\"2.00\", \"1/1\"], \"expected\": [\"2.00\", \"1/1\"], \"passed\": true}, {\"check\": \"boundary odds-on suffix\", \"actual\": [\"1.50\", \"1/2\"], \"expected\": [\"1.50\", \"1/2\"], \"passed\": true}, {\"check\": \"boundary unreduced input\", \"actual\": [\"1.67\", \"2/3\"], \"expected\": [\"1.67\", \"2/3\"], \"passed\": true}, {\"check\": \"boundary zero denominator\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"control half-up rounding\", \"actual\": [\"1.13\", \"1/8\"], \"expected\": [\"1.13\", \"1/8\"], \"passed\": true}, {\"check\": \"regression: zero part guard\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"regression: zero part guard\", \"actual\": \"invalid\", \"expected\": \"invalid\", \"passed\": true}, {\"check\": \"variant scenario 1\", \"actual\": [\"1.82\", \"9/11\"], \"expected\": [\"1.82\", \"9/11\"], \"passed\": true}, {\"check\": \"variant scenario 2\", \"actual\": [\"5.50\", \"9/2\"], \"expected\": [\"5.50\", \"9/2\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}