FAILURE MAP
← Case archive

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.

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

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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