FAILURE MAP
← Case archive

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

Maximum number of stops rejected · case 01

Riders adding the third allowed stop get an error.

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

ROOT CAUSE

The limit check uses >=.

VERIFIED REPAIR

Reject only more than max_stops stops.

Unsuccessful approach: Allowing one extra stop accepts a fourth stop.

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 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: stop limit',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 690}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 60}, {'wait_s': 420}],
    {'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': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 290}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0})],
 [('regression: stop limit',
   [[{'wait_s': 0}, {'wait_s': 420}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 500}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 181}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 730}),
  ('normal control 1',
   [[{'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 140}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 360}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 4',
   [[{'wait_s': 180}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280})],
 [('regression: stop limit',
   [[{'wait_s': 240}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 450}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 240}, {'wait_s': 170}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 1',
   [[{'wait_s': 420}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('normal control 2',
   [[{'wait_s': 60}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 3',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 260})],
 [('regression: stop limit',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 510}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 181}, {'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 450}),
  ('normal control 1',
   [[{'wait_s': 300}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 380}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 4',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190})],
 [('regression: stop limit',
   [[{'wait_s': 300}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 60}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('normal control 1',
   [[{'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 180}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190}),
  ('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: stop limit{'error': 'too_many_stops'}{'fee': 690}Failed
partial repair probe: stop limit{'error': 'too_many_stops'}{'error': 'too_many_stops'}Passed
second regression{'error': 'too_many_stops'}{'fee': 770}Failed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 100}{'fee': 100}Passed
normal control 3{'fee': 290}{'fee': 290}Passed
normal control 4{'fee': 0}{'fee': 0}Passed

SHA-256 / c22733ce6b879b7a9e36d917e34b86616163a9efda8327ca38301533a8a00f17

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'] + 1:
        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: stop limit',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 690}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 60}, {'wait_s': 420}],
    {'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': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 290}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0})],
 [('regression: stop limit',
   [[{'wait_s': 0}, {'wait_s': 420}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 500}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 181}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 730}),
  ('normal control 1',
   [[{'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 140}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 360}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 4',
   [[{'wait_s': 180}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280})],
 [('regression: stop limit',
   [[{'wait_s': 240}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 450}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 240}, {'wait_s': 170}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 1',
   [[{'wait_s': 420}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('normal control 2',
   [[{'wait_s': 60}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 3',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 260})],
 [('regression: stop limit',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 510}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 181}, {'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 450}),
  ('normal control 1',
   [[{'wait_s': 300}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 380}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 4',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190})],
 [('regression: stop limit',
   [[{'wait_s': 300}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 60}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('normal control 1',
   [[{'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 180}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190}),
  ('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: stop limit{'fee': 690}{'fee': 690}Passed
partial repair probe: stop limit{'fee': 690}{'error': 'too_many_stops'}Failed
second regression{'fee': 770}{'fee': 770}Passed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 100}{'fee': 100}Passed
normal control 3{'fee': 290}{'fee': 290}Passed
normal control 4{'fee': 0}{'fee': 0}Passed

SHA-256 / fe1c6b69ae8622bdba59065e2593eb67f64d62e5d6143c4f14a914ee4afc0ffe

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: stop limit',
   [[{'wait_s': 300}, {'wait_s': 420}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 690}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 60}, {'wait_s': 420}],
    {'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': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 3',
   [[{'wait_s': 300}, {'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 290}),
  ('normal control 4', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0})],
 [('regression: stop limit',
   [[{'wait_s': 0}, {'wait_s': 420}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 500}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 170}, {'wait_s': 300}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 420}, {'wait_s': 181}, {'wait_s': 300}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 730}),
  ('normal control 1',
   [[{'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 140}),
  ('normal control 2',
   [[{'wait_s': 181}, {'wait_s': 181}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 360}),
  ('normal control 3',
   [[{'wait_s': 180}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 100}),
  ('normal control 4',
   [[{'wait_s': 180}, {'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 280})],
 [('regression: stop limit',
   [[{'wait_s': 240}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 450}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 240}, {'wait_s': 170}, {'wait_s': 170}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 240}, {'wait_s': 181}, {'wait_s': 181}, {'wait_s': 60}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'error': 'too_many_stops'}),
  ('normal control 1',
   [[{'wait_s': 420}, {'wait_s': 60}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 460}),
  ('normal control 2',
   [[{'wait_s': 60}, {'wait_s': 0}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 300}),
  ('normal control 3',
   [[{'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}], {'fee': 150}),
  ('normal control 4',
   [[{'wait_s': 420}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 260})],
 [('regression: stop limit',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 181}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'fee': 510}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 181}, {'wait_s': 240}, {'wait_s': 180}, {'wait_s': 240}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 0}, {'wait_s': 60}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 450}),
  ('normal control 1',
   [[{'wait_s': 300}, {'wait_s': 170}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}],
   {'fee': 380}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 4',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190})],
 [('regression: stop limit',
   [[{'wait_s': 300}, {'wait_s': 60}, {'wait_s': 420}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}],
   {'fee': 540}),
  ('partial repair probe: stop limit',
   [[{'wait_s': 240}, {'wait_s': 420}, {'wait_s': 60}, {'wait_s': 0}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 150}],
   {'error': 'too_many_stops'}),
  ('second regression',
   [[{'wait_s': 181}, {'wait_s': 170}, {'wait_s': 180}],
    {'free_wait': 180, 'max_stops': 3, 'per_min': 30, 'stop_fee': 100}],
   {'fee': 330}),
  ('normal control 1',
   [[{'wait_s': 300}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 180}),
  ('normal control 2', [[], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 100}], {'fee': 0}),
  ('normal control 3',
   [[{'wait_s': 240}], {'free_wait': 180, 'max_stops': 3, 'per_min': 40, 'stop_fee': 150}], {'fee': 190}),
  ('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: stop limit{'fee': 690}{'fee': 690}Passed
partial repair probe: stop limit{'error': 'too_many_stops'}{'error': 'too_many_stops'}Passed
second regression{'fee': 770}{'fee': 770}Passed
normal control 1{'fee': 0}{'fee': 0}Passed
normal control 2{'fee': 100}{'fee': 100}Passed
normal control 3{'fee': 290}{'fee': 290}Passed
normal control 4{'fee': 0}{'fee': 0}Passed

SHA-256 / 80aa398dff960e993abe9c55c7a4a8d01075dafb01b78c192763f87987714d54

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

Case digest / 571257e9ee134bb7e728fc58b3b3b3149655b3e3e0503b0a35db12c6e4f7e1a6