FAILURE MAP
← Case archive

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

Free waiting pooled across all stops · case 01

Two 2-minute stops are billed although each is within its allowance.

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

ROOT CAUSE

Waits are summed and the allowance is granted only once.

VERIFIED REPAIR

Apply the free allowance and minute rounding per stop.

Unsuccessful approach: Pooling with a per-stop allowance still lets one long stop use another stop's allowance.

Case contract

Intermediate stops each add stop_fee; up to max_stops stops are allowed, more is an error. Each stop has its own free waiting allowance of free_wait seconds; waiting beyond it at that stop is billed per started minute at per_min. Return the stop fee total 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(stops, policy):
    if len(stops) > policy['max_stops']:
        return {'error': 'too_many_stops'}
    waits = [s['wait_s'] for s in stops]
    fee = policy['stop_fee'] * len(stops)
    for w in [sum(waits)]:
        over = w - policy['free_wait']
        if over > 0:
            fee += -(-over // 60) * policy['per_min']
    return {'fee': fee}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 181}, {'wait_s': 420}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 380}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 770}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 170}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 100})],
 [('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 200}),
  ('normal control 4', [[{'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 810}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 480}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('normal control 1',
   [[{'wait_s': 0}, {'wait_s': 180}, {'wait_s': 420}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 60}, {'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 220})],
 [('regression: per-stop free wait',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 420}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 540}),
  ('second regression',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0})]]
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: per-stop free wait{'fee': 570}{'fee': 390}Failed
partial repair probe: per-stop free wait{'fee': 460}{'fee': 460}Passed
second regression{'fee': 540}{'fee': 390}Failed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 0}{'fee': 0}Passed
normal control 3{'error': 'too_many_stops'}{'error': 'too_many_stops'}Passed
normal control 4{'fee': 150}{'fee': 150}Passed

SHA-256 / 9111bdc60aa37a3910b68d1d148fa96ebb47772323497fe44c5cb6f426a0b5e4

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(stops, policy):
    if len(stops) > policy['max_stops']:
        return {'error': 'too_many_stops'}
    waits = [s['wait_s'] for s in stops]
    fee = policy['stop_fee'] * len(stops)
    for w in [sum(waits) - policy['free_wait'] * (len(waits) - 1)]:
        over = w - policy['free_wait']
        if over > 0:
            fee += -(-over // 60) * policy['per_min']
    return {'fee': fee}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 181}, {'wait_s': 420}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 380}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 770}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 170}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 100})],
 [('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 200}),
  ('normal control 4', [[{'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 810}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 480}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('normal control 1',
   [[{'wait_s': 0}, {'wait_s': 180}, {'wait_s': 420}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 60}, {'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 220})],
 [('regression: per-stop free wait',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 420}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 540}),
  ('second regression',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0})]]
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: per-stop free wait{'fee': 390}{'fee': 390}Passed
partial repair probe: per-stop free wait{'fee': 340}{'fee': 460}Failed
second regression{'fee': 360}{'fee': 390}Failed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 0}{'fee': 0}Passed
normal control 3{'error': 'too_many_stops'}{'error': 'too_many_stops'}Passed
normal control 4{'fee': 150}{'fee': 150}Passed

SHA-256 / 591b76cb7fedaee317fcff21dccc85b7295c4ef27fdb0277e2691819f48e6fff

3 / The verified repair

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

N = 1
observations = []
def solve(stops, policy):
    if len(stops) > policy['max_stops']:
        return {'error': 'too_many_stops'}
    waits = [s['wait_s'] for s in stops]
    fee = policy['stop_fee'] * len(stops)
    for w in waits:
        over = w - policy['free_wait']
        if over > 0:
            fee += -(-over // 60) * policy['per_min']
    return {'fee': fee}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 181}, {'wait_s': 420}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 380}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 770}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 170}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 100})],
 [('regression: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('second regression',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 390}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 200}),
  ('normal control 4', [[{'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 150})],
 [('regression: per-stop free wait',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 810}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 420}, {'wait_s': 300}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 480}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 320}),
  ('normal control 1',
   [[{'wait_s': 0}, {'wait_s': 180}, {'wait_s': 420}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 60}, {'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 220})],
 [('regression: per-stop free wait',
   [[{'wait_s': 181}, {'wait_s': 300}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 420}),
  ('partial repair probe: per-stop free wait',
   [[{'wait_s': 300}, {'wait_s': 240}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 540}),
  ('second regression',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('normal control 1', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 0}),
  ('normal control 2',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 3',
   [[{'wait_s': 0}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0})]]
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: per-stop free wait{'fee': 390}{'fee': 390}Passed
partial repair probe: per-stop free wait{'fee': 460}{'fee': 460}Passed
second regression{'fee': 390}{'fee': 390}Passed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 0}{'fee': 0}Passed
normal control 3{'error': 'too_many_stops'}{'error': 'too_many_stops'}Passed
normal control 4{'fee': 150}{'fee': 150}Passed

SHA-256 / 1931e98a97bfff929ec5059abc45be230619ea32cbb4a684b61e416a0408004f

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

Case digest / c6ede2029a429e1a0c9847dabd31ad682386e10c9b64ad549f28a08800342c69