FA-85796 / Ride-hailing fare and surge pricing / Open access
No member discount at exactly 1.5x · case 01
Members lose the 10% discount at 1.5x surge.
ROOT CAUSE
The discount eligibility test is strict.
VERIFIED REPAIR
Discount when surge is at most 15 tenths.
Unsuccessful approach: Testing the raw surge below 2.0x discounts 1.7x trips.
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 // 10
return surged - disc + fare['fees']
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1865),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 1899),
('second regression', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1897),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 25}, {'active': False, 'expires': 100}, 99], 2500),
('normal control 2', [{'core': 2555, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 7665),
('normal control 3', [{'core': 999, 'fees': 0, 'surge': 17}, {'active': False, 'expires': 100}, 99], 1698),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 101],
3250)],
[('regression: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100], 2297),
('second regression', [{'core': 1000, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1549),
('normal control 1', [{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100],
1325),
('normal control 2', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1333),
('normal control 3', [{'core': 1234, 'fees': 199, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1680),
('normal control 4', [{'core': 999, 'fees': 245, 'surge': 25}, {'active': True, 'expires': 100}, 99],
2243)],
[('regression: discount surge boundary',
[{'core': 999, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1549),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1945),
('second regression', [{'core': 1234, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
2348),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1111),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2250),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 99], 2468),
('normal control 4', [{'core': 1000, 'fees': 0, 'surge': 30}, {'active': False, 'expires': 100}, 100],
3000)],
[('regression: discount surge boundary',
[{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('partial repair probe: discount surge boundary',
[{'core': 999, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1943),
('second regression', [{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1865),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5360),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 1998),
('normal control 3', [{'core': 2555, 'fees': 250, 'surge': 20}, {'active': True, 'expires': 100}, 99],
5360),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1445)],
[('regression: discount surge boundary',
[{'core': 1234, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1911),
('partial repair probe: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 4543),
('second regression', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 2000),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 25}, {'active': True, 'expires': 100}, 99], 1998),
('normal control 3', [{'core': 999, 'fees': 199, 'surge': 20}, {'active': True, 'expires': 100}, 100],
2197),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 12}, {'active': True, 'expires': 100}, 101],
1450)]]
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: discount surge boundary | 2050 | 1865 | Failed |
| partial repair probe: discount surge boundary | 1899 | 1899 | Passed |
| second regression | 1897 | 1897 | Passed |
| normal control 1 | 2500 | 2500 | Passed |
| normal control 2 | 7665 | 7665 | Passed |
| normal control 3 | 1698 | 1698 | Passed |
| normal control 4 | 3250 | 3250 | Passed |
SHA-256 / 0dd213092a035dd1751501495b9e9cc6e52da0cbdcdb420a029dca346bb268d4
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 fare['surge'] < 20:
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: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1865),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 1899),
('second regression', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1897),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 25}, {'active': False, 'expires': 100}, 99], 2500),
('normal control 2', [{'core': 2555, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 7665),
('normal control 3', [{'core': 999, 'fees': 0, 'surge': 17}, {'active': False, 'expires': 100}, 99], 1698),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 101],
3250)],
[('regression: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100], 2297),
('second regression', [{'core': 1000, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1549),
('normal control 1', [{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100],
1325),
('normal control 2', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1333),
('normal control 3', [{'core': 1234, 'fees': 199, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1680),
('normal control 4', [{'core': 999, 'fees': 245, 'surge': 25}, {'active': True, 'expires': 100}, 99],
2243)],
[('regression: discount surge boundary',
[{'core': 999, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1549),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1945),
('second regression', [{'core': 1234, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
2348),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1111),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2250),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 99], 2468),
('normal control 4', [{'core': 1000, 'fees': 0, 'surge': 30}, {'active': False, 'expires': 100}, 100],
3000)],
[('regression: discount surge boundary',
[{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('partial repair probe: discount surge boundary',
[{'core': 999, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1943),
('second regression', [{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1865),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5360),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 1998),
('normal control 3', [{'core': 2555, 'fees': 250, 'surge': 20}, {'active': True, 'expires': 100}, 99],
5360),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1445)],
[('regression: discount surge boundary',
[{'core': 1234, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1911),
('partial repair probe: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 4543),
('second regression', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 2000),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 25}, {'active': True, 'expires': 100}, 99], 1998),
('normal control 3', [{'core': 999, 'fees': 199, 'surge': 20}, {'active': True, 'expires': 100}, 100],
2197),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 12}, {'active': True, 'expires': 100}, 101],
1450)]]
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: discount surge boundary | 1865 | 1865 | Passed |
| partial repair probe: discount surge boundary | 1729 | 1899 | Failed |
| second regression | 1728 | 1897 | Failed |
| normal control 1 | 2500 | 2500 | Passed |
| normal control 2 | 7665 | 7665 | Passed |
| normal control 3 | 1698 | 1698 | Passed |
| normal control 4 | 3250 | 3250 | Passed |
SHA-256 / d1bfdbd11e14429e40988ac60f1d3e7f2a1a1a502b478df5adfed51695a16a35
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: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 99], 1865),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 1899),
('second regression', [{'core': 999, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1897),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 25}, {'active': False, 'expires': 100}, 99], 2500),
('normal control 2', [{'core': 2555, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 101], 7665),
('normal control 3', [{'core': 999, 'fees': 0, 'surge': 17}, {'active': False, 'expires': 100}, 99], 1698),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 101],
3250)],
[('regression: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 3649),
('partial repair probe: discount surge boundary',
[{'core': 1234, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 100], 2297),
('second regression', [{'core': 1000, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1549),
('normal control 1', [{'core': 999, 'fees': 245, 'surge': 12}, {'active': True, 'expires': 100}, 100],
1325),
('normal control 2', [{'core': 1234, 'fees': 0, 'surge': 12}, {'active': True, 'expires': 100}, 100], 1333),
('normal control 3', [{'core': 1234, 'fees': 199, 'surge': 12}, {'active': False, 'expires': 100}, 101],
1680),
('normal control 4', [{'core': 999, 'fees': 245, 'surge': 25}, {'active': True, 'expires': 100}, 99],
2243)],
[('regression: discount surge boundary',
[{'core': 999, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1549),
('partial repair probe: discount surge boundary',
[{'core': 1000, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1945),
('second regression', [{'core': 1234, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
2348),
('normal control 1', [{'core': 1234, 'fees': 0, 'surge': 10}, {'active': True, 'expires': 100}, 99], 1111),
('normal control 2', [{'core': 1000, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
2250),
('normal control 3', [{'core': 1234, 'fees': 0, 'surge': 30}, {'active': True, 'expires': 100}, 99], 2468),
('normal control 4', [{'core': 1000, 'fees': 0, 'surge': 30}, {'active': False, 'expires': 100}, 100],
3000)],
[('regression: discount surge boundary',
[{'core': 1000, 'fees': 0, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1350),
('partial repair probe: discount surge boundary',
[{'core': 999, 'fees': 245, 'surge': 17}, {'active': True, 'expires': 100}, 100], 1943),
('second regression', [{'core': 1234, 'fees': 199, 'surge': 15}, {'active': True, 'expires': 100}, 100],
1865),
('normal control 1', [{'core': 2555, 'fees': 250, 'surge': 30}, {'active': True, 'expires': 100}, 100],
5360),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 1998),
('normal control 3', [{'core': 2555, 'fees': 250, 'surge': 20}, {'active': True, 'expires': 100}, 99],
5360),
('normal control 4', [{'core': 1000, 'fees': 245, 'surge': 12}, {'active': False, 'expires': 100}, 100],
1445)],
[('regression: discount surge boundary',
[{'core': 1234, 'fees': 245, 'surge': 15}, {'active': True, 'expires': 100}, 100], 1911),
('partial repair probe: discount surge boundary',
[{'core': 2555, 'fees': 199, 'surge': 17}, {'active': True, 'expires': 100}, 99], 4543),
('second regression', [{'core': 1000, 'fees': 250, 'surge': 17}, {'active': True, 'expires': 100}, 100],
1950),
('normal control 1', [{'core': 1000, 'fees': 0, 'surge': 20}, {'active': True, 'expires': 100}, 100], 2000),
('normal control 2', [{'core': 999, 'fees': 0, 'surge': 25}, {'active': True, 'expires': 100}, 99], 1998),
('normal control 3', [{'core': 999, 'fees': 199, 'surge': 20}, {'active': True, 'expires': 100}, 100],
2197),
('normal control 4', [{'core': 1000, 'fees': 250, 'surge': 12}, {'active': True, 'expires': 100}, 101],
1450)]]
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: discount surge boundary | 1865 | 1865 | Passed |
| partial repair probe: discount surge boundary | 1899 | 1899 | Passed |
| second regression | 1897 | 1897 | Passed |
| normal control 1 | 2500 | 2500 | Passed |
| normal control 2 | 7665 | 7665 | Passed |
| normal control 3 | 1698 | 1698 | Passed |
| normal control 4 | 3250 | 3250 | Passed |
SHA-256 / 93873b64a249ed4bbdc35492d722013477f97f7f399eb53bc419363f05f487dd
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.722005+00:00.
Case digest / c697324e963ccb886cee9026c0bbb4267d929c16ea9638db4d82cad32a4ebb92