{"abstract":"The receipt shows a rate that does not reproduce the charged card amount.","category":"Currency rounding and FX conversion","checks":8,"contract":"solve(amount, ref_rate, markup_bps, card_exp): amount in merchant currency, ref_rate cardholder units per merchant unit, markup_bps an integer (negative for a promotional discount). The offered rate is ref*(1+bps/10000) rounded half-up to 6 decimals, and the card amount is amount*offered rounded half-up at card_exp. The disclosed markup percentage is (offered/ref - 1)*100 computed from the rounded offered rate and rounded toward positive infinity to 2 decimals so it never understates. Return [offered, card_amount, markup_pct] as strings.","evaluation_group":"w2-currency_rounding_and_fx_conversion-dynamic-currency-conversion-receipt","failed_approach":"Printing and charging a 4-decimal rate is consistent but not the stipulated 6-decimal rate.","family":"w2-currency_rounding_and_fx_conversion-dynamic-currency-conversion-receipt-offered-rate-rounding-stage","id":"FA-62181","implementations":{"attempt":{"sha256":"57844e0a28ff0841ba1ec81dab82a70545a562fc824a6e3be9f1ea952132f138","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(amount, ref_rate, markup_bps, card_exp):\n    ref = Decimal(ref_rate)\n    raw = ref * (1 + Decimal(markup_bps) / 10000)\n    dcc = raw.quantize(Decimal('0.0001'), rounding=ROUND_HALF_UP)\n    card = (Decimal(amount) * dcc).quantize(Decimal(1).scaleb(-card_exp), rounding=ROUND_HALF_UP)\n    pct = ((dcc / ref - 1) * 100).quantize(Decimal('0.01'), rounding=ROUND_CEILING)\n    return [format(dcc, 'f'), format(card, 'f'), format(pct, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression offered-rate-rounding-stage 1', ('3786.84', '0.8838869', 0, 3), ['0.883887', '3347.139', '0.01']),\n  ('regression offered-rate-rounding-stage 2', ('4785.79', '0.3571554', 275, 3), ['0.366977', '1756.275', '2.75']),\n  ('partial repair guard 1', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('partial repair guard 2', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00'])],\n [('regression offered-rate-rounding-stage 1', ('2828.89', '177.96716', 300, 2), ['183.306175', '518553.01', '3.01']),\n  ('regression offered-rate-rounding-stage 2', ('2562.31', '84.27230', -50, 3), ['83.850939', '214852.100', '-0.49']),\n  ('partial repair guard 1', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('partial repair guard 2', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51'])],\n [('regression offered-rate-rounding-stage 1', ('4714.25', '1.339649', 150, 3), ['1.359744', '6410.173', '1.51']),\n  ('regression offered-rate-rounding-stage 2', ('4302.97', '76.37837', -75, 3), ['75.805532', '326188.930', '-0.75']),\n  ('partial repair guard 1', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('partial repair guard 2', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])],\n [('regression offered-rate-rounding-stage 1', ('3179.28', '171.61510', 350, 3), ['177.621629', '564708.893', '3.51']),\n  ('regression offered-rate-rounding-stage 2', ('1646.82', '0.4182731', 275, 3), ['0.429776', '707.764', '2.76']),\n  ('partial repair guard 1', ('3353.43', '37.36650', 275, 0), ['38.394079', '128752', '2.76']),\n  ('partial repair guard 2', ('1171.26', '0.4683115', -50, 3), ['0.465970', '545.772', '-0.49']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00'])],\n [('regression offered-rate-rounding-stage 1', ('3487.14', '1.2723004', 0, 3), ['1.272300', '4436.688', '-0.00']),\n  ('regression offered-rate-rounding-stage 2', ('1594.17', '96.28226', 350, 3), ['99.652139', '158862.450', '3.50']),\n  ('partial repair guard 1', ('3884.23', '183.00464', 350, 0), ['189.409802', '735711', '3.50']),\n  ('partial repair guard 2', ('157.22', '31.44890', 150, 3), ['31.920634', '5018.562', '1.51']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*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":"b93c3343835f7eca3ba25ed5121019164873a5ad98ea96a3536e710d22ec295c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(amount, ref_rate, markup_bps, card_exp):\n    ref = Decimal(ref_rate)\n    raw = ref * (1 + Decimal(markup_bps) / 10000)\n    dcc = raw.quantize(Decimal('0.000001'), rounding=ROUND_HALF_UP)\n    card = (Decimal(amount) * raw).quantize(Decimal(1).scaleb(-card_exp), rounding=ROUND_HALF_UP)\n    pct = ((dcc / ref - 1) * 100).quantize(Decimal('0.01'), rounding=ROUND_CEILING)\n    return [format(dcc, 'f'), format(card, 'f'), format(pct, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression offered-rate-rounding-stage 1', ('3786.84', '0.8838869', 0, 3), ['0.883887', '3347.139', '0.01']),\n  ('regression offered-rate-rounding-stage 2', ('4785.79', '0.3571554', 275, 3), ['0.366977', '1756.275', '2.75']),\n  ('partial repair guard 1', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('partial repair guard 2', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00'])],\n [('regression offered-rate-rounding-stage 1', ('2828.89', '177.96716', 300, 2), ['183.306175', '518553.01', '3.01']),\n  ('regression offered-rate-rounding-stage 2', ('2562.31', '84.27230', -50, 3), ['83.850939', '214852.100', '-0.49']),\n  ('partial repair guard 1', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('partial repair guard 2', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51'])],\n [('regression offered-rate-rounding-stage 1', ('4714.25', '1.339649', 150, 3), ['1.359744', '6410.173', '1.51']),\n  ('regression offered-rate-rounding-stage 2', ('4302.97', '76.37837', -75, 3), ['75.805532', '326188.930', '-0.75']),\n  ('partial repair guard 1', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('partial repair guard 2', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])],\n [('regression offered-rate-rounding-stage 1', ('3179.28', '171.61510', 350, 3), ['177.621629', '564708.893', '3.51']),\n  ('regression offered-rate-rounding-stage 2', ('1646.82', '0.4182731', 275, 3), ['0.429776', '707.764', '2.76']),\n  ('partial repair guard 1', ('3353.43', '37.36650', 275, 0), ['38.394079', '128752', '2.76']),\n  ('partial repair guard 2', ('1171.26', '0.4683115', -50, 3), ['0.465970', '545.772', '-0.49']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00'])],\n [('regression offered-rate-rounding-stage 1', ('3487.14', '1.2723004', 0, 3), ['1.272300', '4436.688', '-0.00']),\n  ('regression offered-rate-rounding-stage 2', ('1594.17', '96.28226', 350, 3), ['99.652139', '158862.450', '3.50']),\n  ('partial repair guard 1', ('3884.23', '183.00464', 350, 0), ['189.409802', '735711', '3.50']),\n  ('partial repair guard 2', ('157.22', '31.44890', 150, 3), ['31.920634', '5018.562', '1.51']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*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":"11fb0c219266f32043f2ad31fd31e248c9e347431f57bd298e1c626324a14f32","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\nfrom decimal import Decimal, ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_FLOOR, ROUND_CEILING, ROUND_DOWN, ROUND_UP, ROUND_HALF_DOWN\nN = 1\nobservations = []\ndef solve(amount, ref_rate, markup_bps, card_exp):\n    ref = Decimal(ref_rate)\n    raw = ref * (1 + Decimal(markup_bps) / 10000)\n    dcc = raw.quantize(Decimal('0.000001'), rounding=ROUND_HALF_UP)\n    card = (Decimal(amount) * dcc).quantize(Decimal(1).scaleb(-card_exp), rounding=ROUND_HALF_UP)\n    pct = ((dcc / ref - 1) * 100).quantize(Decimal('0.01'), rounding=ROUND_CEILING)\n    return [format(dcc, 'f'), format(card, 'f'), format(pct, 'f')]\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\ncases = [[('regression offered-rate-rounding-stage 1', ('3786.84', '0.8838869', 0, 3), ['0.883887', '3347.139', '0.01']),\n  ('regression offered-rate-rounding-stage 2', ('4785.79', '0.3571554', 275, 3), ['0.366977', '1756.275', '2.75']),\n  ('partial repair guard 1', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('partial repair guard 2', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00'])],\n [('regression offered-rate-rounding-stage 1', ('2828.89', '177.96716', 300, 2), ['183.306175', '518553.01', '3.01']),\n  ('regression offered-rate-rounding-stage 2', ('2562.31', '84.27230', -50, 3), ['83.850939', '214852.100', '-0.49']),\n  ('partial repair guard 1', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('partial repair guard 2', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51'])],\n [('regression offered-rate-rounding-stage 1', ('4714.25', '1.339649', 150, 3), ['1.359744', '6410.173', '1.51']),\n  ('regression offered-rate-rounding-stage 2', ('4302.97', '76.37837', -75, 3), ['75.805532', '326188.930', '-0.75']),\n  ('partial repair guard 1', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('partial repair guard 2', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])],\n [('regression offered-rate-rounding-stage 1', ('3179.28', '171.61510', 350, 3), ['177.621629', '564708.893', '3.51']),\n  ('regression offered-rate-rounding-stage 2', ('1646.82', '0.4182731', 275, 3), ['0.429776', '707.764', '2.76']),\n  ('partial repair guard 1', ('3353.43', '37.36650', 275, 0), ['38.394079', '128752', '2.76']),\n  ('partial repair guard 2', ('1171.26', '0.4683115', -50, 3), ['0.465970', '545.772', '-0.49']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00']),\n  ('control: promotional discount', ('80.00', '0.913377', -50, 2), ['0.908810', '72.70', '-0.50']),\n  ('control: zero markup', ('12.34', '1.2', 0, 2), ['1.200000', '14.81', '0.00']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00'])],\n [('regression offered-rate-rounding-stage 1', ('3487.14', '1.2723004', 0, 3), ['1.272300', '4436.688', '-0.00']),\n  ('regression offered-rate-rounding-stage 2', ('1594.17', '96.28226', 350, 3), ['99.652139', '158862.450', '3.50']),\n  ('partial repair guard 1', ('3884.23', '183.00464', 350, 0), ['189.409802', '735711', '3.50']),\n  ('partial repair guard 2', ('157.22', '31.44890', 150, 3), ['31.920634', '5018.562', '1.51']),\n  ('control: euro to dollar', ('100.00', '1.083471', 300, 2), ['1.115975', '111.60', '3.00']),\n  ('control: yen to dollar', ('5000', '0.00662', 350, 2), ['0.006852', '34.26', '3.51']),\n  ('control: to yen card', ('49.99', '151.3742', 275, 0), ['155.536991', '7775', '2.76']),\n  ('control: dinar card', ('250.00', '0.307133', 400, 3), ['0.319418', '79.855', '4.00'])]]\nfor label, args, expected in cases[N - 1]:\n    check(label, solve(*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":"A deterministic, bounded teaching model with a stipulated toy contract; it makes no claim of conformance to any real regulation, standard, or institution's rules. 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-currency_rounding_and_fx_conversion-dynamic-currency-conversion-receipt-offered-rate-rounding-stage","generated_at":"2026-09-29T14:47:02.148760+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Currency amounts must be rounded at the right stage and in the right unit, or ledgers, quotes and settlements drift by minor units.","repair":"Round the offered rate first and charge amount * rounded rate.","root_cause":"The card amount multiplies by the raw marked-up rate instead of the 6-decimal rate printed on the receipt.","sha256":"ede9987384b9a9a4836428b265e8698ac71fd8098c3cea67eb95fd8907b23780","title":"The card amount is computed from the unrounded offered rate · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.91,"exit_code":1,"observations":[{"actual":["0.8839","3347.188","0.01"],"check":"regression offered-rate-rounding-stage 1","expected":["0.883887","3347.139","0.01"],"passed":false},{"actual":["0.3670","1756.385","2.76"],"check":"regression offered-rate-rounding-stage 2","expected":["0.366977","1756.275","2.75"],"passed":false},{"actual":["1.1160","111.60","3.01"],"check":"partial repair guard 1","expected":["1.115975","111.60","3.00"],"passed":false},{"actual":["0.0069","34.50","4.23"],"check":"partial repair guard 2","expected":["0.006852","34.26","3.51"],"passed":false},{"actual":["155.5370","7775","2.76"],"check":"control: to yen card","expected":["155.536991","7775","2.76"],"passed":false},{"actual":["0.3194","79.850","4.00"],"check":"control: dinar card","expected":["0.319418","79.855","4.00"],"passed":false},{"actual":["0.9088","72.70","-0.50"],"check":"control: promotional discount","expected":["0.908810","72.70","-0.50"],"passed":false},{"actual":["1.2000","14.81","0.00"],"check":"control: zero markup","expected":["1.200000","14.81","0.00"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression offered-rate-rounding-stage 1\", \"actual\": [\"0.8839\", \"3347.188\", \"0.01\"], \"expected\": [\"0.883887\", \"3347.139\", \"0.01\"], \"passed\": false}, {\"check\": \"regression offered-rate-rounding-stage 2\", \"actual\": [\"0.3670\", \"1756.385\", \"2.76\"], \"expected\": [\"0.366977\", \"1756.275\", \"2.75\"], \"passed\": false}, {\"check\": \"partial repair guard 1\", \"actual\": [\"1.1160\", \"111.60\", \"3.01\"], \"expected\": [\"1.115975\", \"111.60\", \"3.00\"], \"passed\": false}, {\"check\": \"partial repair guard 2\", \"actual\": [\"0.0069\", \"34.50\", \"4.23\"], \"expected\": [\"0.006852\", \"34.26\", \"3.51\"], \"passed\": false}, {\"check\": \"control: to yen card\", \"actual\": [\"155.5370\", \"7775\", \"2.76\"], \"expected\": [\"155.536991\", \"7775\", \"2.76\"], \"passed\": false}, {\"check\": \"control: dinar card\", \"actual\": [\"0.3194\", \"79.850\", \"4.00\"], \"expected\": [\"0.319418\", \"79.855\", \"4.00\"], \"passed\": false}, {\"check\": \"control: promotional discount\", \"actual\": [\"0.9088\", \"72.70\", \"-0.50\"], \"expected\": [\"0.908810\", \"72.70\", \"-0.50\"], \"passed\": false}, {\"check\": \"control: zero markup\", \"actual\": [\"1.2000\", \"14.81\", \"0.00\"], \"expected\": [\"1.200000\", \"14.81\", \"0.00\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":45.913,"exit_code":1,"observations":[{"actual":["0.883887","3347.138","0.01"],"check":"regression offered-rate-rounding-stage 1","expected":["0.883887","3347.139","0.01"],"passed":false},{"actual":["0.366977","1756.276","2.75"],"check":"regression offered-rate-rounding-stage 2","expected":["0.366977","1756.275","2.75"],"passed":false},{"actual":["1.115975","111.60","3.00"],"check":"partial repair guard 1","expected":["1.115975","111.60","3.00"],"passed":true},{"actual":["0.006852","34.26","3.51"],"check":"partial repair guard 2","expected":["0.006852","34.26","3.51"],"passed":true},{"actual":["155.536991","7775","2.76"],"check":"control: to yen card","expected":["155.536991","7775","2.76"],"passed":true},{"actual":["0.319418","79.855","4.00"],"check":"control: dinar card","expected":["0.319418","79.855","4.00"],"passed":true},{"actual":["0.908810","72.70","-0.50"],"check":"control: promotional discount","expected":["0.908810","72.70","-0.50"],"passed":true},{"actual":["1.200000","14.81","0.00"],"check":"control: zero markup","expected":["1.200000","14.81","0.00"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression offered-rate-rounding-stage 1\", \"actual\": [\"0.883887\", \"3347.138\", \"0.01\"], \"expected\": [\"0.883887\", \"3347.139\", \"0.01\"], \"passed\": false}, {\"check\": \"regression offered-rate-rounding-stage 2\", \"actual\": [\"0.366977\", \"1756.276\", \"2.75\"], \"expected\": [\"0.366977\", \"1756.275\", \"2.75\"], \"passed\": false}, {\"check\": \"partial repair guard 1\", \"actual\": [\"1.115975\", \"111.60\", \"3.00\"], \"expected\": [\"1.115975\", \"111.60\", \"3.00\"], \"passed\": true}, {\"check\": \"partial repair guard 2\", \"actual\": [\"0.006852\", \"34.26\", \"3.51\"], \"expected\": [\"0.006852\", \"34.26\", \"3.51\"], \"passed\": true}, {\"check\": \"control: to yen card\", \"actual\": [\"155.536991\", \"7775\", \"2.76\"], \"expected\": [\"155.536991\", \"7775\", \"2.76\"], \"passed\": true}, {\"check\": \"control: dinar card\", \"actual\": [\"0.319418\", \"79.855\", \"4.00\"], \"expected\": [\"0.319418\", \"79.855\", \"4.00\"], \"passed\": true}, {\"check\": \"control: promotional discount\", \"actual\": [\"0.908810\", \"72.70\", \"-0.50\"], \"expected\": [\"0.908810\", \"72.70\", \"-0.50\"], \"passed\": true}, {\"check\": \"control: zero markup\", \"actual\": [\"1.200000\", \"14.81\", \"0.00\"], \"expected\": [\"1.200000\", \"14.81\", \"0.00\"], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":46.015,"exit_code":0,"observations":[{"actual":["0.883887","3347.139","0.01"],"check":"regression offered-rate-rounding-stage 1","expected":["0.883887","3347.139","0.01"],"passed":true},{"actual":["0.366977","1756.275","2.75"],"check":"regression offered-rate-rounding-stage 2","expected":["0.366977","1756.275","2.75"],"passed":true},{"actual":["1.115975","111.60","3.00"],"check":"partial repair guard 1","expected":["1.115975","111.60","3.00"],"passed":true},{"actual":["0.006852","34.26","3.51"],"check":"partial repair guard 2","expected":["0.006852","34.26","3.51"],"passed":true},{"actual":["155.536991","7775","2.76"],"check":"control: to yen card","expected":["155.536991","7775","2.76"],"passed":true},{"actual":["0.319418","79.855","4.00"],"check":"control: dinar card","expected":["0.319418","79.855","4.00"],"passed":true},{"actual":["0.908810","72.70","-0.50"],"check":"control: promotional discount","expected":["0.908810","72.70","-0.50"],"passed":true},{"actual":["1.200000","14.81","0.00"],"check":"control: zero markup","expected":["1.200000","14.81","0.00"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression offered-rate-rounding-stage 1\", \"actual\": [\"0.883887\", \"3347.139\", \"0.01\"], \"expected\": [\"0.883887\", \"3347.139\", \"0.01\"], \"passed\": true}, {\"check\": \"regression offered-rate-rounding-stage 2\", \"actual\": [\"0.366977\", \"1756.275\", \"2.75\"], \"expected\": [\"0.366977\", \"1756.275\", \"2.75\"], \"passed\": true}, {\"check\": \"partial repair guard 1\", \"actual\": [\"1.115975\", \"111.60\", \"3.00\"], \"expected\": [\"1.115975\", \"111.60\", \"3.00\"], \"passed\": true}, {\"check\": \"partial repair guard 2\", \"actual\": [\"0.006852\", \"34.26\", \"3.51\"], \"expected\": [\"0.006852\", \"34.26\", \"3.51\"], \"passed\": true}, {\"check\": \"control: to yen card\", \"actual\": [\"155.536991\", \"7775\", \"2.76\"], \"expected\": [\"155.536991\", \"7775\", \"2.76\"], \"passed\": true}, {\"check\": \"control: dinar card\", \"actual\": [\"0.319418\", \"79.855\", \"4.00\"], \"expected\": [\"0.319418\", \"79.855\", \"4.00\"], \"passed\": true}, {\"check\": \"control: promotional discount\", \"actual\": [\"0.908810\", \"72.70\", \"-0.50\"], \"expected\": [\"0.908810\", \"72.70\", \"-0.50\"], \"passed\": true}, {\"check\": \"control: zero markup\", \"actual\": [\"1.200000\", \"14.81\", \"0.00\"], \"expected\": [\"1.200000\", \"14.81\", \"0.00\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}