FAILURE MAP
← Case archive

FA-85621 / Ride-hailing fare and surge pricing / Open access

Request stamped before its quote treated as locked · case 01

Replayed or skewed requests reuse quotes that were not yet issued.

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

ROOT CAUSE

Negative elapsed times pass the validity test.

VERIFIED REPAIR

Require elapsed to be non-negative.

Unsuccessful approach: Accepting absolute skew still honors requests that predate the quote.

Case contract

A fare quote locks its surge for 300 seconds: requests with 0 <= elapsed < 300 seconds are locked (a request timestamped before the quote, from clock skew, is not). A locked request uses the lower of the quoted and current surge; otherwise the current surge. Price = core x surge / 10, half up. Return [price, locked|requoted].

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(quote, request_t, current_surge):
    elapsed = request_t - quote['t']
    valid = elapsed < 300
    used = min(quote['surge'], current_surge) if valid else current_surge
    price = (quote['core'] * used * 2 + 10) // 20
    return [price, 'locked' if valid else 'requoted']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 25],
   [2778, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 15, 't': 5000}, 4995, 25], [6250, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5000, 12], [999, 'locked']),
  ('normal control 2', [{'core': 2500, 'surge': 20, 't': 5000}, 5900, 15], [3750, 'requoted']),
  ('normal control 3', [{'core': 2500, 'surge': 10, 't': 5000}, 5000, 25], [2500, 'locked']),
  ('normal control 4', [{'core': 999, 'surge': 15, 't': 5000}, 5300, 12], [1199, 'requoted'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 12], [1333, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 10], [2500, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 15], [1499, 'requoted']),
  ('normal control 2', [{'core': 1111, 'surge': 10, 't': 5000}, 5299, 12], [1111, 'locked']),
  ('normal control 3', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5120, 12], [1333, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 15, 't': 5000}, 4995, 15], [1667, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 20], [1998, 'requoted']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5299, 20], [999, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5900, 10], [1111, 'requoted'])],
 [('regression: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 10], [999, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 20, 't': 5000}, 4995, 25], [2778, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 20], [1667, 'locked']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5301, 12], [1199, 'requoted']),
  ('normal control 4', [{'core': 1111, 'surge': 15, 't': 5000}, 5000, 15], [1667, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 20],
   [5000, 'requoted']),
  ('second regression', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 15, 't': 5000}, 5299, 10], [999, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 12], [1333, 'locked']),
  ('normal control 3', [{'core': 1111, 'surge': 15, 't': 5000}, 5300, 20], [2222, 'requoted']),
  ('normal control 4', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 15], [2500, 'locked'])]]
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: clock skew[1499, 'locked'][1998, 'requoted']Failed
partial repair probe: clock skew[1111, 'locked'][2778, 'requoted']Failed
second regression[3750, 'locked'][6250, 'requoted']Failed
normal control 1[999, 'locked'][999, 'locked']Passed
normal control 2[3750, 'requoted'][3750, 'requoted']Passed
normal control 3[2500, 'locked'][2500, 'locked']Passed
normal control 4[1199, 'requoted'][1199, 'requoted']Passed

SHA-256 / fb57cd7be42d6646d9c7f56d9972e831d7e8f46e7b018b73b7de374ec1a3f748

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(quote, request_t, current_surge):
    elapsed = request_t - quote['t']
    valid = abs(elapsed) < 300
    used = min(quote['surge'], current_surge) if valid else current_surge
    price = (quote['core'] * used * 2 + 10) // 20
    return [price, 'locked' if valid else 'requoted']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 25],
   [2778, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 15, 't': 5000}, 4995, 25], [6250, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5000, 12], [999, 'locked']),
  ('normal control 2', [{'core': 2500, 'surge': 20, 't': 5000}, 5900, 15], [3750, 'requoted']),
  ('normal control 3', [{'core': 2500, 'surge': 10, 't': 5000}, 5000, 25], [2500, 'locked']),
  ('normal control 4', [{'core': 999, 'surge': 15, 't': 5000}, 5300, 12], [1199, 'requoted'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 12], [1333, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 10], [2500, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 15], [1499, 'requoted']),
  ('normal control 2', [{'core': 1111, 'surge': 10, 't': 5000}, 5299, 12], [1111, 'locked']),
  ('normal control 3', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5120, 12], [1333, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 15, 't': 5000}, 4995, 15], [1667, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 20], [1998, 'requoted']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5299, 20], [999, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5900, 10], [1111, 'requoted'])],
 [('regression: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 10], [999, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 20, 't': 5000}, 4995, 25], [2778, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 20], [1667, 'locked']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5301, 12], [1199, 'requoted']),
  ('normal control 4', [{'core': 1111, 'surge': 15, 't': 5000}, 5000, 15], [1667, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 20],
   [5000, 'requoted']),
  ('second regression', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 15, 't': 5000}, 5299, 10], [999, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 12], [1333, 'locked']),
  ('normal control 3', [{'core': 1111, 'surge': 15, 't': 5000}, 5300, 20], [2222, 'requoted']),
  ('normal control 4', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 15], [2500, 'locked'])]]
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: clock skew[1499, 'locked'][1998, 'requoted']Failed
partial repair probe: clock skew[1111, 'locked'][2778, 'requoted']Failed
second regression[3750, 'locked'][6250, 'requoted']Failed
normal control 1[999, 'locked'][999, 'locked']Passed
normal control 2[3750, 'requoted'][3750, 'requoted']Passed
normal control 3[2500, 'locked'][2500, 'locked']Passed
normal control 4[1199, 'requoted'][1199, 'requoted']Passed

SHA-256 / 011256d1d8361a7475007f115a9a7d75690f357e61eb0812f91ade748c079545

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(quote, request_t, current_surge):
    elapsed = request_t - quote['t']
    valid = 0 <= elapsed < 300
    used = min(quote['surge'], current_surge) if valid else current_surge
    price = (quote['core'] * used * 2 + 10) // 20
    return [price, 'locked' if valid else 'requoted']
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 25],
   [2778, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 15, 't': 5000}, 4995, 25], [6250, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5000, 12], [999, 'locked']),
  ('normal control 2', [{'core': 2500, 'surge': 20, 't': 5000}, 5900, 15], [3750, 'requoted']),
  ('normal control 3', [{'core': 2500, 'surge': 10, 't': 5000}, 5000, 25], [2500, 'locked']),
  ('normal control 4', [{'core': 999, 'surge': 15, 't': 5000}, 5300, 12], [1199, 'requoted'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 12], [1333, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 20], [1998, 'requoted']),
  ('second regression', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 10], [2500, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 15], [1499, 'requoted']),
  ('normal control 2', [{'core': 1111, 'surge': 10, 't': 5000}, 5299, 12], [1111, 'locked']),
  ('normal control 3', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5120, 12], [1333, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 15, 't': 5000}, 4995, 15], [1667, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 999, 'surge': 10, 't': 5000}, 5300, 20], [1998, 'requoted']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5299, 20], [999, 'locked']),
  ('normal control 4', [{'core': 1111, 'surge': 20, 't': 5000}, 5900, 10], [1111, 'requoted'])],
 [('regression: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 999, 'surge': 20, 't': 5000}, 4995, 10], [999, 'requoted']),
  ('second regression', [{'core': 1111, 'surge': 20, 't': 5000}, 4995, 25], [2778, 'requoted']),
  ('normal control 1', [{'core': 2500, 'surge': 15, 't': 5000}, 5001, 10], [2500, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 20], [1667, 'locked']),
  ('normal control 3', [{'core': 999, 'surge': 10, 't': 5000}, 5301, 12], [1199, 'requoted']),
  ('normal control 4', [{'core': 1111, 'surge': 15, 't': 5000}, 5000, 15], [1667, 'locked'])],
 [('regression: clock skew', [{'core': 1111, 'surge': 10, 't': 5000}, 4995, 20], [2222, 'requoted']),
  ('partial repair probe: clock skew', [{'core': 2500, 'surge': 10, 't': 5000}, 4995, 20],
   [5000, 'requoted']),
  ('second regression', [{'core': 999, 'surge': 15, 't': 5000}, 4995, 25], [2498, 'requoted']),
  ('normal control 1', [{'core': 999, 'surge': 15, 't': 5000}, 5299, 10], [999, 'locked']),
  ('normal control 2', [{'core': 1111, 'surge': 15, 't': 5000}, 5120, 12], [1333, 'locked']),
  ('normal control 3', [{'core': 1111, 'surge': 15, 't': 5000}, 5300, 20], [2222, 'requoted']),
  ('normal control 4', [{'core': 2500, 'surge': 10, 't': 5000}, 5299, 15], [2500, 'locked'])]]
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: clock skew[1998, 'requoted'][1998, 'requoted']Passed
partial repair probe: clock skew[2778, 'requoted'][2778, 'requoted']Passed
second regression[6250, 'requoted'][6250, 'requoted']Passed
normal control 1[999, 'locked'][999, 'locked']Passed
normal control 2[3750, 'requoted'][3750, 'requoted']Passed
normal control 3[2500, 'locked'][2500, 'locked']Passed
normal control 4[1199, 'requoted'][1199, 'requoted']Passed

SHA-256 / 497ff1a3ccf8fd55caff22a2bb24bb09d320dc73157e5d8b41bb8975f246c653

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:42.179376+00:00.

Case digest / 79552d2374ab3ae6e5cc2289842a9547b3b76f549f8d8defce5c990fed3b1068