FAILURE MAP
← Case archive

FA-85346 / Ride-hailing fare and surge pricing / Open access

Distance charge truncated to the cent · case 01

Distance charges ending in half a cent or more lose a cent.

Verified by executionVariant 1 · 7 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

The distance charge uses floor division instead of half-up rounding.

VERIFIED REPAIR

Round the distance charge half up to the cent.

Unsuccessful approach: Python round() is half-even and still drops half cents on even values.

Case 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.

Why this case matters

Ride-hailing prices are computed per trip at scale; ordering, unit and boundary slips become systematic over- or under-charging.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(trip, rate):
    def half_up(num, den):
        return (num * 2 + den) // (den * 2)
    dist = trip['meters'] * rate['per_km'] // 1000
    tm = half_up(trip['seconds'] * rate['per_min'], 60)
    sub = rate['base'] + dist + tm
    fare = max(sub, rate['minimum']) + rate['booking_fee']
    return {'distance': dist, 'time': tm, 'fare': fare}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: distance cent rounding',
   [{'meters': 13218, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 25}],
   {'distance': 3305, 'fare': 3468, 'time': 13}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 0},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 875, 'time': 0}),
  ('second regression',
   [{'meters': 5073, 'seconds': 440},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 30}],
   {'distance': 482, 'fare': 1127, 'time': 220}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 0},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
   {'distance': 3, 'fare': 1000, 'time': 0}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 1448},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 35}],
   {'distance': 251, 'fare': 1346, 'time': 845}),
  ('normal control 3',
   [{'meters': 4, 'seconds': 1514},
    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
   {'distance': 1, 'fare': 950, 'time': 631}),
  ('normal control 4',
   [{'meters': 12, 'seconds': 2021},
    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 1250, 'time': 505})],
 [('regression: distance cent rounding',
   [{'meters': 23462, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],
   {'distance': 2933, 'fare': 3219, 'time': 36}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 588, 'time': 25}),
  ('second regression',
   [{'meters': 1004, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 126, 'fare': 675, 'time': 18}),
  ('normal control 1',
   [{'meters': 1004, 'seconds': 61},
    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
   {'distance': 95, 'fare': 875, 'time': 31}),
  ('normal control 2',
   [{'meters': 12, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 25}),
  ('normal control 3',
   [{'meters': 9283, 'seconds': 2669},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1160, 'fare': 2522, 'time': 1112}),
  ('normal control 4',
   [{'meters': 4, 'seconds': 1599},
    {'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1000, 'time': 933})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 675, 'time': 18}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 30},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 13}),
  ('second regression',
   [{'meters': 16236, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
   {'distance': 2030, 'fare': 2180, 'time': 0}),
  ('normal control 1',
   [{'meters': 0, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 0, 'fare': 875, 'time': 38}),
  ('normal control 2',
   [{'meters': 4, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1175, 'time': 18}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 500, 'time': 18}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 90},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 110, 'fare': 500, 'time': 23})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 90},
    {'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 1250, 'time': 38}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 13716, 'seconds': 61},
    {'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
   {'distance': 1715, 'fare': 1996, 'time': 31}),
  ('second regression',
   [{'meters': 12, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 2, 'fare': 700, 'time': 0}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 1415},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 680, 'time': 354}),
  ('normal control 2',
   [{'meters': 500, 'seconds': 30},
    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],
   {'distance': 55, 'fare': 950, 'time': 15}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 1175, 'time': 53}),
  ('normal control 4',
   [{'meters': 17013, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
   {'distance': 1871, 'fare': 2321, 'time': 25})],
 [('regression: distance cent rounding',
   [{'meters': 500, 'seconds': 1926},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 63, 'fare': 1276, 'time': 963}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 90},
    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 700, 'time': 38}),
  ('second regression',
   [{'meters': 11469, 'seconds': 811},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
   {'distance': 1434, 'fare': 2090, 'time': 406}),
  ('normal control 1',
   [{'meters': 12570, 'seconds': 61},
    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 15}],
   {'distance': 1571, 'fare': 1586, 'time': 15}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 90},
    {'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
   {'distance': 251, 'fare': 875, 'time': 45}),
  ('normal control 3',
   [{'meters': 0, 'seconds': 2350},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 0, 'fare': 1129, 'time': 979}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 0},
    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 95, 'fare': 950, 'time': 0})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: distance cent rounding{'distance': 3304, 'fare': 3467, 'time': 13}{'distance': 3305, 'fare': 3468, 'time': 13}Failed
partial repair probe: distance cent rounding{'distance': 312, 'fare': 875, 'time': 0}{'distance': 313, 'fare': 875, 'time': 0}Failed
second regression{'distance': 481, 'fare': 1126, 'time': 220}{'distance': 482, 'fare': 1127, 'time': 220}Failed
normal control 1{'distance': 3, 'fare': 1000, 'time': 0}{'distance': 3, 'fare': 1000, 'time': 0}Passed
normal control 2{'distance': 251, 'fare': 1346, 'time': 845}{'distance': 251, 'fare': 1346, 'time': 845}Passed
normal control 3{'distance': 1, 'fare': 950, 'time': 631}{'distance': 1, 'fare': 950, 'time': 631}Passed
normal control 4{'distance': 1, 'fare': 1250, 'time': 505}{'distance': 1, 'fare': 1250, 'time': 505}Passed

SHA-256 / 892df54a9ed4a8e88d72f21c7e6861f2261c6bf48e8699dc41ed08a9ab9781bf

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(trip, rate):
    def half_up(num, den):
        return (num * 2 + den) // (den * 2)
    dist = round(trip['meters'] * rate['per_km'] / 1000)
    tm = half_up(trip['seconds'] * rate['per_min'], 60)
    sub = rate['base'] + dist + tm
    fare = max(sub, rate['minimum']) + rate['booking_fee']
    return {'distance': dist, 'time': tm, 'fare': fare}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: distance cent rounding',
   [{'meters': 13218, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 25}],
   {'distance': 3305, 'fare': 3468, 'time': 13}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 0},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 875, 'time': 0}),
  ('second regression',
   [{'meters': 5073, 'seconds': 440},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 30}],
   {'distance': 482, 'fare': 1127, 'time': 220}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 0},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
   {'distance': 3, 'fare': 1000, 'time': 0}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 1448},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 35}],
   {'distance': 251, 'fare': 1346, 'time': 845}),
  ('normal control 3',
   [{'meters': 4, 'seconds': 1514},
    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
   {'distance': 1, 'fare': 950, 'time': 631}),
  ('normal control 4',
   [{'meters': 12, 'seconds': 2021},
    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 1250, 'time': 505})],
 [('regression: distance cent rounding',
   [{'meters': 23462, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],
   {'distance': 2933, 'fare': 3219, 'time': 36}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 588, 'time': 25}),
  ('second regression',
   [{'meters': 1004, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 126, 'fare': 675, 'time': 18}),
  ('normal control 1',
   [{'meters': 1004, 'seconds': 61},
    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
   {'distance': 95, 'fare': 875, 'time': 31}),
  ('normal control 2',
   [{'meters': 12, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 25}),
  ('normal control 3',
   [{'meters': 9283, 'seconds': 2669},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1160, 'fare': 2522, 'time': 1112}),
  ('normal control 4',
   [{'meters': 4, 'seconds': 1599},
    {'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1000, 'time': 933})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 675, 'time': 18}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 30},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 13}),
  ('second regression',
   [{'meters': 16236, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
   {'distance': 2030, 'fare': 2180, 'time': 0}),
  ('normal control 1',
   [{'meters': 0, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 0, 'fare': 875, 'time': 38}),
  ('normal control 2',
   [{'meters': 4, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1175, 'time': 18}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 500, 'time': 18}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 90},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 110, 'fare': 500, 'time': 23})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 90},
    {'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 1250, 'time': 38}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 13716, 'seconds': 61},
    {'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
   {'distance': 1715, 'fare': 1996, 'time': 31}),
  ('second regression',
   [{'meters': 12, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 2, 'fare': 700, 'time': 0}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 1415},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 680, 'time': 354}),
  ('normal control 2',
   [{'meters': 500, 'seconds': 30},
    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],
   {'distance': 55, 'fare': 950, 'time': 15}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 1175, 'time': 53}),
  ('normal control 4',
   [{'meters': 17013, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
   {'distance': 1871, 'fare': 2321, 'time': 25})],
 [('regression: distance cent rounding',
   [{'meters': 500, 'seconds': 1926},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 63, 'fare': 1276, 'time': 963}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 90},
    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 700, 'time': 38}),
  ('second regression',
   [{'meters': 11469, 'seconds': 811},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
   {'distance': 1434, 'fare': 2090, 'time': 406}),
  ('normal control 1',
   [{'meters': 12570, 'seconds': 61},
    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 15}],
   {'distance': 1571, 'fare': 1586, 'time': 15}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 90},
    {'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
   {'distance': 251, 'fare': 875, 'time': 45}),
  ('normal control 3',
   [{'meters': 0, 'seconds': 2350},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 0, 'fare': 1129, 'time': 979}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 0},
    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 95, 'fare': 950, 'time': 0})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: distance cent rounding{'distance': 3304, 'fare': 3467, 'time': 13}{'distance': 3305, 'fare': 3468, 'time': 13}Failed
partial repair probe: distance cent rounding{'distance': 312, 'fare': 875, 'time': 0}{'distance': 313, 'fare': 875, 'time': 0}Failed
second regression{'distance': 482, 'fare': 1127, 'time': 220}{'distance': 482, 'fare': 1127, 'time': 220}Passed
normal control 1{'distance': 3, 'fare': 1000, 'time': 0}{'distance': 3, 'fare': 1000, 'time': 0}Passed
normal control 2{'distance': 251, 'fare': 1346, 'time': 845}{'distance': 251, 'fare': 1346, 'time': 845}Passed
normal control 3{'distance': 1, 'fare': 950, 'time': 631}{'distance': 1, 'fare': 950, 'time': 631}Passed
normal control 4{'distance': 1, 'fare': 1250, 'time': 505}{'distance': 1, 'fare': 1250, 'time': 505}Passed

SHA-256 / 026d68314e34c4c3409fdc0fd54afa43282e69b6b3483ddfb862781e019bf502

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(trip, rate):
    def half_up(num, den):
        return (num * 2 + den) // (den * 2)
    dist = half_up(trip['meters'] * rate['per_km'], 1000)
    tm = half_up(trip['seconds'] * rate['per_min'], 60)
    sub = rate['base'] + dist + tm
    fare = max(sub, rate['minimum']) + rate['booking_fee']
    return {'distance': dist, 'time': tm, 'fare': fare}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: distance cent rounding',
   [{'meters': 13218, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 25}],
   {'distance': 3305, 'fare': 3468, 'time': 13}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 0},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 875, 'time': 0}),
  ('second regression',
   [{'meters': 5073, 'seconds': 440},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 30}],
   {'distance': 482, 'fare': 1127, 'time': 220}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 0},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
   {'distance': 3, 'fare': 1000, 'time': 0}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 1448},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 35}],
   {'distance': 251, 'fare': 1346, 'time': 845}),
  ('normal control 3',
   [{'meters': 4, 'seconds': 1514},
    {'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
   {'distance': 1, 'fare': 950, 'time': 631}),
  ('normal control 4',
   [{'meters': 12, 'seconds': 2021},
    {'base': 250, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 1250, 'time': 505})],
 [('regression: distance cent rounding',
   [{'meters': 23462, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 35}],
   {'distance': 2933, 'fare': 3219, 'time': 36}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 2500, 'seconds': 61},
    {'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 588, 'time': 25}),
  ('second regression',
   [{'meters': 1004, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 126, 'fare': 675, 'time': 18}),
  ('normal control 1',
   [{'meters': 1004, 'seconds': 61},
    {'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
   {'distance': 95, 'fare': 875, 'time': 31}),
  ('normal control 2',
   [{'meters': 12, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 25}),
  ('normal control 3',
   [{'meters': 9283, 'seconds': 2669},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1160, 'fare': 2522, 'time': 1112}),
  ('normal control 4',
   [{'meters': 4, 'seconds': 1599},
    {'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1000, 'time': 933})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 35}],
   {'distance': 313, 'fare': 675, 'time': 18}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 30},
    {'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 675, 'time': 13}),
  ('second regression',
   [{'meters': 16236, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
   {'distance': 2030, 'fare': 2180, 'time': 0}),
  ('normal control 1',
   [{'meters': 0, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 0, 'fare': 875, 'time': 38}),
  ('normal control 2',
   [{'meters': 4, 'seconds': 30},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
   {'distance': 0, 'fare': 1175, 'time': 18}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 30},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 500, 'time': 18}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 90},
    {'base': 150, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 110, 'fare': 500, 'time': 23})],
 [('regression: distance cent rounding',
   [{'meters': 2500, 'seconds': 90},
    {'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
   {'distance': 313, 'fare': 1250, 'time': 38}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 13716, 'seconds': 61},
    {'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
   {'distance': 1715, 'fare': 1996, 'time': 31}),
  ('second regression',
   [{'meters': 12, 'seconds': 0},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 2, 'fare': 700, 'time': 0}),
  ('normal control 1',
   [{'meters': 12, 'seconds': 1415},
    {'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
   {'distance': 1, 'fare': 680, 'time': 354}),
  ('normal control 2',
   [{'meters': 500, 'seconds': 30},
    {'base': 150, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 30}],
   {'distance': 55, 'fare': 950, 'time': 15}),
  ('normal control 3',
   [{'meters': 12, 'seconds': 90},
    {'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
   {'distance': 1, 'fare': 1175, 'time': 53}),
  ('normal control 4',
   [{'meters': 17013, 'seconds': 61},
    {'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
   {'distance': 1871, 'fare': 2321, 'time': 25})],
 [('regression: distance cent rounding',
   [{'meters': 500, 'seconds': 1926},
    {'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 30}],
   {'distance': 63, 'fare': 1276, 'time': 963}),
  ('partial repair probe: distance cent rounding',
   [{'meters': 4, 'seconds': 90},
    {'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 1, 'fare': 700, 'time': 38}),
  ('second regression',
   [{'meters': 11469, 'seconds': 811},
    {'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
   {'distance': 1434, 'fare': 2090, 'time': 406}),
  ('normal control 1',
   [{'meters': 12570, 'seconds': 61},
    {'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 15}],
   {'distance': 1571, 'fare': 1586, 'time': 15}),
  ('normal control 2',
   [{'meters': 1004, 'seconds': 90},
    {'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
   {'distance': 251, 'fare': 875, 'time': 45}),
  ('normal control 3',
   [{'meters': 0, 'seconds': 2350},
    {'base': 150, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
   {'distance': 0, 'fare': 1129, 'time': 979}),
  ('normal control 4',
   [{'meters': 1004, 'seconds': 0},
    {'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 95, 'per_min': 25}],
   {'distance': 95, 'fare': 950, 'time': 0})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: distance cent rounding{'distance': 3305, 'fare': 3468, 'time': 13}{'distance': 3305, 'fare': 3468, 'time': 13}Passed
partial repair probe: distance cent rounding{'distance': 313, 'fare': 875, 'time': 0}{'distance': 313, 'fare': 875, 'time': 0}Passed
second regression{'distance': 482, 'fare': 1127, 'time': 220}{'distance': 482, 'fare': 1127, 'time': 220}Passed
normal control 1{'distance': 3, 'fare': 1000, 'time': 0}{'distance': 3, 'fare': 1000, 'time': 0}Passed
normal control 2{'distance': 251, 'fare': 1346, 'time': 845}{'distance': 251, 'fare': 1346, 'time': 845}Passed
normal control 3{'distance': 1, 'fare': 950, 'time': 631}{'distance': 1, 'fare': 950, 'time': 631}Passed
normal control 4{'distance': 1, 'fare': 1250, 'time': 505}{'distance': 1, 'fare': 1250, 'time': 505}Passed

SHA-256 / 041c11760a0e2f631fea2a36eff5d49b4357634acb52470f41fa9bf950cbba8f

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:50:39.596263+00:00.

Case digest / 36b2542d850845084ce14caa47c72e47880abf859627e2ebe90a9c4c4cd6c306