FA-85801 / Ride-hailing fare and surge pricing / Open access
Member discount applied to fees · case 01
Members get 10% off the booking fee as well.
ROOT CAUSE
The discount base includes fees.
VERIFIED REPAIR
Discount only the surged fare.
Unsuccessful approach: Subtracting the fee share after flooring leaves a cent of fee discount on some fares.
Case contract
Membership is active if the flag is set and today is on or before the expiry day. Active members have surge capped at 2.0x (20 tenths) and, when the (capped) surge is at most 1.5x, get 10% off the surged fare (floored); fees are never discounted. Return the amount due in cents.
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(fare, member, now):
active = member['active'] and now <= member['expires']
surge = fare['surge']
if active:
surge = min(surge, 20)
surged = (fare['core'] * surge * 2 + 10) // 20
disc = 0
if active and surge <= 15:
disc = (surged + fare['fees']) // 10
return surged - disc + fare['fees']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: fees excluded from discount',
[{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1578),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('second regression', [{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99],
1578),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3702),
('normal control 2', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1481),
('normal control 4', [{'core': 1000, 'fees': 199, 'surge': 17}, {'active': False, 'expires': 100}, 99],
1899)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 1325),
('second regression', [{'core': 2555, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100],
3695),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 12}, {'active': False, 'expires': 100}, 100],
3316),
('normal control 2', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 3', [{'core': 2555, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 99], 3450),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1945)],
[('regression: fees excluded from discount',
[{'core': 1000, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1595),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1145),
('second regression', [{'core': 999, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99],
1595),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1481),
('normal control 2', [{'core': 1234, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2718),
('normal control 3', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 4', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2468)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 3005),
('second regression', [{'core': 999, 'fees': 250, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1150),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1700),
('normal control 2', [{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 101],
2297),
('normal control 3', [{'core': 2555, 'fees': 245, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 4', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355)],
[('regression: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1325),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 12}, {'active': True, 'expires': 100}, 99], 2959),
('second regression', [{'core': 1000, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1145),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 3', [{'core': 1234, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 100],
3330),
('normal control 4', [{'core': 999, 'fees': 0, 'surge': 15}, {'active': False, 'expires': 100}, 99], 1499)]]
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: fees excluded from discount | 1554 | 1578 | Failed |
| partial repair probe: fees excluded from discount | 2520 | 2545 | Failed |
| second regression | 1554 | 1578 | Failed |
| normal control 1 | 3702 | 3702 | Passed |
| normal control 2 | 2748 | 2748 | Passed |
| normal control 3 | 1481 | 1481 | Passed |
| normal control 4 | 1899 | 1899 | Passed |
SHA-256 / 70df2f3e8816806ff1d36c7450dd0e466c1715497a3f36dee6bc0633046d1d2a
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(fare, member, now):
active = member['active'] and now <= member['expires']
surge = fare['surge']
if active:
surge = min(surge, 20)
surged = (fare['core'] * surge * 2 + 10) // 20
disc = 0
if active and surge <= 15:
disc = (surged + fare['fees']) // 10 - fare['fees'] // 10
return surged - disc + fare['fees']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: fees excluded from discount',
[{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1578),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('second regression', [{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99],
1578),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3702),
('normal control 2', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1481),
('normal control 4', [{'core': 1000, 'fees': 199, 'surge': 17}, {'active': False, 'expires': 100}, 99],
1899)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 1325),
('second regression', [{'core': 2555, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100],
3695),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 12}, {'active': False, 'expires': 100}, 100],
3316),
('normal control 2', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 3', [{'core': 2555, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 99], 3450),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1945)],
[('regression: fees excluded from discount',
[{'core': 1000, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1595),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1145),
('second regression', [{'core': 999, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99],
1595),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1481),
('normal control 2', [{'core': 1234, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2718),
('normal control 3', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 4', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2468)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 3005),
('second regression', [{'core': 999, 'fees': 250, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1150),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1700),
('normal control 2', [{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 101],
2297),
('normal control 3', [{'core': 2555, 'fees': 245, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 4', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355)],
[('regression: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1325),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 12}, {'active': True, 'expires': 100}, 99], 2959),
('second regression', [{'core': 1000, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1145),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 3', [{'core': 1234, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 100],
3330),
('normal control 4', [{'core': 999, 'fees': 0, 'surge': 15}, {'active': False, 'expires': 100}, 99], 1499)]]
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: fees excluded from discount | 1578 | 1578 | Passed |
| partial repair probe: fees excluded from discount | 2544 | 2545 | Failed |
| second regression | 1578 | 1578 | Passed |
| normal control 1 | 3702 | 3702 | Passed |
| normal control 2 | 2748 | 2748 | Passed |
| normal control 3 | 1481 | 1481 | Passed |
| normal control 4 | 1899 | 1899 | Passed |
SHA-256 / 30c252efe6b101ac3c1eceb088b4ed0f337da8e0f237b884bfc54fc30c4dc01f
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(fare, member, now):
active = member['active'] and now <= member['expires']
surge = fare['surge']
if active:
surge = min(surge, 20)
surged = (fare['core'] * surge * 2 + 10) // 20
disc = 0
if active and surge <= 15:
disc = surged // 10
return surged - disc + fare['fees']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: fees excluded from discount',
[{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1578),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('second regression', [{'core': 1234, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99],
1578),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 3702),
('normal control 2', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1481),
('normal control 4', [{'core': 1000, 'fees': 199, 'surge': 17}, {'active': False, 'expires': 100}, 99],
1899)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 1325),
('second regression', [{'core': 2555, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100],
3695),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 12}, {'active': False, 'expires': 100}, 100],
3316),
('normal control 2', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 3', [{'core': 2555, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 99], 3450),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1945)],
[('regression: fees excluded from discount',
[{'core': 1000, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1595),
('partial repair probe: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1145),
('second regression', [{'core': 999, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 99],
1595),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1481),
('normal control 2', [{'core': 1234, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2718),
('normal control 3', [{'core': 999, 'fees': 250, 'surge': 25}, {'active': False, 'expires': 100}, 100],
2748),
('normal control 4', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2468)],
[('regression: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100], 2545),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 99], 3005),
('second regression', [{'core': 999, 'fees': 250, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1150),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1700),
('normal control 2', [{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 101],
2297),
('normal control 3', [{'core': 2555, 'fees': 245, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5355),
('normal control 4', [{'core': 2555, 'fees': 245, 'surge': 20}, {'active': True, 'expires': 100}, 100],
5355)],
[('regression: fees excluded from discount',
[{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1325),
('partial repair probe: fees excluded from discount',
[{'core': 2555, 'fees': 199, 'surge': 12}, {'active': True, 'expires': 100}, 99], 2959),
('second regression', [{'core': 1000, 'fees': 245, 'surge': 10}, {'active': True, 'expires': 100}, 100],
1145),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 3', [{'core': 1234, 'fees': 245, 'surge': 25}, {'active': False, 'expires': 100}, 100],
3330),
('normal control 4', [{'core': 999, 'fees': 0, 'surge': 15}, {'active': False, 'expires': 100}, 99], 1499)]]
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: fees excluded from discount | 1578 | 1578 | Passed |
| partial repair probe: fees excluded from discount | 2545 | 2545 | Passed |
| second regression | 1578 | 1578 | Passed |
| normal control 1 | 3702 | 3702 | Passed |
| normal control 2 | 2748 | 2748 | Passed |
| normal control 3 | 1481 | 1481 | Passed |
| normal control 4 | 1899 | 1899 | Passed |
SHA-256 / d82be244b44a901524db41efaab076ab9d562ba1313e54bee707ce56980c74e5
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:43.728740+00:00.
Case digest / b81695931fab73fa57e9165b69cacbb1f4c6764580f597ff0b2c929a6c7c9c3d