FAILURE MAP
← Case archive

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.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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