FAILURE MAP
← Case archive

FA-67631 / Elevator dispatch scheduling / Open access

Figure of suitability hall call allocation: equal score tie-break · case 01

Equal-score calls go to the highest car id or depend on car positions.

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

ROOT CAUSE

Later cars replace the incumbent on equal score.

VERIFIED REPAIR

Keep the lowest car id on equal scores.

Unsuccessful approach: Iterating cars by floor turns the tie-break into lowest position.

Case contract

With N = floors-1 and d = distance to the call: an idle car scores N+1-d; a car moving strictly towards the call scores N+2-d if travelling in the call direction, N+1-d otherwise; a car moving away (or level with the call while moving) scores 1. Each call independently goes to the highest score, ties to the lowest car id.

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):
    N = x['floors'] - 1
    res = []
    for fl, cd in x['calls']:
        best = None
        for car in sorted(x['cars'], key=lambda c: c['id']):
            d = abs(car['floor'] - fl)
            if car['dir'] == 'idle':
                fs = N + 1 - d
            else:
                toward = (car['dir'] == 'up' and fl > car['floor']) or (car['dir'] == 'down' and fl < car['floor'])
                if not toward:
                    fs = 1
                elif car['dir'] == cd:
                    fs = N + 2 - d
                else:
                    fs = N + 1 - d
            if best is None or fs >= best[0]:
                best = (fs, car['id'])
        res.append(best[1])
    return res
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 11', {'floors': 14, 'cars': [{'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 3, 'dir': 'up'}], 'calls': [[9, 'down'], [9, 'up'], [10, 'down'], [11, 'down']]}, ['A', 'A', 'A', 'A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('sampled regression 1', {'floors': 14, 'cars': [{'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}], 'calls': [[12, 'up'], [6, 'down'], [5, 'up'], [8, 'down']]}, ['D', 'D', 'C', 'B']), ('control 4', {'floors': 13, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'C', 'floor': 12, 'dir': 'idle'}, {'id': 'D', 'floor': 10, 'dir': 'idle'}], 'calls': [[10, 'down'], [3, 'up']]}, ['D', 'D']), ('control 7', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'idle'}, {'id': 'C', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'down'], [6, 'down']]}, ['A', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 5', {'floors': 10, 'cars': [{'id': 'C', 'floor': 4, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}], 'calls': [[6, 'up'], [4, 'up'], [7, 'up'], [1, 'down']]}, ['D', 'A', 'B', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 12', {'floors': 9, 'cars': [{'id': 'C', 'floor': 0, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 0, 'dir': 'up'}], 'calls': [[0, 'up'], [7, 'up'], [6, 'down']]}, ['C', 'B', 'B']), ('sampled regression 15', {'floors': 15, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[10, 'down'], [4, 'down'], [12, 'down']]}, ['B', 'B', 'B']), ('control 18', {'floors': 12, 'cars': [{'id': 'B', 'floor': 8, 'dir': 'down'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[4, 'up'], [7, 'down'], [5, 'up'], [1, 'down']]}, ['B', 'B', 'B', 'B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 46', {'floors': 13, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 12, 'dir': 'down'}, {'id': 'A', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}], 'calls': [[7, 'down'], [5, 'down'], [7, 'up'], [11, 'up']]}, ['A', 'D', 'A', 'B']), ('sampled regression 13', {'floors': 16, 'cars': [{'id': 'D', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'up'}], 'calls': [[7, 'down'], [1, 'down']]}, ['C', 'D']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 26', {'floors': 10, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'up'}], 'calls': [[6, 'up'], [0, 'up'], [7, 'up']]}, ['B', 'C', 'B']), ('control 29', {'floors': 15, 'cars': [{'id': 'C', 'floor': 8, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'B', 'floor': 10, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'down'}], 'calls': [[14, 'down'], [5, 'up']]}, ['B', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 65', {'floors': 11, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'down'}, {'id': 'A', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'up'], [6, 'up']]}, ['C', 'A']), ('control 20', {'floors': 11, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'B', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 3, 'dir': 'idle'}], 'calls': [[4, 'up'], [10, 'down'], [10, 'down'], [9, 'up']]}, ['D', 'A', 'A', 'A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('control 34', {'floors': 14, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[7, 'up'], [9, 'up']]}, ['A', 'C']), ('sampled regression 37', {'floors': 12, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'down'}], 'calls': [[7, 'down'], [10, 'up'], [11, 'down']]}, ['C', 'B', 'B']), ('control 40', {'floors': 8, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 3', {'floors': 11, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'idle'}], 'calls': [[9, 'down'], [8, 'up'], [4, 'up'], [1, 'down']]}, ['D', 'D', 'D', 'A']), ('control 25', {'floors': 13, 'cars': [{'id': 'C', 'floor': 2, 'dir': 'idle'}, {'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 0, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[7, 'down'], [0, 'up']]}, ['A', 'D']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 45', {'floors': 16, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[10, 'down'], [15, 'down']]}, ['C', 'C']), ('control 48', {'floors': 10, 'cars': [{'id': 'B', 'floor': 1, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[3, 'up'], [1, 'down'], [3, 'up']]}, ['D', 'C', 'D']), ('control 51', {'floors': 14, 'cars': [{'id': 'C', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'up'}, {'id': 'A', 'floor': 0, 'dir': 'up'}], 'calls': [[8, 'up'], [0, 'up'], [0, 'up'], [8, 'down']]}, ['D', 'C', 'C', 'D'])]]
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: equal scores['B']['A']Failed
boundary: same-direction bonus['A']['A']Passed
sampled regression 11['A', 'B', 'A', 'A']['A', 'A', 'A', 'A']Failed
boundary: idle versus same-direction car['A']['A']Passed
boundary: car level with the call while moving['B']['B']Passed
sampled regression 1['D', 'D', 'D', 'B']['D', 'D', 'C', 'B']Failed
control 4['D', 'D']['D', 'D']Passed
control 7['A', 'A']['A', 'A']Passed

SHA-256 / 37fcf3777ee5b10de80f9719c1288cda1975696924c84e7dd4e02ba1bc211264

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    N = x['floors'] - 1
    res = []
    for fl, cd in x['calls']:
        best = None
        for car in sorted(x['cars'], key=lambda c: c['id']):
            d = abs(car['floor'] - fl)
            if car['dir'] == 'idle':
                fs = N + 1 - d
            else:
                toward = (car['dir'] == 'up' and fl > car['floor']) or (car['dir'] == 'down' and fl < car['floor'])
                if not toward:
                    fs = 1
                elif car['dir'] == cd:
                    fs = N + 2 - d
                else:
                    fs = N + 1 - d
            for car in sorted(x['cars'], key=lambda c: c['floor']):
                best = (fs, car['id'])
        res.append(best[1])
    return res
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 11', {'floors': 14, 'cars': [{'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 3, 'dir': 'up'}], 'calls': [[9, 'down'], [9, 'up'], [10, 'down'], [11, 'down']]}, ['A', 'A', 'A', 'A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('sampled regression 1', {'floors': 14, 'cars': [{'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}], 'calls': [[12, 'up'], [6, 'down'], [5, 'up'], [8, 'down']]}, ['D', 'D', 'C', 'B']), ('control 4', {'floors': 13, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'C', 'floor': 12, 'dir': 'idle'}, {'id': 'D', 'floor': 10, 'dir': 'idle'}], 'calls': [[10, 'down'], [3, 'up']]}, ['D', 'D']), ('control 7', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'idle'}, {'id': 'C', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'down'], [6, 'down']]}, ['A', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 5', {'floors': 10, 'cars': [{'id': 'C', 'floor': 4, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}], 'calls': [[6, 'up'], [4, 'up'], [7, 'up'], [1, 'down']]}, ['D', 'A', 'B', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 12', {'floors': 9, 'cars': [{'id': 'C', 'floor': 0, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 0, 'dir': 'up'}], 'calls': [[0, 'up'], [7, 'up'], [6, 'down']]}, ['C', 'B', 'B']), ('sampled regression 15', {'floors': 15, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[10, 'down'], [4, 'down'], [12, 'down']]}, ['B', 'B', 'B']), ('control 18', {'floors': 12, 'cars': [{'id': 'B', 'floor': 8, 'dir': 'down'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[4, 'up'], [7, 'down'], [5, 'up'], [1, 'down']]}, ['B', 'B', 'B', 'B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 46', {'floors': 13, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 12, 'dir': 'down'}, {'id': 'A', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}], 'calls': [[7, 'down'], [5, 'down'], [7, 'up'], [11, 'up']]}, ['A', 'D', 'A', 'B']), ('sampled regression 13', {'floors': 16, 'cars': [{'id': 'D', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'up'}], 'calls': [[7, 'down'], [1, 'down']]}, ['C', 'D']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 26', {'floors': 10, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'up'}], 'calls': [[6, 'up'], [0, 'up'], [7, 'up']]}, ['B', 'C', 'B']), ('control 29', {'floors': 15, 'cars': [{'id': 'C', 'floor': 8, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'B', 'floor': 10, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'down'}], 'calls': [[14, 'down'], [5, 'up']]}, ['B', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 65', {'floors': 11, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'down'}, {'id': 'A', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'up'], [6, 'up']]}, ['C', 'A']), ('control 20', {'floors': 11, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'B', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 3, 'dir': 'idle'}], 'calls': [[4, 'up'], [10, 'down'], [10, 'down'], [9, 'up']]}, ['D', 'A', 'A', 'A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('control 34', {'floors': 14, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[7, 'up'], [9, 'up']]}, ['A', 'C']), ('sampled regression 37', {'floors': 12, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'down'}], 'calls': [[7, 'down'], [10, 'up'], [11, 'down']]}, ['C', 'B', 'B']), ('control 40', {'floors': 8, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 3', {'floors': 11, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'idle'}], 'calls': [[9, 'down'], [8, 'up'], [4, 'up'], [1, 'down']]}, ['D', 'D', 'D', 'A']), ('control 25', {'floors': 13, 'cars': [{'id': 'C', 'floor': 2, 'dir': 'idle'}, {'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 0, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[7, 'down'], [0, 'up']]}, ['A', 'D']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 45', {'floors': 16, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[10, 'down'], [15, 'down']]}, ['C', 'C']), ('control 48', {'floors': 10, 'cars': [{'id': 'B', 'floor': 1, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[3, 'up'], [1, 'down'], [3, 'up']]}, ['D', 'C', 'D']), ('control 51', {'floors': 14, 'cars': [{'id': 'C', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'up'}, {'id': 'A', 'floor': 0, 'dir': 'up'}], 'calls': [[8, 'up'], [0, 'up'], [0, 'up'], [8, 'down']]}, ['D', 'C', 'C', 'D'])]]
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: equal scores['A']['A']Passed
boundary: same-direction bonus['B']['A']Failed
sampled regression 11['A', 'A', 'A', 'A']['A', 'A', 'A', 'A']Passed
boundary: idle versus same-direction car['B']['A']Failed
boundary: car level with the call while moving['B']['B']Passed
sampled regression 1['B', 'B', 'B', 'B']['D', 'D', 'C', 'B']Failed
control 4['C', 'C']['D', 'D']Failed
control 7['A', 'A']['A', 'A']Passed

SHA-256 / 7f264d9c55f328500d5023559723fd94c2a8a1ccde67ac87add17a2c53f9e126

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    N = x['floors'] - 1
    res = []
    for fl, cd in x['calls']:
        best = None
        for car in sorted(x['cars'], key=lambda c: c['id']):
            d = abs(car['floor'] - fl)
            if car['dir'] == 'idle':
                fs = N + 1 - d
            else:
                toward = (car['dir'] == 'up' and fl > car['floor']) or (car['dir'] == 'down' and fl < car['floor'])
                if not toward:
                    fs = 1
                elif car['dir'] == cd:
                    fs = N + 2 - d
                else:
                    fs = N + 1 - d
            if best is None or fs > best[0]:
                best = (fs, car['id'])
        res.append(best[1])
    return res
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 11', {'floors': 14, 'cars': [{'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 3, 'dir': 'up'}], 'calls': [[9, 'down'], [9, 'up'], [10, 'down'], [11, 'down']]}, ['A', 'A', 'A', 'A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('sampled regression 1', {'floors': 14, 'cars': [{'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}], 'calls': [[12, 'up'], [6, 'down'], [5, 'up'], [8, 'down']]}, ['D', 'D', 'C', 'B']), ('control 4', {'floors': 13, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'C', 'floor': 12, 'dir': 'idle'}, {'id': 'D', 'floor': 10, 'dir': 'idle'}], 'calls': [[10, 'down'], [3, 'up']]}, ['D', 'D']), ('control 7', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'idle'}, {'id': 'C', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'down'], [6, 'down']]}, ['A', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 5', {'floors': 10, 'cars': [{'id': 'C', 'floor': 4, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}, {'id': 'D', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}], 'calls': [[6, 'up'], [4, 'up'], [7, 'up'], [1, 'down']]}, ['D', 'A', 'B', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 12', {'floors': 9, 'cars': [{'id': 'C', 'floor': 0, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'A', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 0, 'dir': 'up'}], 'calls': [[0, 'up'], [7, 'up'], [6, 'down']]}, ['C', 'B', 'B']), ('sampled regression 15', {'floors': 15, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[10, 'down'], [4, 'down'], [12, 'down']]}, ['B', 'B', 'B']), ('control 18', {'floors': 12, 'cars': [{'id': 'B', 'floor': 8, 'dir': 'down'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[4, 'up'], [7, 'down'], [5, 'up'], [1, 'down']]}, ['B', 'B', 'B', 'B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 46', {'floors': 13, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 12, 'dir': 'down'}, {'id': 'A', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}], 'calls': [[7, 'down'], [5, 'down'], [7, 'up'], [11, 'up']]}, ['A', 'D', 'A', 'B']), ('sampled regression 13', {'floors': 16, 'cars': [{'id': 'D', 'floor': 10, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'up'}], 'calls': [[7, 'down'], [1, 'down']]}, ['C', 'D']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 23', {'floors': 11, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 10, 'dir': 'down'}, {'id': 'A', 'floor': 3, 'dir': 'up'}], 'calls': [[2, 'down'], [0, 'up']]}, ['D', 'A']), ('control 26', {'floors': 10, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'up'}], 'calls': [[6, 'up'], [0, 'up'], [7, 'up']]}, ['B', 'C', 'B']), ('control 29', {'floors': 15, 'cars': [{'id': 'C', 'floor': 8, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'B', 'floor': 10, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'down'}], 'calls': [[14, 'down'], [5, 'up']]}, ['B', 'A'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: idle versus same-direction car', {'floors': 12, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 65', {'floors': 11, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'down'}, {'id': 'A', 'floor': 1, 'dir': 'up'}, {'id': 'C', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 1, 'dir': 'idle'}], 'calls': [[5, 'up'], [6, 'up']]}, ['C', 'A']), ('control 20', {'floors': 11, 'cars': [{'id': 'A', 'floor': 8, 'dir': 'up'}, {'id': 'B', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 3, 'dir': 'idle'}], 'calls': [[4, 'up'], [10, 'down'], [10, 'down'], [9, 'up']]}, ['D', 'A', 'A', 'A']), ('boundary: car level with the call while moving', {'floors': 10, 'cars': [{'id': 'A', 'floor': 5, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['B']), ('control 34', {'floors': 14, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'down'}], 'calls': [[7, 'up'], [9, 'up']]}, ['A', 'C']), ('sampled regression 37', {'floors': 12, 'cars': [{'id': 'B', 'floor': 11, 'dir': 'down'}, {'id': 'C', 'floor': 10, 'dir': 'down'}], 'calls': [[7, 'down'], [10, 'up'], [11, 'down']]}, ['C', 'B', 'B']), ('control 40', {'floors': 8, 'cars': [{'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'idle'}, {'id': 'B', 'floor': 6, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['B'])], [('regression: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: same-direction bonus', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 8, 'dir': 'down'}], 'calls': [[5, 'up']]}, ['A']), ('sampled regression 3', {'floors': 11, 'cars': [{'id': 'C', 'floor': 1, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'up'}, {'id': 'B', 'floor': 3, 'dir': 'down'}, {'id': 'D', 'floor': 4, 'dir': 'idle'}], 'calls': [[9, 'down'], [8, 'up'], [4, 'up'], [1, 'down']]}, ['D', 'D', 'D', 'A']), ('control 25', {'floors': 13, 'cars': [{'id': 'C', 'floor': 2, 'dir': 'idle'}, {'id': 'A', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 0, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'idle'}], 'calls': [[7, 'down'], [0, 'up']]}, ['A', 'D']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 45', {'floors': 16, 'cars': [{'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'C', 'floor': 10, 'dir': 'idle'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[10, 'down'], [15, 'down']]}, ['C', 'C']), ('control 48', {'floors': 10, 'cars': [{'id': 'B', 'floor': 1, 'dir': 'down'}, {'id': 'C', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 1, 'dir': 'up'}, {'id': 'A', 'floor': 9, 'dir': 'down'}], 'calls': [[3, 'up'], [1, 'down'], [3, 'up']]}, ['D', 'C', 'D']), ('control 51', {'floors': 14, 'cars': [{'id': 'C', 'floor': 3, 'dir': 'idle'}, {'id': 'D', 'floor': 7, 'dir': 'up'}, {'id': 'A', 'floor': 0, 'dir': 'up'}], 'calls': [[8, 'up'], [0, 'up'], [0, 'up'], [8, 'down']]}, ['D', 'C', 'C', 'D'])]]
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: equal scores['A']['A']Passed
boundary: same-direction bonus['A']['A']Passed
sampled regression 11['A', 'A', 'A', 'A']['A', 'A', 'A', 'A']Passed
boundary: idle versus same-direction car['A']['A']Passed
boundary: car level with the call while moving['B']['B']Passed
sampled regression 1['D', 'D', 'C', 'B']['D', 'D', 'C', 'B']Passed
control 4['D', 'D']['D', 'D']Passed
control 7['A', 'A']['A', 'A']Passed

SHA-256 / 8ec6d6b60bb4a77e36984d500b02d4bb14982d347283bcc606ef504f486975a5

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

Case digest / ccc7850242d9a1faa5963ec44882dd70948396683f895ae3e076609ef3b569c9