FAILURE MAP
← Case archive

FA-67636 / Elevator dispatch scheduling / Open access

Figure of suitability hall call allocation: idle car score · case 01

Idle cars beat or lose to approaching cars inconsistently with the stipulated scores.

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

ROOT CAUSE

Idle cars receive the same-direction bonus.

VERIFIED REPAIR

Score idle cars N+1-d.

Unsuccessful approach: Scoring idle cars N-d penalises them below an opposite-direction approach.

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 + 2 - 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 = [[('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('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']), ('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: 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 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']), ('control 10', {'floors': 11, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 3, 'dir': 'up'}, {'id': 'A', 'floor': 5, 'dir': 'down'}], 'calls': [[6, 'up']]}, ['D'])], [('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', 'B', 'A']), ('control 79', {'floors': 14, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'up'}, {'id': 'B', 'floor': 4, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('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']), ('control 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'])], [('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', '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']), ('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('control 17', {'floors': 16, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 13, 'dir': 'up'}], 'calls': [[10, 'down'], [2, 'down']]}, ['A', 'A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 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'])], [('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['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 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: 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']), ('control 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'])], [('sampled regression 55', {'floors': 11, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'C', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'up'}], 'calls': [[6, 'down'], [4, 'up']]}, ['C', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 76', {'floors': 8, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 4, 'dir': 'up'}], 'calls': [[3, 'up']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, '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
sampled regression 1['D', 'D', 'D', 'B']['D', 'D', 'C', 'B']Failed
boundary: opposite-direction approach['B']['B']Passed
sampled regression 46['A', 'D', 'C', 'C']['A', 'D', 'A', 'B']Failed
control 5['D', 'A', 'B', 'A']['D', 'A', 'B', 'A']Passed
boundary: car level with the call while moving['B']['B']Passed
control 4['D', 'D']['D', 'D']Passed
control 7['A', 'A']['A', 'A']Passed
control 10['D']['D']Passed

SHA-256 / f35d003f57cfbfac6b362d4f8576a23fb4c9cc42ef6717a96fd682a8f827c3b1

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 - 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 = [[('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('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']), ('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: 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 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']), ('control 10', {'floors': 11, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 3, 'dir': 'up'}, {'id': 'A', 'floor': 5, 'dir': 'down'}], 'calls': [[6, 'up']]}, ['D'])], [('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', 'B', 'A']), ('control 79', {'floors': 14, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'up'}, {'id': 'B', 'floor': 4, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('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']), ('control 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'])], [('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', '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']), ('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('control 17', {'floors': 16, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 13, 'dir': 'up'}], 'calls': [[10, 'down'], [2, 'down']]}, ['A', 'A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 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'])], [('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['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 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: 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']), ('control 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'])], [('sampled regression 55', {'floors': 11, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'C', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'up'}], 'calls': [[6, 'down'], [4, 'up']]}, ['C', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 76', {'floors': 8, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 4, 'dir': 'up'}], 'calls': [[3, 'up']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, '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
sampled regression 1['D', 'D', 'C', 'B']['D', 'D', 'C', 'B']Passed
boundary: opposite-direction approach['A']['B']Failed
sampled regression 46['A', 'D', 'A', 'B']['A', 'D', 'A', 'B']Passed
control 5['C', 'A', 'B', 'A']['D', 'A', 'B', 'A']Failed
boundary: car level with the call while moving['B']['B']Passed
control 4['D', 'D']['D', 'D']Passed
control 7['A', 'A']['A', 'A']Passed
control 10['D']['D']Passed

SHA-256 / 23311c109b523a1cc323d87a2b308f8c9d8973887d8726cdde544114ea1a0c7f

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 = [[('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('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']), ('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: 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 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']), ('control 10', {'floors': 11, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'D', 'floor': 3, 'dir': 'up'}, {'id': 'A', 'floor': 5, 'dir': 'down'}], 'calls': [[6, 'up']]}, ['D'])], [('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', 'B', 'A']), ('control 79', {'floors': 14, 'cars': [{'id': 'D', 'floor': 6, 'dir': 'up'}, {'id': 'A', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 13, 'dir': 'up'}, {'id': 'B', 'floor': 4, 'dir': 'up'}], 'calls': [[5, 'down']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('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']), ('control 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'])], [('sampled regression 41', {'floors': 13, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'D', 'floor': 7, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down'], [0, 'up'], [0, 'up'], [4, 'up']]}, ['A', 'B', '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']), ('sampled regression 2', {'floors': 9, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'idle'}, {'id': 'D', 'floor': 4, 'dir': 'up'}, {'id': 'A', 'floor': 3, 'dir': 'down'}, {'id': 'C', 'floor': 8, 'dir': 'down'}], 'calls': [[3, 'down'], [7, 'up']]}, ['B', 'C']), ('control 17', {'floors': 16, 'cars': [{'id': 'B', 'floor': 5, 'dir': 'down'}, {'id': 'C', 'floor': 2, 'dir': 'down'}, {'id': 'A', 'floor': 0, 'dir': 'idle'}, {'id': 'D', 'floor': 13, 'dir': 'up'}], 'calls': [[10, 'down'], [2, 'down']]}, ['A', 'A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('control 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'])], [('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']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['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 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: 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']), ('control 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'])], [('sampled regression 55', {'floors': 11, 'cars': [{'id': 'A', 'floor': 3, 'dir': 'up'}, {'id': 'C', 'floor': 4, 'dir': 'idle'}, {'id': 'B', 'floor': 7, 'dir': 'up'}], 'calls': [[6, 'down'], [4, 'up']]}, ['C', 'A']), ('boundary: opposite-direction approach', {'floors': 10, 'cars': [{'id': 'A', 'floor': 2, 'dir': 'up'}, {'id': 'B', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'down']]}, ['B']), ('sampled regression 76', {'floors': 8, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'down'}, {'id': 'B', 'floor': 6, 'dir': 'idle'}, {'id': 'C', 'floor': 4, 'dir': 'up'}], 'calls': [[3, 'up']]}, ['A']), ('boundary: equal scores', {'floors': 10, 'cars': [{'id': 'B', 'floor': 3, 'dir': 'idle'}, {'id': 'A', 'floor': 7, 'dir': 'idle'}], 'calls': [[5, 'up']]}, ['A']), ('boundary: car moving away', {'floors': 10, 'cars': [{'id': 'A', 'floor': 6, 'dir': 'up'}, {'id': 'B', 'floor': 9, '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
sampled regression 1['D', 'D', 'C', 'B']['D', 'D', 'C', 'B']Passed
boundary: opposite-direction approach['B']['B']Passed
sampled regression 46['A', 'D', 'A', 'B']['A', 'D', 'A', 'B']Passed
control 5['D', 'A', 'B', 'A']['D', 'A', 'B', 'A']Passed
boundary: car level with the call while moving['B']['B']Passed
control 4['D', 'D']['D', 'D']Passed
control 7['A', 'A']['A', 'A']Passed
control 10['D']['D']Passed

SHA-256 / 2e2a3bb95a4a92815da339439a4a26bb62385fea11aee03ba84eb74b94ab4aae

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

Case digest / ab7071d0c3617e3cc10e46e3596800d5f3e5ae67623375c5f19e65462fcd64a1