{"abstract":"Driver pay rises by most of the booking fee on every trip.","category":"Ride-hailing fare and surge pricing","checks":7,"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.","evaluation_group":"w2-ride-hailing-fare-surge-driver-earnings","failed_approach":"Paying the driver a quarter of the fee still leaks platform revenue.","family":"w2-ride-hailing-fare-surge-driver-earnings-booking-fee-to-driver","id":"FA-85581","implementations":{"attempt":{"sha256":"d2876716902710a53187e6bf8cba416665e20871ea12df18d55856d7a5aa8c1c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, plan):\n    surged = (trip['core'] * trip['surge'] * 2 + 10) // 20\n    share = surged * (100 - plan['commission']) // 100 + trip['booking_fee'] // 4\n    share = max(share, plan['min_pay'])\n    pay = share + trip['tolls'] + trip['tip']\n    n = plan['trips_before'] + 1\n    bonus = 0\n    for need, amount in plan['quests']:\n        if n == need:\n            bonus += amount\n    return {'pay': pay, 'bonus': bonus}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1520}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2812}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1306}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1610}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1080})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4800}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 932}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 3500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 3750})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1850}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 405}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1020}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 3950}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 2772}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 1386})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1560}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2300}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2280}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 864}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1864}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 506})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 506}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 1020}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1650}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2750}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2200}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2900}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1040})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"2943dfcfbf95029fb84361bf50d20fa7e94be8654328e205fcc0b14b7688976f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, plan):\n    surged = (trip['core'] * trip['surge'] * 2 + 10) // 20\n    share = (surged + trip['booking_fee']) * (100 - plan['commission']) // 100\n    share = max(share, plan['min_pay'])\n    pay = share + trip['tolls'] + trip['tip']\n    n = plan['trips_before'] + 1\n    bonus = 0\n    for need, amount in plan['quests']:\n        if n == need:\n            bonus += amount\n    return {'pay': pay, 'bonus': bonus}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1520}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2812}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1306}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1610}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1080})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4800}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 932}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 3500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 3750})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1850}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 405}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1020}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 3950}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 2772}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 1386})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1560}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2300}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2280}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 864}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1864}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 506})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 506}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 1020}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1650}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2750}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2200}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2900}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1040})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"7df8ea1a7f9584613fbab73a469b2bba79440670511c30ef4056ca991facec94","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(trip, plan):\n    surged = (trip['core'] * trip['surge'] * 2 + 10) // 20\n    share = surged * (100 - plan['commission']) // 100\n    share = max(share, plan['min_pay'])\n    pay = share + trip['tolls'] + trip['tip']\n    n = plan['trips_before'] + 1\n    bonus = 0\n    for need, amount in plan['quests']:\n        if n == need:\n            bonus += amount\n    return {'pay': pay, 'bonus': bonus}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1520}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2812}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1306}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1610}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 900, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1080})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4800}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 932}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 2580}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2164}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 15, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 3500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 3750})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 25, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 1850}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 405}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1020}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 200, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 3950}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 24}],\n   {'bonus': 1000, 'pay': 2772}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 20, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 4500}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 10, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 1386})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 1560}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 2500, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2300}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 1733, 'surge': 15, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 2280}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 900, 'surge': 12, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 864}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 12, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1864}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 450, 'surge': 20, 'tip': 0, 'tolls': 0},\n    {'commission': 20, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 720}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 400, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 506})],\n [('regression: booking fee to driver',\n   [{'booking_fee': 250, 'core': 450, 'surge': 15, 'tip': 0, 'tolls': 0},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 506}),\n  ('partial repair probe: booking fee to driver',\n   [{'booking_fee': 250, 'core': 900, 'surge': 10, 'tip': 0, 'tolls': 300},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 19}],\n   {'bonus': 2500, 'pay': 1020}),\n  ('second regression',\n   [{'booking_fee': 250, 'core': 900, 'surge': 20, 'tip': 0, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 3}],\n   {'bonus': 0, 'pay': 1650}),\n  ('normal control 1',\n   [{'booking_fee': 0, 'core': 1733, 'surge': 15, 'tip': 500, 'tolls': 300},\n    {'commission': 25, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 20}],\n   {'bonus': 0, 'pay': 2750}),\n  ('normal control 2',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 10, 'tip': 200, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2200}),\n  ('normal control 3',\n   [{'booking_fee': 0, 'core': 2500, 'surge': 12, 'tip': 500, 'tolls': 0},\n    {'commission': 20, 'min_pay': 700, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 9}],\n   {'bonus': 1500, 'pay': 2900}),\n  ('normal control 4',\n   [{'booking_fee': 0, 'core': 450, 'surge': 15, 'tip': 200, 'tolls': 300},\n    {'commission': 20, 'min_pay': 500, 'quests': [[10, 1500], [20, 2500], [25, 1000]], 'trips_before': 10}],\n   {'bonus': 0, 'pay': 1040})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-ride-hailing-fare-surge-driver-earnings-booking-fee-to-driver","generated_at":"2026-09-29T14:50:41.720281+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Ride-hailing prices are computed per trip at scale; ordering, unit and boundary slips become systematic over- or under-charging.","repair":"Exclude the booking fee from the driver share.","root_cause":"The platform booking fee is included in the commissionable fare.","sha256":"9aa7150c2601bcc6000d293c4d207182c4ff4da686dd128fbc9d78ad5b02e62b","title":"Booking fee shared with the driver · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.661,"exit_code":1,"observations":[{"actual":{"bonus":0,"pay":1582},"check":"regression: booking fee to driver","expected":{"bonus":0,"pay":1520},"passed":false},{"actual":{"bonus":2500,"pay":2642},"check":"partial repair probe: booking fee to driver","expected":{"bonus":2500,"pay":2580},"passed":false},{"actual":{"bonus":0,"pay":2874},"check":"second regression","expected":{"bonus":0,"pay":2812},"passed":false},{"actual":{"bonus":1000,"pay":1306},"check":"normal control 1","expected":{"bonus":1000,"pay":1306},"passed":true},{"actual":{"bonus":0,"pay":2164},"check":"normal control 2","expected":{"bonus":0,"pay":2164},"passed":true},{"actual":{"bonus":0,"pay":1610},"check":"normal control 3","expected":{"bonus":0,"pay":1610},"passed":true},{"actual":{"bonus":0,"pay":1080},"check":"normal control 4","expected":{"bonus":0,"pay":1080},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: booking fee to driver\", \"actual\": {\"pay\": 1582, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1520}, \"passed\": false}, {\"check\": \"partial repair probe: booking fee to driver\", \"actual\": {\"pay\": 2642, \"bonus\": 2500}, \"expected\": {\"bonus\": 2500, \"pay\": 2580}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"pay\": 2874, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2812}, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": {\"pay\": 1306, \"bonus\": 1000}, \"expected\": {\"bonus\": 1000, \"pay\": 1306}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"pay\": 2164, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2164}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"pay\": 1610, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1610}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"pay\": 1080, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1080}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.894,"exit_code":1,"observations":[{"actual":{"bonus":0,"pay":1720},"check":"regression: booking fee to driver","expected":{"bonus":0,"pay":1520},"passed":false},{"actual":{"bonus":2500,"pay":2780},"check":"partial repair probe: booking fee to driver","expected":{"bonus":2500,"pay":2580},"passed":false},{"actual":{"bonus":0,"pay":3000},"check":"second regression","expected":{"bonus":0,"pay":2812},"passed":false},{"actual":{"bonus":1000,"pay":1306},"check":"normal control 1","expected":{"bonus":1000,"pay":1306},"passed":true},{"actual":{"bonus":0,"pay":2164},"check":"normal control 2","expected":{"bonus":0,"pay":2164},"passed":true},{"actual":{"bonus":0,"pay":1610},"check":"normal control 3","expected":{"bonus":0,"pay":1610},"passed":true},{"actual":{"bonus":0,"pay":1080},"check":"normal control 4","expected":{"bonus":0,"pay":1080},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: booking fee to driver\", \"actual\": {\"pay\": 1720, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1520}, \"passed\": false}, {\"check\": \"partial repair probe: booking fee to driver\", \"actual\": {\"pay\": 2780, \"bonus\": 2500}, \"expected\": {\"bonus\": 2500, \"pay\": 2580}, \"passed\": false}, {\"check\": \"second regression\", \"actual\": {\"pay\": 3000, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2812}, \"passed\": false}, {\"check\": \"normal control 1\", \"actual\": {\"pay\": 1306, \"bonus\": 1000}, \"expected\": {\"bonus\": 1000, \"pay\": 1306}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"pay\": 2164, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2164}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"pay\": 1610, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1610}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"pay\": 1080, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1080}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.767,"exit_code":0,"observations":[{"actual":{"bonus":0,"pay":1520},"check":"regression: booking fee to driver","expected":{"bonus":0,"pay":1520},"passed":true},{"actual":{"bonus":2500,"pay":2580},"check":"partial repair probe: booking fee to driver","expected":{"bonus":2500,"pay":2580},"passed":true},{"actual":{"bonus":0,"pay":2812},"check":"second regression","expected":{"bonus":0,"pay":2812},"passed":true},{"actual":{"bonus":1000,"pay":1306},"check":"normal control 1","expected":{"bonus":1000,"pay":1306},"passed":true},{"actual":{"bonus":0,"pay":2164},"check":"normal control 2","expected":{"bonus":0,"pay":2164},"passed":true},{"actual":{"bonus":0,"pay":1610},"check":"normal control 3","expected":{"bonus":0,"pay":1610},"passed":true},{"actual":{"bonus":0,"pay":1080},"check":"normal control 4","expected":{"bonus":0,"pay":1080},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: booking fee to driver\", \"actual\": {\"pay\": 1520, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1520}, \"passed\": true}, {\"check\": \"partial repair probe: booking fee to driver\", \"actual\": {\"pay\": 2580, \"bonus\": 2500}, \"expected\": {\"bonus\": 2500, \"pay\": 2580}, \"passed\": true}, {\"check\": \"second regression\", \"actual\": {\"pay\": 2812, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2812}, \"passed\": true}, {\"check\": \"normal control 1\", \"actual\": {\"pay\": 1306, \"bonus\": 1000}, \"expected\": {\"bonus\": 1000, \"pay\": 1306}, \"passed\": true}, {\"check\": \"normal control 2\", \"actual\": {\"pay\": 2164, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 2164}, \"passed\": true}, {\"check\": \"normal control 3\", \"actual\": {\"pay\": 1610, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1610}, \"passed\": true}, {\"check\": \"normal control 4\", \"actual\": {\"pay\": 1080, \"bonus\": 0}, \"expected\": {\"bonus\": 0, \"pay\": 1080}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}