FA-85351 / Ride-hailing fare and surge pricing / Open access
Per-minute rate applied per hour · case 01
Time charges come out 60 times too small.
ROOT CAUSE
Seconds are divided by 3600 although the rate is per minute.
VERIFIED REPAIR
Prorate seconds over 60 at the per-minute rate.
Unsuccessful approach: Billing each started minute in full overcharges partial minutes.
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 = half_up(trip['meters'] * rate['per_km'], 1000)
tm = half_up(trip['seconds'] * rate['per_min'], 3600)
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: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 500, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 1229},
{'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2, 'fare': 1250, 'time': 307}),
('second regression',
[{'meters': 0, 'seconds': 2352},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
{'distance': 0, 'fare': 1380, 'time': 980}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 110, 'per_min': 30}],
{'distance': 0, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 15062, 'seconds': 0},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 1883, 'fare': 1883, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 3, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 500, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 1175, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 1000, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 826},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
{'distance': 1, 'fare': 1000, 'time': 482}),
('second regression',
[{'meters': 1004, 'seconds': 90},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 126, 'fare': 1175, 'time': 38}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 18143, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2268, 'fare': 2518, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 15}],
{'distance': 238, 'fare': 750, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 12, 'seconds': 61},
{'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 1, 'fare': 675, 'time': 15}),
('partial repair probe: per-minute proration',
[{'meters': 500, 'seconds': 90},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 675, 'time': 45}),
('second regression',
[{'meters': 0, 'seconds': 30},
{'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
{'distance': 0, 'fare': 750, 'time': 13}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 3',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 4, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 1, 'fare': 875, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 3247, 'seconds': 2905},
{'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 25}],
{'distance': 357, 'fare': 1817, 'time': 1210}),
('partial repair probe: per-minute proration',
[{'meters': 16003, 'seconds': 1892},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 4001, 'fare': 5289, 'time': 788}),
('second regression',
[{'meters': 3374, 'seconds': 61},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 422, 'fare': 950, 'time': 25}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 63, 'fare': 1175, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 1, 'fare': 875, 'time': 0}),
('normal control 3',
[{'meters': 1004, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 251, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],
{'distance': 275, 'fare': 950, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 4, 'seconds': 30},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 8}),
('partial repair probe: per-minute proration',
[{'meters': 1004, 'seconds': 30},
{'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
{'distance': 95, 'fare': 700, 'time': 15}),
('second regression',
[{'meters': 500, 'seconds': 1245},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],
{'distance': 55, 'fare': 1175, 'time': 623}),
('normal control 1',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 625, 'fare': 1050, 'time': 0}),
('normal control 2',
[{'meters': 20828, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 2604, 'fare': 2854, 'time': 0}),
('normal control 3',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 0, 'fare': 875, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 625, 'fare': 1250, '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: per-minute proration | {'distance': 125, 'fare': 500, 'time': 1} | {'distance': 125, 'fare': 500, 'time': 31} | Failed |
| partial repair probe: per-minute proration | {'distance': 2, 'fare': 1250, 'time': 5} | {'distance': 2, 'fare': 1250, 'time': 307} | Failed |
| second regression | {'distance': 0, 'fare': 1250, 'time': 16} | {'distance': 0, 'fare': 1380, 'time': 980} | Failed |
| normal control 1 | {'distance': 0, 'fare': 750, 'time': 0} | {'distance': 0, 'fare': 750, 'time': 0} | Passed |
| normal control 2 | {'distance': 1883, 'fare': 1883, 'time': 0} | {'distance': 1883, 'fare': 1883, 'time': 0} | Passed |
| normal control 3 | {'distance': 3, 'fare': 1175, 'time': 0} | {'distance': 3, 'fare': 1175, 'time': 0} | Passed |
| normal control 4 | {'distance': 63, 'fare': 1175, 'time': 0} | {'distance': 63, 'fare': 1175, 'time': 0} | Passed |
SHA-256 / 476201a308cb47c32101521f4ff6c808b3ea418bad060b0a0816de9af05ccea1
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 = half_up(trip['meters'] * rate['per_km'], 1000)
tm = -(-trip['seconds'] // 60) * rate['per_min']
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: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 500, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 1229},
{'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2, 'fare': 1250, 'time': 307}),
('second regression',
[{'meters': 0, 'seconds': 2352},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
{'distance': 0, 'fare': 1380, 'time': 980}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 110, 'per_min': 30}],
{'distance': 0, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 15062, 'seconds': 0},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 1883, 'fare': 1883, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 3, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 500, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 1175, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 1000, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 826},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
{'distance': 1, 'fare': 1000, 'time': 482}),
('second regression',
[{'meters': 1004, 'seconds': 90},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 126, 'fare': 1175, 'time': 38}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 18143, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2268, 'fare': 2518, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 15}],
{'distance': 238, 'fare': 750, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 12, 'seconds': 61},
{'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 1, 'fare': 675, 'time': 15}),
('partial repair probe: per-minute proration',
[{'meters': 500, 'seconds': 90},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 675, 'time': 45}),
('second regression',
[{'meters': 0, 'seconds': 30},
{'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
{'distance': 0, 'fare': 750, 'time': 13}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 3',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 4, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 1, 'fare': 875, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 3247, 'seconds': 2905},
{'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 25}],
{'distance': 357, 'fare': 1817, 'time': 1210}),
('partial repair probe: per-minute proration',
[{'meters': 16003, 'seconds': 1892},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 4001, 'fare': 5289, 'time': 788}),
('second regression',
[{'meters': 3374, 'seconds': 61},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 422, 'fare': 950, 'time': 25}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 63, 'fare': 1175, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 1, 'fare': 875, 'time': 0}),
('normal control 3',
[{'meters': 1004, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 251, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],
{'distance': 275, 'fare': 950, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 4, 'seconds': 30},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 8}),
('partial repair probe: per-minute proration',
[{'meters': 1004, 'seconds': 30},
{'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
{'distance': 95, 'fare': 700, 'time': 15}),
('second regression',
[{'meters': 500, 'seconds': 1245},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],
{'distance': 55, 'fare': 1175, 'time': 623}),
('normal control 1',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 625, 'fare': 1050, 'time': 0}),
('normal control 2',
[{'meters': 20828, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 2604, 'fare': 2854, 'time': 0}),
('normal control 3',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 0, 'fare': 875, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 625, 'fare': 1250, '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: per-minute proration | {'distance': 125, 'fare': 500, 'time': 60} | {'distance': 125, 'fare': 500, 'time': 31} | Failed |
| partial repair probe: per-minute proration | {'distance': 2, 'fare': 1250, 'time': 315} | {'distance': 2, 'fare': 1250, 'time': 307} | Failed |
| second regression | {'distance': 0, 'fare': 1400, 'time': 1000} | {'distance': 0, 'fare': 1380, 'time': 980} | Failed |
| normal control 1 | {'distance': 0, 'fare': 750, 'time': 0} | {'distance': 0, 'fare': 750, 'time': 0} | Passed |
| normal control 2 | {'distance': 1883, 'fare': 1883, 'time': 0} | {'distance': 1883, 'fare': 1883, 'time': 0} | Passed |
| normal control 3 | {'distance': 3, 'fare': 1175, 'time': 0} | {'distance': 3, 'fare': 1175, 'time': 0} | Passed |
| normal control 4 | {'distance': 63, 'fare': 1175, 'time': 0} | {'distance': 63, 'fare': 1175, 'time': 0} | Passed |
SHA-256 / 0778331171eaafa94cd26ed757050685b485fc39adb1db71d4968f3f0694b62e
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: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 500, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 1229},
{'base': 0, 'booking_fee': 250, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2, 'fare': 1250, 'time': 307}),
('second regression',
[{'meters': 0, 'seconds': 2352},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 110, 'per_min': 25}],
{'distance': 0, 'fare': 1380, 'time': 980}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 110, 'per_min': 30}],
{'distance': 0, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 15062, 'seconds': 0},
{'base': 0, 'booking_fee': 0, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 1883, 'fare': 1883, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 3, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 500, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 1175, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 500, 'seconds': 61},
{'base': 0, 'booking_fee': 0, 'minimum': 1000, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 1000, 'time': 31}),
('partial repair probe: per-minute proration',
[{'meters': 12, 'seconds': 826},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 95, 'per_min': 35}],
{'distance': 1, 'fare': 1000, 'time': 482}),
('second regression',
[{'meters': 1004, 'seconds': 90},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 126, 'fare': 1175, 'time': 38}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 500, 'per_km': 250, 'per_min': 30}],
{'distance': 125, 'fare': 750, 'time': 0}),
('normal control 2',
[{'meters': 18143, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 1000, 'per_km': 125, 'per_min': 15}],
{'distance': 2268, 'fare': 2518, 'time': 0}),
('normal control 3',
[{'meters': 12, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 35}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 15}],
{'distance': 238, 'fare': 750, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 12, 'seconds': 61},
{'base': 250, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 1, 'fare': 675, 'time': 15}),
('partial repair probe: per-minute proration',
[{'meters': 500, 'seconds': 90},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 125, 'per_min': 30}],
{'distance': 63, 'fare': 675, 'time': 45}),
('second regression',
[{'meters': 0, 'seconds': 30},
{'base': 150, 'booking_fee': 250, 'minimum': 500, 'per_km': 95, 'per_min': 25}],
{'distance': 0, 'fare': 750, 'time': 13}),
('normal control 1',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 500, 'per_km': 250, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 1175, 'time': 0}),
('normal control 3',
[{'meters': 4, 'seconds': 0},
{'base': 0, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 15}],
{'distance': 1, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 4, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 1, 'fare': 875, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 3247, 'seconds': 2905},
{'base': 250, 'booking_fee': 0, 'minimum': 500, 'per_km': 110, 'per_min': 25}],
{'distance': 357, 'fare': 1817, 'time': 1210}),
('partial repair probe: per-minute proration',
[{'meters': 16003, 'seconds': 1892},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 4001, 'fare': 5289, 'time': 788}),
('second regression',
[{'meters': 3374, 'seconds': 61},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 422, 'fare': 950, 'time': 25}),
('normal control 1',
[{'meters': 500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 125, 'per_min': 25}],
{'distance': 63, 'fare': 1175, 'time': 0}),
('normal control 2',
[{'meters': 4, 'seconds': 0},
{'base': 150, 'booking_fee': 175, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 1, 'fare': 875, 'time': 0}),
('normal control 3',
[{'meters': 1004, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 251, 'fare': 950, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 250, 'minimum': 700, 'per_km': 110, 'per_min': 35}],
{'distance': 275, 'fare': 950, 'time': 0})],
[('regression: per-minute proration',
[{'meters': 4, 'seconds': 30},
{'base': 150, 'booking_fee': 175, 'minimum': 500, 'per_km': 110, 'per_min': 15}],
{'distance': 0, 'fare': 675, 'time': 8}),
('partial repair probe: per-minute proration',
[{'meters': 1004, 'seconds': 30},
{'base': 0, 'booking_fee': 0, 'minimum': 700, 'per_km': 95, 'per_min': 30}],
{'distance': 95, 'fare': 700, 'time': 15}),
('second regression',
[{'meters': 500, 'seconds': 1245},
{'base': 250, 'booking_fee': 175, 'minimum': 1000, 'per_km': 110, 'per_min': 30}],
{'distance': 55, 'fare': 1175, 'time': 623}),
('normal control 1',
[{'meters': 2500, 'seconds': 0},
{'base': 250, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 30}],
{'distance': 625, 'fare': 1050, 'time': 0}),
('normal control 2',
[{'meters': 20828, 'seconds': 0},
{'base': 250, 'booking_fee': 0, 'minimum': 700, 'per_km': 125, 'per_min': 25}],
{'distance': 2604, 'fare': 2854, 'time': 0}),
('normal control 3',
[{'meters': 0, 'seconds': 0},
{'base': 0, 'booking_fee': 175, 'minimum': 700, 'per_km': 250, 'per_min': 25}],
{'distance': 0, 'fare': 875, 'time': 0}),
('normal control 4',
[{'meters': 2500, 'seconds': 0},
{'base': 150, 'booking_fee': 250, 'minimum': 1000, 'per_km': 250, 'per_min': 15}],
{'distance': 625, 'fare': 1250, '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: per-minute proration | {'distance': 125, 'fare': 500, 'time': 31} | {'distance': 125, 'fare': 500, 'time': 31} | Passed |
| partial repair probe: per-minute proration | {'distance': 2, 'fare': 1250, 'time': 307} | {'distance': 2, 'fare': 1250, 'time': 307} | Passed |
| second regression | {'distance': 0, 'fare': 1380, 'time': 980} | {'distance': 0, 'fare': 1380, 'time': 980} | Passed |
| normal control 1 | {'distance': 0, 'fare': 750, 'time': 0} | {'distance': 0, 'fare': 750, 'time': 0} | Passed |
| normal control 2 | {'distance': 1883, 'fare': 1883, 'time': 0} | {'distance': 1883, 'fare': 1883, 'time': 0} | Passed |
| normal control 3 | {'distance': 3, 'fare': 1175, 'time': 0} | {'distance': 3, 'fare': 1175, 'time': 0} | Passed |
| normal control 4 | {'distance': 63, 'fare': 1175, 'time': 0} | {'distance': 63, 'fare': 1175, 'time': 0} | Passed |
SHA-256 / ba1268c99afb8cb739b98a9f0595ba3814e7e96969e9da1f39271ff88254c07e
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.639012+00:00.
Case digest / 16210ef8c91ceb32fbe4bfcd01e6c5b2d27564dfdf3ca973955030651c7a4141