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.
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| 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