FA-85581 / Ride-hailing fare and surge pricing / Open access
Booking fee shared with the driver · case 01
Driver pay rises by most of the booking fee on every trip.
ROOT CAUSE
The platform booking fee is included in the commissionable fare.
VERIFIED REPAIR
Exclude the booking fee from the driver share.
Unsuccessful approach: Paying the driver a quarter of the fee still leaks platform revenue.
Case contract
Driver pay per trip in cents: the surged core fare (core x surge tenths, half up) minus the commission percentage (floored), raised to min_pay if lower; tolls and tips pass through untouched and are outside commission and the minimum; the booking fee is platform revenue. A quest bonus is paid when this trip is exactly the Nth trip for a quest threshold N (trips_before + 1 == N). Return pay and bonus.
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, plan):
surged = (trip['core'] * trip['surge'] * 2 + 10) // 20
share = (surged + trip['booking_fee']) * (100 - plan['commission']) // 100
share = max(share, plan['min_pay'])
pay = share + trip['tolls'] + trip['tip']
n = plan['trips_before'] + 1
bonus = 0
for need, amount in plan['quests']:
if n == need:
bonus += amount
return {'pay': pay, 'bonus': bonus}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1520}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('second regression',
[{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2812}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1306}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1610}),
('normal control 4',
[{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1080})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4800}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 932}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 3500}),
('normal control 4',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 3750})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1850}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 405}),
('second regression',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1020}),
('normal control 1',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 3950}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 2772}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4500}),
('normal control 4',
[{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 1386})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1560}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2300}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2280}),
('normal control 1',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 864}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1864}),
('normal control 3',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 506})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 506}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 1020}),
('second regression',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1650}),
('normal control 1',
[{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2750}),
('normal control 2',
[{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2200}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2900}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1040})]]
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: booking fee to driver | {'bonus': 0, 'pay': 1720} | {'bonus': 0, 'pay': 1520} | Failed |
| partial repair probe: booking fee to driver | {'bonus': 2500, 'pay': 2780} | {'bonus': 2500, 'pay': 2580} | Failed |
| second regression | {'bonus': 0, 'pay': 3000} | {'bonus': 0, 'pay': 2812} | Failed |
| normal control 1 | {'bonus': 1000, 'pay': 1306} | {'bonus': 1000, 'pay': 1306} | Passed |
| normal control 2 | {'bonus': 0, 'pay': 2164} | {'bonus': 0, 'pay': 2164} | Passed |
| normal control 3 | {'bonus': 0, 'pay': 1610} | {'bonus': 0, 'pay': 1610} | Passed |
| normal control 4 | {'bonus': 0, 'pay': 1080} | {'bonus': 0, 'pay': 1080} | Passed |
SHA-256 / 2943dfcfbf95029fb84361bf50d20fa7e94be8654328e205fcc0b14b7688976f
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(trip, plan):
surged = (trip['core'] * trip['surge'] * 2 + 10) // 20
share = surged * (100 - plan['commission']) // 100 + trip['booking_fee'] // 4
share = max(share, plan['min_pay'])
pay = share + trip['tolls'] + trip['tip']
n = plan['trips_before'] + 1
bonus = 0
for need, amount in plan['quests']:
if n == need:
bonus += amount
return {'pay': pay, 'bonus': bonus}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1520}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('second regression',
[{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2812}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1306}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1610}),
('normal control 4',
[{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1080})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4800}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 932}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 3500}),
('normal control 4',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 3750})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1850}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 405}),
('second regression',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1020}),
('normal control 1',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 3950}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 2772}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4500}),
('normal control 4',
[{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 1386})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1560}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2300}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2280}),
('normal control 1',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 864}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1864}),
('normal control 3',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 506})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 506}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 1020}),
('second regression',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1650}),
('normal control 1',
[{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2750}),
('normal control 2',
[{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2200}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2900}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1040})]]
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: booking fee to driver | {'bonus': 0, 'pay': 1582} | {'bonus': 0, 'pay': 1520} | Failed |
| partial repair probe: booking fee to driver | {'bonus': 2500, 'pay': 2642} | {'bonus': 2500, 'pay': 2580} | Failed |
| second regression | {'bonus': 0, 'pay': 2874} | {'bonus': 0, 'pay': 2812} | Failed |
| normal control 1 | {'bonus': 1000, 'pay': 1306} | {'bonus': 1000, 'pay': 1306} | Passed |
| normal control 2 | {'bonus': 0, 'pay': 2164} | {'bonus': 0, 'pay': 2164} | Passed |
| normal control 3 | {'bonus': 0, 'pay': 1610} | {'bonus': 0, 'pay': 1610} | Passed |
| normal control 4 | {'bonus': 0, 'pay': 1080} | {'bonus': 0, 'pay': 1080} | Passed |
SHA-256 / d2876716902710a53187e6bf8cba416665e20871ea12df18d55856d7a5aa8c1c
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(trip, plan):
surged = (trip['core'] * trip['surge'] * 2 + 10) // 20
share = surged * (100 - plan['commission']) // 100
share = max(share, plan['min_pay'])
pay = share + trip['tolls'] + trip['tip']
n = plan['trips_before'] + 1
bonus = 0
for need, amount in plan['quests']:
if n == need:
bonus += amount
return {'pay': pay, 'bonus': bonus}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1520}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('second regression',
[{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2812}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1306}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1610}),
('normal control 4',
[{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1080})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4800}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 932}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 2580}),
('normal control 1',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2164}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 3500}),
('normal control 4',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 3750})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 1850}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 405}),
('second regression',
[{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1020}),
('normal control 1',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 3950}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],
{'bonus': 1000, 'pay': 2772}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 4500}),
('normal control 4',
[{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 1386})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 1560}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2300}),
('second regression',
[{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 2280}),
('normal control 1',
[{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 864}),
('normal control 2',
[{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1864}),
('normal control 3',
[{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},
{'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 720}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 506})],
[('regression: booking fee to driver',
[{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 506}),
('partial repair probe: booking fee to driver',
[{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],
{'bonus': 2500, 'pay': 1020}),
('second regression',
[{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],
{'bonus': 0, 'pay': 1650}),
('normal control 1',
[{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},
{'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],
{'bonus': 0, 'pay': 2750}),
('normal control 2',
[{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2200}),
('normal control 3',
[{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},
{'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],
{'bonus': 1500, 'pay': 2900}),
('normal control 4',
[{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},
{'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],
{'bonus': 0, 'pay': 1040})]]
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: booking fee to driver | {'bonus': 0, 'pay': 1520} | {'bonus': 0, 'pay': 1520} | Passed |
| partial repair probe: booking fee to driver | {'bonus': 2500, 'pay': 2580} | {'bonus': 2500, 'pay': 2580} | Passed |
| second regression | {'bonus': 0, 'pay': 2812} | {'bonus': 0, 'pay': 2812} | Passed |
| normal control 1 | {'bonus': 1000, 'pay': 1306} | {'bonus': 1000, 'pay': 1306} | Passed |
| normal control 2 | {'bonus': 0, 'pay': 2164} | {'bonus': 0, 'pay': 2164} | Passed |
| normal control 3 | {'bonus': 0, 'pay': 1610} | {'bonus': 0, 'pay': 1610} | Passed |
| normal control 4 | {'bonus': 0, 'pay': 1080} | {'bonus': 0, 'pay': 1080} | Passed |
SHA-256 / 7df8ea1a7f9584613fbab73a469b2bba79440670511c30ef4056ca991facec94
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:41.720281+00:00.
Case digest / 9aa7150c2601bcc6000d293c4d207182c4ff4da686dd128fbc9d78ad5b02e62b