{"abstract":"Short trips charged exactly the minimum fare, missing the booking fee.","category":"Ride-hailing fare and surge pricing","checks":7,"contract":"All money is integer cents. Distance charge = meters x per_km / 1000 and time charge = seconds x per_min / 60, each rounded half up to a cent on its own. Subtotal = base + distance + time. The minimum fare applies to that subtotal only; the booking fee is added after the minimum. Return the distance charge, time charge and fare.","evaluation_group":"w2-ride-hailing-fare-surge-metered-fare","failed_approach":"Dropping the fee whenever the minimum applies still omits it on the short trips it was meant for.","family":"w2-ride-hailing-fare-surge-metered-fare-minimum-before-booking-fee","id":"FA-85341","implementations":{"attempt":{"sha256":"bb8da4b96573f39d114270d36494014e1a3c2b0301e770f270d10a78bd6be3dc","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, rate):\n    def half_up(num, den):\n        return (num * 2 + den) // (den * 2)\n    dist = half_up(trip['meters'] * rate['per_km'], 1000)\n    tm = half_up(trip['seconds'] * rate['per_min'], 60)\n    sub = rate['base'] + dist + tm\n    fare = max(sub, rate['minimum']) + (rate['booking_fee'] if sub >= rate['minimum'] else 0)\n    return {'distance': dist, 'time': tm, 'fare': fare}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: minimum before booking fee',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],\n   {'distance': 0, 'fare': 1250, 'time': 18}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 30},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 30}],\n   {'distance': 0, 'fare': 750, 'time': 15}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 875, 'time': 15}),\n  ('normal control 1',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 1000, 'time': 8}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 0, 'fare': 700, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],\n   {'distance': 125, 'fare': 500, 'time': 0}),\n  ('normal control 4',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36})],\n [('regression: minimum before booking fee',\n   [{'meters': 2500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 950, 'time': 23}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 0},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 1175, 'time': 0}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 90},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 1175, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 15327, 'seconds': 30},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 1916, 'fare': 2181, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 500, 'seconds': 1882},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 25}],\n   {'distance': 125, 'fare': 909, 'time': 784}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],\n   {'distance': 48, 'fare': 700, 'time': 31}),\n  ('normal control 4',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 48, 'fare': 700, 'time': 0})],\n [('regression: minimum before booking fee',\n   [{'meters': 1004, 'seconds': 0},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],\n   {'distance': 251, 'fare': 675, 'time': 0}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 0},\n    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 950, 'time': 0}),\n  ('second regression',\n   [{'meters': 12, 'seconds': 90},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 1, 'fare': 950, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 6354, 'seconds': 30},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 699, 'fare': 717, 'time': 18}),\n  ('normal control 3',\n   [{'meters': 4, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36}),\n  ('normal control 4',\n   [{'meters': 23665, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 2603, 'fare': 2786, 'time': 8})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],\n   {'distance': 55, 'fare': 1175, 'time': 8}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 1374},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 875, 'time': 344}),\n  ('second regression',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 675, 'time': 18}),\n  ('normal control 1',\n   [{'meters': 1004, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 15}],\n   {'distance': 95, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1000, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 12, 'seconds': 61},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 15}),\n  ('normal control 4',\n   [{'meters': 24766, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],\n   {'distance': 6192, 'fare': 6707, 'time': 15})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 35}],\n   {'distance': 63, 'fare': 750, 'time': 36}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 950, 'time': 53}),\n  ('second regression',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 15}],\n   {'distance': 625, 'fare': 875, 'time': 8}),\n  ('normal control 1',\n   [{'meters': 4, 'seconds': 2383},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 250, 'per_min': 35}],\n   {'distance': 1, 'fare': 1641, 'time': 1390}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 1117},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1059, 'time': 559}),\n  ('normal control 3',\n   [{'meters': 0, 'seconds': 30}, {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 700, 'time': 18}),\n  ('normal control 4',\n   [{'meters': 12, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 8})]]\nfor label, args, expected in fixtures[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":"657791282608213df8531d4837d43bc378231655b5c44a94d58a301553289045","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, rate):\n    def half_up(num, den):\n        return (num * 2 + den) // (den * 2)\n    dist = half_up(trip['meters'] * rate['per_km'], 1000)\n    tm = half_up(trip['seconds'] * rate['per_min'], 60)\n    sub = rate['base'] + dist + tm\n    fare = max(sub + rate['booking_fee'], rate['minimum'])\n    return {'distance': dist, 'time': tm, 'fare': fare}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: minimum before booking fee',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],\n   {'distance': 0, 'fare': 1250, 'time': 18}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 30},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 30}],\n   {'distance': 0, 'fare': 750, 'time': 15}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 875, 'time': 15}),\n  ('normal control 1',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 1000, 'time': 8}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 0, 'fare': 700, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],\n   {'distance': 125, 'fare': 500, 'time': 0}),\n  ('normal control 4',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36})],\n [('regression: minimum before booking fee',\n   [{'meters': 2500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 950, 'time': 23}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 0},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 1175, 'time': 0}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 90},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 1175, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 15327, 'seconds': 30},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 1916, 'fare': 2181, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 500, 'seconds': 1882},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 25}],\n   {'distance': 125, 'fare': 909, 'time': 784}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],\n   {'distance': 48, 'fare': 700, 'time': 31}),\n  ('normal control 4',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 48, 'fare': 700, 'time': 0})],\n [('regression: minimum before booking fee',\n   [{'meters': 1004, 'seconds': 0},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],\n   {'distance': 251, 'fare': 675, 'time': 0}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 0},\n    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 950, 'time': 0}),\n  ('second regression',\n   [{'meters': 12, 'seconds': 90},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 1, 'fare': 950, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 6354, 'seconds': 30},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 699, 'fare': 717, 'time': 18}),\n  ('normal control 3',\n   [{'meters': 4, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36}),\n  ('normal control 4',\n   [{'meters': 23665, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 2603, 'fare': 2786, 'time': 8})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],\n   {'distance': 55, 'fare': 1175, 'time': 8}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 1374},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 875, 'time': 344}),\n  ('second regression',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 675, 'time': 18}),\n  ('normal control 1',\n   [{'meters': 1004, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 15}],\n   {'distance': 95, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1000, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 12, 'seconds': 61},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 15}),\n  ('normal control 4',\n   [{'meters': 24766, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],\n   {'distance': 6192, 'fare': 6707, 'time': 15})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 35}],\n   {'distance': 63, 'fare': 750, 'time': 36}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 950, 'time': 53}),\n  ('second regression',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 15}],\n   {'distance': 625, 'fare': 875, 'time': 8}),\n  ('normal control 1',\n   [{'meters': 4, 'seconds': 2383},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 250, 'per_min': 35}],\n   {'distance': 1, 'fare': 1641, 'time': 1390}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 1117},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1059, 'time': 559}),\n  ('normal control 3',\n   [{'meters': 0, 'seconds': 30}, {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 700, 'time': 18}),\n  ('normal control 4',\n   [{'meters': 12, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 8})]]\nfor label, args, expected in fixtures[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":"dc517079c3795314231982fae97b64909f1a51998ac8a1a0b8336a8cc811e731","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, rate):\n    def half_up(num, den):\n        return (num * 2 + den) // (den * 2)\n    dist = half_up(trip['meters'] * rate['per_km'], 1000)\n    tm = half_up(trip['seconds'] * rate['per_min'], 60)\n    sub = rate['base'] + dist + tm\n    fare = max(sub, rate['minimum']) + rate['booking_fee']\n    return {'distance': dist, 'time': tm, 'fare': fare}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: minimum before booking fee',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],\n   {'distance': 0, 'fare': 1250, 'time': 18}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 30},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 30}],\n   {'distance': 0, 'fare': 750, 'time': 15}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 875, 'time': 15}),\n  ('normal control 1',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 1000, 'time': 8}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 0, 'fare': 700, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],\n   {'distance': 125, 'fare': 500, 'time': 0}),\n  ('normal control 4',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36})],\n [('regression: minimum before booking fee',\n   [{'meters': 2500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 15}],\n   {'distance': 313, 'fare': 950, 'time': 23}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 0},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 1175, 'time': 0}),\n  ('second regression',\n   [{'meters': 0, 'seconds': 90},\n    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 1175, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 15327, 'seconds': 30},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 1916, 'fare': 2181, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 500, 'seconds': 1882},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 25}],\n   {'distance': 125, 'fare': 909, 'time': 784}),\n  ('normal control 3',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],\n   {'distance': 48, 'fare': 700, 'time': 31}),\n  ('normal control 4',\n   [{'meters': 500, 'seconds': 0},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 48, 'fare': 700, 'time': 0})],\n [('regression: minimum before booking fee',\n   [{'meters': 1004, 'seconds': 0},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],\n   {'distance': 251, 'fare': 675, 'time': 0}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 4, 'seconds': 0},\n    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 0, 'fare': 950, 'time': 0}),\n  ('second regression',\n   [{'meters': 12, 'seconds': 90},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],\n   {'distance': 1, 'fare': 950, 'time': 45}),\n  ('normal control 1',\n   [{'meters': 0, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 6354, 'seconds': 30},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 699, 'fare': 717, 'time': 18}),\n  ('normal control 3',\n   [{'meters': 4, 'seconds': 61},\n    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 500, 'time': 36}),\n  ('normal control 4',\n   [{'meters': 23665, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 2603, 'fare': 2786, 'time': 8})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],\n   {'distance': 55, 'fare': 1175, 'time': 8}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 0, 'seconds': 1374},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 110, 'per_min': 15}],\n   {'distance': 0, 'fare': 875, 'time': 344}),\n  ('second regression',\n   [{'meters': 500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 675, 'time': 18}),\n  ('normal control 1',\n   [{'meters': 1004, 'seconds': 61},\n    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 95, 'per_min': 15}],\n   {'distance': 95, 'fare': 500, 'time': 15}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1000, 'time': 15}),\n  ('normal control 3',\n   [{'meters': 12, 'seconds': 61},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 15}),\n  ('normal control 4',\n   [{'meters': 24766, 'seconds': 30},\n    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],\n   {'distance': 6192, 'fare': 6707, 'time': 15})],\n [('regression: minimum before booking fee',\n   [{'meters': 500, 'seconds': 61},\n    {'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 35}],\n   {'distance': 63, 'fare': 750, 'time': 36}),\n  ('partial repair probe: minimum before booking fee',\n   [{'meters': 500, 'seconds': 90},\n    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],\n   {'distance': 55, 'fare': 950, 'time': 53}),\n  ('second regression',\n   [{'meters': 2500, 'seconds': 30},\n    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 15}],\n   {'distance': 625, 'fare': 875, 'time': 8}),\n  ('normal control 1',\n   [{'meters': 4, 'seconds': 2383},\n    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 250, 'per_min': 35}],\n   {'distance': 1, 'fare': 1641, 'time': 1390}),\n  ('normal control 2',\n   [{'meters': 0, 'seconds': 1117},\n    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 30}],\n   {'distance': 0, 'fare': 1059, 'time': 559}),\n  ('normal control 3',\n   [{'meters': 0, 'seconds': 30}, {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 35}],\n   {'distance': 0, 'fare': 700, 'time': 18}),\n  ('normal control 4',\n   [{'meters': 12, 'seconds': 30},\n    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],\n   {'distance': 1, 'fare': 500, 'time': 8})]]\nfor label, args, expected in fixtures[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 toy pricing contract stipulated for this example; it does not reproduce the pricing of any real ride-hailing operator or regulator. 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-ride-hailing-fare-surge-metered-fare-minimum-before-booking-fee","generated_at":"2026-09-29T14:50:39.582794+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Ride-hailing prices are computed per trip at scale; ordering, unit and boundary slips become systematic over- or under-charging.","repair":"Apply the minimum to the metered subtotal, then add the booking fee.","root_cause":"The minimum is compared after adding the booking fee, so the fee disappears into the minimum.","sha256":"46c866cc0aa02bc9468df282e2d73c480f7f2f04f5ba55395f71bebb1500d32c","title":"Booking fee absorbed into the minimum fare · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.568,"exit_code":1,"observations":[{"actual":{"distance":0,"fare":1000,"time":18},"check":"regression: minimum before booking fee","expected":{"distance":0,"fare":1250,"time":18},"passed":false},{"actual":{"distance":0,"fare":500,"time":15},"check":"partial repair probe: minimum before booking fee","expected":{"distance":0,"fare":750,"time":15},"passed":false},{"actual":{"distance":0,"fare":700,"time":15},"check":"second regression","expected":{"distance":0,"fare":875,"time":15},"passed":false},{"actual":{"distance":313,"fare":1000,"time":8},"check":"normal control 1","expected":{"distance":313,"fare":1000,"time":8},"passed":true},{"actual":{"distance":0,"fare":700,"time":15},"check":"normal control 2","expected":{"distance":0,"fare":700,"time":15},"passed":true},{"actual":{"distance":125,"fare":500,"time":0},"check":"normal control 3","expected":{"distance":125,"fare":500,"time":0},"passed":true},{"actual":{"distance":0,"fare":500,"time":36},"check":"normal control 4","expected":{"distance":0,"fare":500,"time":36},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 18, \"fare\": 1000}, \"expected\": {\"distance\": 0, \"fare\": 1250, \"time\": 18}, \"passed\": false}, {\"check\": \"partial repair probe: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 500}, \"expected\": {\"distance\": 0, \"fare\": 750, \"time\": 15}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 700}, \"expected\": {\"distance\": 0, \"fare\": 875, \"time\": 15}, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": {\"distance\": 313, \"time\": 8, \"fare\": 1000}, \"expected\": {\"distance\": 313, \"fare\": 1000, \"time\": 8}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 700}, \"expected\": {\"distance\": 0, \"fare\": 700, \"time\": 15}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"distance\": 125, \"time\": 0, \"fare\": 500}, \"expected\": {\"distance\": 125, \"fare\": 500, \"time\": 0}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"distance\": 0, \"time\": 36, \"fare\": 500}, \"expected\": {\"distance\": 0, \"fare\": 500, \"time\": 36}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.789,"exit_code":1,"observations":[{"actual":{"distance":0,"fare":1000,"time":18},"check":"regression: minimum before booking fee","expected":{"distance":0,"fare":1250,"time":18},"passed":false},{"actual":{"distance":0,"fare":500,"time":15},"check":"partial repair probe: minimum before booking fee","expected":{"distance":0,"fare":750,"time":15},"passed":false},{"actual":{"distance":0,"fare":700,"time":15},"check":"second regression","expected":{"distance":0,"fare":875,"time":15},"passed":false},{"actual":{"distance":313,"fare":1000,"time":8},"check":"normal control 1","expected":{"distance":313,"fare":1000,"time":8},"passed":true},{"actual":{"distance":0,"fare":700,"time":15},"check":"normal control 2","expected":{"distance":0,"fare":700,"time":15},"passed":true},{"actual":{"distance":125,"fare":500,"time":0},"check":"normal control 3","expected":{"distance":125,"fare":500,"time":0},"passed":true},{"actual":{"distance":0,"fare":500,"time":36},"check":"normal control 4","expected":{"distance":0,"fare":500,"time":36},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 18, \"fare\": 1000}, \"expected\": {\"distance\": 0, \"fare\": 1250, \"time\": 18}, \"passed\": false}, {\"check\": \"partial repair probe: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 500}, \"expected\": {\"distance\": 0, \"fare\": 750, \"time\": 15}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 700}, \"expected\": {\"distance\": 0, \"fare\": 875, \"time\": 15}, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": {\"distance\": 313, \"time\": 8, \"fare\": 1000}, \"expected\": {\"distance\": 313, \"fare\": 1000, \"time\": 8}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 700}, \"expected\": {\"distance\": 0, \"fare\": 700, \"time\": 15}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"distance\": 125, \"time\": 0, \"fare\": 500}, \"expected\": {\"distance\": 125, \"fare\": 500, \"time\": 0}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"distance\": 0, \"time\": 36, \"fare\": 500}, \"expected\": {\"distance\": 0, \"fare\": 500, \"time\": 36}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.122,"exit_code":0,"observations":[{"actual":{"distance":0,"fare":1250,"time":18},"check":"regression: minimum before booking fee","expected":{"distance":0,"fare":1250,"time":18},"passed":true},{"actual":{"distance":0,"fare":750,"time":15},"check":"partial repair probe: minimum before booking fee","expected":{"distance":0,"fare":750,"time":15},"passed":true},{"actual":{"distance":0,"fare":875,"time":15},"check":"second regression","expected":{"distance":0,"fare":875,"time":15},"passed":true},{"actual":{"distance":313,"fare":1000,"time":8},"check":"normal control 1","expected":{"distance":313,"fare":1000,"time":8},"passed":true},{"actual":{"distance":0,"fare":700,"time":15},"check":"normal control 2","expected":{"distance":0,"fare":700,"time":15},"passed":true},{"actual":{"distance":125,"fare":500,"time":0},"check":"normal control 3","expected":{"distance":125,"fare":500,"time":0},"passed":true},{"actual":{"distance":0,"fare":500,"time":36},"check":"normal control 4","expected":{"distance":0,"fare":500,"time":36},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 18, \"fare\": 1250}, \"expected\": {\"distance\": 0, \"fare\": 1250, \"time\": 18}, \"passed\": true}, {\"check\": \"partial repair probe: minimum before booking fee\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 750}, \"expected\": {\"distance\": 0, \"fare\": 750, \"time\": 15}, \"passed\": true}, {\"check\": \"second regression\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 875}, \"expected\": {\"distance\": 0, \"fare\": 875, \"time\": 15}, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": {\"distance\": 313, \"time\": 8, \"fare\": 1000}, \"expected\": {\"distance\": 313, \"fare\": 1000, \"time\": 8}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"distance\": 0, \"time\": 15, \"fare\": 700}, \"expected\": {\"distance\": 0, \"fare\": 700, \"time\": 15}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"distance\": 125, \"time\": 0, \"fare\": 500}, \"expected\": {\"distance\": 125, \"fare\": 500, \"time\": 0}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"distance\": 0, \"time\": 36, \"fare\": 500}, \"expected\": {\"distance\": 0, \"fare\": 500, \"time\": 36}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}