FA-67766 / Elevator dispatch scheduling / Open access
Single car SCAN service simulation: boarding direction · case 01
Passengers board a car heading the wrong way and ride away from their destination.
ROOT CAUSE
Boarding ignores the passenger travel direction.
VERIFIED REPAIR
Board only passengers travelling in the car direction.
Unsuccessful approach: Letting an empty car take anyone still boards opposite-direction passengers.
Case contract
All passengers [id, from, to] wait at time 0. The car starts at start heading up. At each floor it first lets riders alight, then boards waiting passengers (in id order) whose travel direction equals the car direction while load < cap; any alighting or boarding costs one stop_s. If no rider destination or waiting origin lies strictly ahead it reverses in place (and may board again); otherwise it moves one floor (floor_s). Return {id: [board time, alight time]} for delivered passengers.
Why this case matters
Lift group controllers make these decisions many times per minute; a wrong answer strands passengers, wastes trips or overrides a safety rule.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
cap = x['cap']
pos = x['start']
t = 0
d = 'up'
waiting = {r[0]: r for r in x['requests']}
riding = {}
picked = {}
done = {}
for _ in range(400):
if not waiting and not riding:
break
stopped = False
for pid in sorted(riding):
if riding[pid][2] == pos:
done[pid] = [picked[pid], t]
del riding[pid]
stopped = True
for pid in sorted(waiting):
r = waiting[pid]
rdir = 'up' if r[2] > r[1] else 'down'
if r[1] == pos and len(riding) < cap:
riding[pid] = r
picked[pid] = t
del waiting[pid]
stopped = True
if stopped:
t += x['stop_s']
targets = [r[2] for r in riding.values()] + [r[1] for r in waiting.values()]
ahead = [f for f in targets if (f > pos if d == 'up' else f < pos)]
if not ahead:
d = 'down' if d == 'up' else 'up'
continue
pos += 1 if d == 'up' else -1
t += x['floor_s']
return done
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 3', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 1], ['p1', 3, 5]]}, {'p0': [0, 13], 'p1': [22, 31]}), ('sampled regression 1', {'cap': 1, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 6, 8], ['p1', 3, 7], ['p2', 0, 7], ['p3', 3, 2], ['p4', 7, 1]]}, {'p0': [2, 11], 'p4': [18, 35], 'p2': [42, 61], 'p3': [74, 81], 'p1': [88, 101]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('sampled regression 4', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 8], ['p1', 8, 1], ['p2', 0, 8], ['p3', 5, 6]]}, {'p3': [13, 20], 'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81]}), ('sampled regression 7', {'cap': 4, 'start': 6, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 7, 5], ['p2', 6, 0]]}, {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]}), ('control 10', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 3, 0], ['p1', 5, 6], ['p2', 5, 7]]}, {'p1': [0, 10], 'p2': [0, 20], 'p0': [36, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 12', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 3], ['p1', 8, 4], ['p2', 2, 8], ['p3', 5, 0], ['p4', 8, 2], ['p5', 7, 9]]}, {'p2': [0, 28], 'p5': [18, 38], 'p1': [48, 72], 'p0': [48, 82], 'p4': [48, 92], 'p3': [62, 104]}), ('sampled regression 8', {'cap': 1, 'start': 7, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 4, 9], ['p1', 9, 3], ['p2', 9, 7], ['p3', 2, 1], ['p4', 1, 3]]}, {'p1': [4, 24], 'p3': [34, 44], 'p4': [52, 64], 'p0': [74, 92], 'p2': [100, 112]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('control 15', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 6, 3], ['p1', 4, 1], ['p2', 5, 0]]}, {'p0': [4, 26], 'p2': [14, 40], 'p1': [56, 70]}), ('sampled regression 18', {'cap': 4, 'start': 9, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 1, 0], ['p1', 7, 8], ['p2', 1, 8]]}, {'p0': [16, 26], 'p1': [56, 66], 'p2': [36, 66]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]}), ('sampled regression 19', {'cap': 2, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 5], ['p1', 6, 4], ['p2', 9, 2], ['p3', 4, 5]]}, {'p3': [6, 16], 'p1': [46, 58], 'p2': [32, 70], 'p0': [82, 100]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('control 23', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 9, 4], ['p1', 9, 1], ['p2', 0, 1], ['p3', 6, 2]]}, {'p0': [2, 22], 'p3': [13, 31], 'p1': [2, 38], 'p2': [45, 52]}), ('sampled regression 26', {'cap': 1, 'start': 3, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 4], ['p1', 1, 6], ['p2', 1, 6], ['p3', 5, 1]]}, {'p3': [4, 20], 'p0': [30, 46], 'p1': [60, 78], 'p2': [96, 114]}), ('sampled regression 29', {'cap': 4, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 5], ['p1', 0, 2], ['p2', 7, 1]]}, {'p0': [6, 28], 'p2': [16, 44], 'p1': [54, 66]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('sampled regression 25', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 5], ['p1', 0, 3], ['p2', 6, 8], ['p3', 2, 3], ['p4', 8, 0], ['p5', 9, 6]]}, {'p1': [0, 16], 'p3': [9, 16], 'p0': [9, 25], 'p2': [32, 41], 'p5': [48, 64], 'p4': [55, 81]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('sampled regression 34', {'cap': 2, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 2, 8], ['p2', 6, 1], ['p3', 3, 7], ['p4', 6, 8], ['p5', 2, 4]]}, {'p4': [4, 13], 'p2': [22, 42], 'p0': [35, 49], 'p5': [58, 67], 'p1': [58, 80], 'p3': [95, 108]}), ('control 37', {'cap': 2, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 9], ['p1', 6, 7]]}, {'p1': [13, 20], 'p0': [6, 29]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('sampled regression 45', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 0, 2], ['p1', 6, 2], ['p2', 4, 5], ['p3', 1, 7], ['p4', 7, 4]]}, {'p4': [2, 18], 'p1': [9, 27], 'p0': [36, 50], 'p2': [59, 66], 'p3': [43, 75]}), ('sampled regression 48', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 0, 2], ['p2', 8, 5], ['p3', 6, 4], ['p4', 0, 3]]}, {'p2': [0, 16], 'p3': [9, 23], 'p0': [32, 41], 'p1': [46, 55], 'p4': [46, 62]}), ('sampled regression 51', {'cap': 4, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 2, 6], ['p2', 8, 1], ['p3', 1, 6], ['p4', 3, 1]]}, {'p0': [8, 15], 'p2': [22, 46], 'p4': [37, 46], 'p1': [58, 71], 'p3': [51, 71]})]]
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: opposite-direction passenger waits | {'a': [0, 26], 'b': [0, 11]} | {'a': [22, 31], 'b': [0, 11]} | Failed |
| sampled regression 3 | {'p0': [0, 18], 'p1': [9, 31]} | {'p0': [0, 13], 'p1': [22, 31]} | Failed |
| sampled regression 1 | {'p0': [2, 11], 'p1': [74, 87], 'p2': [42, 61], 'p3': [100, 107], 'p4': [18, 35]} | {'p0': [2, 11], 'p1': [88, 101], 'p2': [42, 61], 'p3': [74, 81], 'p4': [18, 35]} | Failed |
| boundary: full car at a floor where a rider alights | {'a': [0, 11], 'b': [11, 22]} | {'a': [0, 11], 'b': [11, 22]} | Passed |
| boundary: capacity exactly reached | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | Passed |
| sampled regression 4 | {'p0': [2, 29], 'p1': [29, 48], 'p2': [55, 76], 'p3': [13, 20]} | {'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81], 'p3': [13, 20]} | Failed |
| sampled regression 7 | {'p0': [14, 21], 'p1': [7, 34], 'p2': [0, 49]} | {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]} | Failed |
| control 10 | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | Passed |
SHA-256 / 0b4162f5dc6ee83a911fc33ed1326cdd27f9c57bbc59f4536be45f43bdbfbd59
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
cap = x['cap']
pos = x['start']
t = 0
d = 'up'
waiting = {r[0]: r for r in x['requests']}
riding = {}
picked = {}
done = {}
for _ in range(400):
if not waiting and not riding:
break
stopped = False
for pid in sorted(riding):
if riding[pid][2] == pos:
done[pid] = [picked[pid], t]
del riding[pid]
stopped = True
for pid in sorted(waiting):
r = waiting[pid]
rdir = 'up' if r[2] > r[1] else 'down'
if r[1] == pos and (rdir == d or not riding) and len(riding) < cap:
riding[pid] = r
picked[pid] = t
del waiting[pid]
stopped = True
if stopped:
t += x['stop_s']
targets = [r[2] for r in riding.values()] + [r[1] for r in waiting.values()]
ahead = [f for f in targets if (f > pos if d == 'up' else f < pos)]
if not ahead:
d = 'down' if d == 'up' else 'up'
continue
pos += 1 if d == 'up' else -1
t += x['floor_s']
return done
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 3', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 1], ['p1', 3, 5]]}, {'p0': [0, 13], 'p1': [22, 31]}), ('sampled regression 1', {'cap': 1, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 6, 8], ['p1', 3, 7], ['p2', 0, 7], ['p3', 3, 2], ['p4', 7, 1]]}, {'p0': [2, 11], 'p4': [18, 35], 'p2': [42, 61], 'p3': [74, 81], 'p1': [88, 101]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('sampled regression 4', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 8], ['p1', 8, 1], ['p2', 0, 8], ['p3', 5, 6]]}, {'p3': [13, 20], 'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81]}), ('sampled regression 7', {'cap': 4, 'start': 6, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 7, 5], ['p2', 6, 0]]}, {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]}), ('control 10', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 3, 0], ['p1', 5, 6], ['p2', 5, 7]]}, {'p1': [0, 10], 'p2': [0, 20], 'p0': [36, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 12', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 3], ['p1', 8, 4], ['p2', 2, 8], ['p3', 5, 0], ['p4', 8, 2], ['p5', 7, 9]]}, {'p2': [0, 28], 'p5': [18, 38], 'p1': [48, 72], 'p0': [48, 82], 'p4': [48, 92], 'p3': [62, 104]}), ('sampled regression 8', {'cap': 1, 'start': 7, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 4, 9], ['p1', 9, 3], ['p2', 9, 7], ['p3', 2, 1], ['p4', 1, 3]]}, {'p1': [4, 24], 'p3': [34, 44], 'p4': [52, 64], 'p0': [74, 92], 'p2': [100, 112]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('control 15', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 6, 3], ['p1', 4, 1], ['p2', 5, 0]]}, {'p0': [4, 26], 'p2': [14, 40], 'p1': [56, 70]}), ('sampled regression 18', {'cap': 4, 'start': 9, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 1, 0], ['p1', 7, 8], ['p2', 1, 8]]}, {'p0': [16, 26], 'p1': [56, 66], 'p2': [36, 66]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]}), ('sampled regression 19', {'cap': 2, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 5], ['p1', 6, 4], ['p2', 9, 2], ['p3', 4, 5]]}, {'p3': [6, 16], 'p1': [46, 58], 'p2': [32, 70], 'p0': [82, 100]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('control 23', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 9, 4], ['p1', 9, 1], ['p2', 0, 1], ['p3', 6, 2]]}, {'p0': [2, 22], 'p3': [13, 31], 'p1': [2, 38], 'p2': [45, 52]}), ('sampled regression 26', {'cap': 1, 'start': 3, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 4], ['p1', 1, 6], ['p2', 1, 6], ['p3', 5, 1]]}, {'p3': [4, 20], 'p0': [30, 46], 'p1': [60, 78], 'p2': [96, 114]}), ('sampled regression 29', {'cap': 4, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 5], ['p1', 0, 2], ['p2', 7, 1]]}, {'p0': [6, 28], 'p2': [16, 44], 'p1': [54, 66]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('sampled regression 25', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 5], ['p1', 0, 3], ['p2', 6, 8], ['p3', 2, 3], ['p4', 8, 0], ['p5', 9, 6]]}, {'p1': [0, 16], 'p3': [9, 16], 'p0': [9, 25], 'p2': [32, 41], 'p5': [48, 64], 'p4': [55, 81]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('sampled regression 34', {'cap': 2, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 2, 8], ['p2', 6, 1], ['p3', 3, 7], ['p4', 6, 8], ['p5', 2, 4]]}, {'p4': [4, 13], 'p2': [22, 42], 'p0': [35, 49], 'p5': [58, 67], 'p1': [58, 80], 'p3': [95, 108]}), ('control 37', {'cap': 2, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 9], ['p1', 6, 7]]}, {'p1': [13, 20], 'p0': [6, 29]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('sampled regression 45', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 0, 2], ['p1', 6, 2], ['p2', 4, 5], ['p3', 1, 7], ['p4', 7, 4]]}, {'p4': [2, 18], 'p1': [9, 27], 'p0': [36, 50], 'p2': [59, 66], 'p3': [43, 75]}), ('sampled regression 48', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 0, 2], ['p2', 8, 5], ['p3', 6, 4], ['p4', 0, 3]]}, {'p2': [0, 16], 'p3': [9, 23], 'p0': [32, 41], 'p1': [46, 55], 'p4': [46, 62]}), ('sampled regression 51', {'cap': 4, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 2, 6], ['p2', 8, 1], ['p3', 1, 6], ['p4', 3, 1]]}, {'p0': [8, 15], 'p2': [22, 46], 'p4': [37, 46], 'p1': [58, 71], 'p3': [51, 71]})]]
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: opposite-direction passenger waits | {'a': [0, 26], 'b': [0, 11]} | {'a': [22, 31], 'b': [0, 11]} | Failed |
| sampled regression 3 | {'p0': [0, 13], 'p1': [22, 31]} | {'p0': [0, 13], 'p1': [22, 31]} | Passed |
| sampled regression 1 | {'p0': [2, 11], 'p1': [74, 87], 'p2': [42, 61], 'p3': [100, 107], 'p4': [18, 35]} | {'p0': [2, 11], 'p1': [88, 101], 'p2': [42, 61], 'p3': [74, 81], 'p4': [18, 35]} | Failed |
| boundary: full car at a floor where a rider alights | {'a': [0, 11], 'b': [11, 22]} | {'a': [0, 11], 'b': [11, 22]} | Passed |
| boundary: capacity exactly reached | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | Passed |
| sampled regression 4 | {'p0': [2, 29], 'p1': [29, 48], 'p2': [55, 76], 'p3': [13, 20]} | {'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81], 'p3': [13, 20]} | Failed |
| sampled regression 7 | {'p0': [9, 16], 'p1': [25, 34], 'p2': [0, 49]} | {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]} | Failed |
| control 10 | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | Passed |
SHA-256 / 5bb86f08c7ef5815b6f3eb45ea0b4d800936b68c3154375711e7c114164c8bd2
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
cap = x['cap']
pos = x['start']
t = 0
d = 'up'
waiting = {r[0]: r for r in x['requests']}
riding = {}
picked = {}
done = {}
for _ in range(400):
if not waiting and not riding:
break
stopped = False
for pid in sorted(riding):
if riding[pid][2] == pos:
done[pid] = [picked[pid], t]
del riding[pid]
stopped = True
for pid in sorted(waiting):
r = waiting[pid]
rdir = 'up' if r[2] > r[1] else 'down'
if r[1] == pos and rdir == d and len(riding) < cap:
riding[pid] = r
picked[pid] = t
del waiting[pid]
stopped = True
if stopped:
t += x['stop_s']
targets = [r[2] for r in riding.values()] + [r[1] for r in waiting.values()]
ahead = [f for f in targets if (f > pos if d == 'up' else f < pos)]
if not ahead:
d = 'down' if d == 'up' else 'up'
continue
pos += 1 if d == 'up' else -1
t += x['floor_s']
return done
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 3', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 1], ['p1', 3, 5]]}, {'p0': [0, 13], 'p1': [22, 31]}), ('sampled regression 1', {'cap': 1, 'start': 5, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 6, 8], ['p1', 3, 7], ['p2', 0, 7], ['p3', 3, 2], ['p4', 7, 1]]}, {'p0': [2, 11], 'p4': [18, 35], 'p2': [42, 61], 'p3': [74, 81], 'p1': [88, 101]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('sampled regression 4', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 8], ['p1', 8, 1], ['p2', 0, 8], ['p3', 5, 6]]}, {'p3': [13, 20], 'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81]}), ('sampled regression 7', {'cap': 4, 'start': 6, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 7, 5], ['p2', 6, 0]]}, {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]}), ('control 10', {'cap': 2, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 3, 0], ['p1', 5, 6], ['p2', 5, 7]]}, {'p1': [0, 10], 'p2': [0, 20], 'p0': [36, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 12', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 3], ['p1', 8, 4], ['p2', 2, 8], ['p3', 5, 0], ['p4', 8, 2], ['p5', 7, 9]]}, {'p2': [0, 28], 'p5': [18, 38], 'p1': [48, 72], 'p0': [48, 82], 'p4': [48, 92], 'p3': [62, 104]}), ('sampled regression 8', {'cap': 1, 'start': 7, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 4, 9], ['p1', 9, 3], ['p2', 9, 7], ['p3', 2, 1], ['p4', 1, 3]]}, {'p1': [4, 24], 'p3': [34, 44], 'p4': [52, 64], 'p0': [74, 92], 'p2': [100, 112]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('control 15', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 6, 3], ['p1', 4, 1], ['p2', 5, 0]]}, {'p0': [4, 26], 'p2': [14, 40], 'p1': [56, 70]}), ('sampled regression 18', {'cap': 4, 'start': 9, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 1, 0], ['p1', 7, 8], ['p2', 1, 8]]}, {'p0': [16, 26], 'p1': [56, 66], 'p2': [36, 66]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 21', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 7], ['p1', 5, 9], ['p2', 4, 5], ['p3', 0, 1], ['p4', 2, 5], ['p5', 0, 5]]}, {'p3': [0, 10], 'p4': [20, 34], 'p5': [0, 34], 'p1': [34, 50], 'p0': [60, 70], 'p2': [84, 94]}), ('sampled regression 19', {'cap': 2, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 5], ['p1', 6, 4], ['p2', 9, 2], ['p3', 4, 5]]}, {'p3': [6, 16], 'p1': [46, 58], 'p2': [32, 70], 'p0': [82, 100]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('boundary: full car at a floor where a rider alights', {'cap': 1, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 3], ['b', 3, 6]]}, {'a': [0, 11], 'b': [11, 22]}), ('control 23', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 9, 4], ['p1', 9, 1], ['p2', 0, 1], ['p3', 6, 2]]}, {'p0': [2, 22], 'p3': [13, 31], 'p1': [2, 38], 'p2': [45, 52]}), ('sampled regression 26', {'cap': 1, 'start': 3, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 0, 4], ['p1', 1, 6], ['p2', 1, 6], ['p3', 5, 1]]}, {'p3': [4, 20], 'p0': [30, 46], 'p1': [60, 78], 'p2': [96, 114]}), ('sampled regression 29', {'cap': 4, 'start': 5, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 8, 5], ['p1', 0, 2], ['p2', 7, 1]]}, {'p0': [6, 28], 'p2': [16, 44], 'p1': [54, 66]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('sampled regression 25', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 5], ['p1', 0, 3], ['p2', 6, 8], ['p3', 2, 3], ['p4', 8, 0], ['p5', 9, 6]]}, {'p1': [0, 16], 'p3': [9, 16], 'p0': [9, 25], 'p2': [32, 41], 'p5': [48, 64], 'p4': [55, 81]}), ('boundary: capacity exactly reached', {'cap': 2, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 4], ['b', 0, 5], ['c', 0, 6]]}, {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('sampled regression 34', {'cap': 2, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 2, 8], ['p2', 6, 1], ['p3', 3, 7], ['p4', 6, 8], ['p5', 2, 4]]}, {'p4': [4, 13], 'p2': [22, 42], 'p0': [35, 49], 'p5': [58, 67], 'p1': [58, 80], 'p3': [95, 108]}), ('control 37', {'cap': 2, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 5, 9], ['p1', 6, 7]]}, {'p1': [13, 20], 'p0': [6, 29]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]})], [('regression: opposite-direction passenger waits', {'cap': 4, 'start': 2, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 2, 0], ['b', 2, 5]]}, {'b': [0, 11], 'a': [22, 31]}), ('sampled regression 40', {'cap': 2, 'start': 6, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 9, 5], ['p1', 8, 3], ['p2', 5, 4]]}, {'p0': [6, 30], 'p2': [30, 40], 'p1': [16, 50]}), ('sampled regression 30', {'cap': 1, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['p0', 5, 1], ['p1', 9, 3], ['p2', 2, 5]]}, {'p2': [2, 16], 'p1': [32, 52], 'p0': [64, 80]}), ('boundary: two boardings share one stop', {'cap': 4, 'start': 1, 'floor_s': 2, 'stop_s': 8, 'requests': [['a', 1, 4], ['b', 1, 4]]}, {'a': [0, 14], 'b': [0, 14]}), ('boundary: alighting-only stop', {'cap': 4, 'start': 0, 'floor_s': 2, 'stop_s': 5, 'requests': [['a', 0, 2], ['b', 5, 6]]}, {'a': [0, 9], 'b': [20, 27]}), ('sampled regression 45', {'cap': 4, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 0, 2], ['p1', 6, 2], ['p2', 4, 5], ['p3', 1, 7], ['p4', 7, 4]]}, {'p4': [2, 18], 'p1': [9, 27], 'p0': [36, 50], 'p2': [59, 66], 'p3': [43, 75]}), ('sampled regression 48', {'cap': 2, 'start': 8, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 2, 0], ['p1', 0, 2], ['p2', 8, 5], ['p3', 6, 4], ['p4', 0, 3]]}, {'p2': [0, 16], 'p3': [9, 23], 'p0': [32, 41], 'p1': [46, 55], 'p4': [46, 62]}), ('sampled regression 51', {'cap': 4, 'start': 4, 'floor_s': 2, 'stop_s': 5, 'requests': [['p0', 8, 9], ['p1', 2, 6], ['p2', 8, 1], ['p3', 1, 6], ['p4', 3, 1]]}, {'p0': [8, 15], 'p2': [22, 46], 'p4': [37, 46], 'p1': [58, 71], 'p3': [51, 71]})]]
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: opposite-direction passenger waits | {'a': [22, 31], 'b': [0, 11]} | {'a': [22, 31], 'b': [0, 11]} | Passed |
| sampled regression 3 | {'p0': [0, 13], 'p1': [22, 31]} | {'p0': [0, 13], 'p1': [22, 31]} | Passed |
| sampled regression 1 | {'p0': [2, 11], 'p1': [88, 101], 'p2': [42, 61], 'p3': [74, 81], 'p4': [18, 35]} | {'p0': [2, 11], 'p1': [88, 101], 'p2': [42, 61], 'p3': [74, 81], 'p4': [18, 35]} | Passed |
| boundary: full car at a floor where a rider alights | {'a': [0, 11], 'b': [11, 22]} | {'a': [0, 11], 'b': [11, 22]} | Passed |
| boundary: capacity exactly reached | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | {'a': [0, 13], 'b': [0, 20], 'c': [35, 52]} | Passed |
| sampled regression 4 | {'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81], 'p3': [13, 20]} | {'p0': [2, 29], 'p1': [34, 53], 'p2': [60, 81], 'p3': [13, 20]} | Passed |
| sampled regression 7 | {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]} | {'p0': [4, 11], 'p1': [20, 34], 'p2': [27, 49]} | Passed |
| control 10 | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | {'p0': [36, 50], 'p1': [0, 10], 'p2': [0, 20]} | Passed |
SHA-256 / 3e49cd1d822d6f97ee7a340e01b0a5be6aa441165d2405754e22140198fc33d4
Verification & scope
Stipulated toy lift-control contract for a bounded teaching model; it makes no claim of conformance to any lift code or vendor dispatcher and omits real safety cases. 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:47:55.915746+00:00.
Case digest / 4ecae93b45551ba0b676354d1456f5a07b61b9cd6e5180df641e8adf74ab8364