FAILURE MAP
← Case archive

FA-67726 / Elevator dispatch scheduling / Open access

Double-deck car stop planning: shaft reach limits · case 01

Stops are planned where one of the decks would leave the shaft.

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

ROOT CAUSE

The limits allow the lower deck at floor 0 and at the top floor.

VERIFIED REPAIR

Keep car positions within 1..top-1.

Unsuccessful approach: Letting the car reach the top puts the upper deck above the shaft.

Case contract

A double-deck car has a lower deck and an upper deck one floor above it; the car position is the lower deck floor. With lower_odd the lower deck serves odd destinations and the upper deck even ones (reversed otherwise). A destination served by the upper deck needs car position dest-1. Positions must lie in 1..top-1 (the lower deck never reaches the top floor); unreachable destinations are rejected. Return sorted unique stop positions, deck per destination and rejected destinations in input order.

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):
    stops = set()
    deck = {}
    rejected = []
    for d in x['dests']:
        lower = (d % 2 == 1) == x['lower_odd']
        pos = d if lower else d - 1
        if pos < 0 or pos > x['top']:
            rejected.append(d)
            continue
        deck[str(d)] = 'lower' if lower else 'upper'
        stops.add(pos)
    return {'stops': sorted(stops), 'deck_of': deck, 'rejected': rejected}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('sampled regression 2', {'top': 21, 'lower_odd': True, 'dests': [21, 20, 0, 16, 19, 7]}, {'stops': [7, 15, 19], 'deck_of': {'20': 'upper', '16': 'upper', '19': 'lower', '7': 'lower'}, 'rejected': [21, 0]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('boundary: even-lower convention', {'top': 20, 'lower_odd': False, 'dests': [6, 7]}, {'stops': [6], 'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': []}), ('control 1', {'top': 30, 'lower_odd': True, 'dests': [0]}, {'stops': [], 'deck_of': {}, 'rejected': [0]}), ('control 4', {'top': 20, 'lower_odd': False, 'dests': [19, 3]}, {'stops': [2, 18], 'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': []}), ('control 7', {'top': 21, 'lower_odd': False, 'dests': [9, 10, 3, 4, 7]}, {'stops': [2, 4, 6, 8, 10], 'deck_of': {'9': 'upper', '10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper'}, 'rejected': []})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 44', {'top': 21, 'lower_odd': False, 'dests': [1, 21, 20]}, {'stops': [20], 'deck_of': {'21': 'upper', '20': 'lower'}, 'rejected': [1]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('control 12', {'top': 21, 'lower_odd': True, 'dests': [7, 16, 15, 14, 18, 5]}, {'stops': [5, 7, 13, 15, 17], 'deck_of': {'7': 'lower', '16': 'upper', '15': 'lower', '14': 'upper', '18': 'upper', '5': 'lower'}, 'rejected': []}), ('control 15', {'top': 21, 'lower_odd': False, 'dests': [2]}, {'stops': [2], 'deck_of': {'2': 'lower'}, 'rejected': []}), ('control 18', {'top': 30, 'lower_odd': True, 'dests': [1, 2, 16, 17, 9, 14]}, {'stops': [1, 9, 13, 15, 17], 'deck_of': {'1': 'lower', '2': 'upper', '16': 'upper', '17': 'lower', '9': 'lower', '14': 'upper'}, 'rejected': []})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 74', {'top': 20, 'lower_odd': False, 'dests': [4, 1, 8, 18, 18]}, {'stops': [4, 8, 18], 'deck_of': {'4': 'lower', '8': 'lower', '18': 'lower'}, 'rejected': [1]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('control 23', {'top': 20, 'lower_odd': True, 'dests': [11, 6, 9, 18, 10, 19]}, {'stops': [5, 9, 11, 17, 19], 'deck_of': {'11': 'lower', '6': 'upper', '9': 'lower', '18': 'upper', '10': 'upper', '19': 'lower'}, 'rejected': []}), ('control 26', {'top': 20, 'lower_odd': True, 'dests': [0, 7, 4, 8, 20]}, {'stops': [3, 7, 19], 'deck_of': {'7': 'lower', '4': 'upper', '8': 'upper', '20': 'upper'}, 'rejected': [0]}), ('sampled regression 29', {'top': 21, 'lower_odd': False, 'dests': [3, 12, 13, 19, 1]}, {'stops': [2, 12, 18], 'deck_of': {'3': 'upper', '12': 'lower', '13': 'upper', '19': 'upper'}, 'rejected': [1]})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('control 34', {'top': 20, 'lower_odd': True, 'dests': [5, 0]}, {'stops': [5], 'deck_of': {'5': 'lower'}, 'rejected': [0]}), ('control 37', {'top': 30, 'lower_odd': False, 'dests': [18, 28, 28]}, {'stops': [18, 28], 'deck_of': {'18': 'lower', '28': 'lower'}, 'rejected': []}), ('sampled regression 40', {'top': 20, 'lower_odd': False, 'dests': [11, 14, 12, 8, 0, 4]}, {'stops': [4, 8, 10, 12, 14], 'deck_of': {'11': 'upper', '14': 'lower', '12': 'lower', '8': 'lower', '4': 'lower'}, 'rejected': [0]})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('sampled regression 45', {'top': 30, 'lower_odd': False, 'dests': [1, 11, 0, 7, 22]}, {'stops': [6, 10, 22], 'deck_of': {'11': 'upper', '7': 'upper', '22': 'lower'}, 'rejected': [1, 0]}), ('control 48', {'top': 20, 'lower_odd': True, 'dests': [7, 1, 12, 15, 14, 20]}, {'stops': [1, 7, 11, 13, 15, 19], 'deck_of': {'7': 'lower', '1': 'lower', '12': 'upper', '15': 'lower', '14': 'upper', '20': 'upper'}, 'rejected': []}), ('control 54', {'top': 30, 'lower_odd': True, 'dests': [29]}, {'stops': [29], 'deck_of': {'29': 'lower'}, 'rejected': []})]]
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: top floor by the lower deck{'deck_of': {'21': 'lower'}, 'rejected': [], 'stops': [21]}{'deck_of': {}, 'rejected': [21], 'stops': []}Failed
sampled regression 5{'deck_of': {'16': 'upper', '21': 'lower', '7': 'lower'}, 'rejected': [], 'stops': [7, 15, 21]}{'deck_of': {'16': 'upper', '7': 'lower'}, 'rejected': [21], 'stops': [7, 15]}Failed
sampled regression 2{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '21': 'lower', '7': 'lower'}, 'rejected': [0], 'stops': [7, 15, 19, 21]}{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '7': 'lower'}, 'rejected': [21, 0], 'stops': [7, 15, 19]}Failed
boundary: odd and even floors share a stop{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}Passed
boundary: even-lower convention{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}Passed
control 1{'deck_of': {}, 'rejected': [0], 'stops': []}{'deck_of': {}, 'rejected': [0], 'stops': []}Passed
control 4{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}Passed
control 7{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}Passed

SHA-256 / c0a900a8d136ec7bdae22ea8b5dce78369ce46916bd47da970f1107c812245c0

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    stops = set()
    deck = {}
    rejected = []
    for d in x['dests']:
        lower = (d % 2 == 1) == x['lower_odd']
        pos = d if lower else d - 1
        if pos < 1 or pos > x['top']:
            rejected.append(d)
            continue
        deck[str(d)] = 'lower' if lower else 'upper'
        stops.add(pos)
    return {'stops': sorted(stops), 'deck_of': deck, 'rejected': rejected}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('sampled regression 2', {'top': 21, 'lower_odd': True, 'dests': [21, 20, 0, 16, 19, 7]}, {'stops': [7, 15, 19], 'deck_of': {'20': 'upper', '16': 'upper', '19': 'lower', '7': 'lower'}, 'rejected': [21, 0]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('boundary: even-lower convention', {'top': 20, 'lower_odd': False, 'dests': [6, 7]}, {'stops': [6], 'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': []}), ('control 1', {'top': 30, 'lower_odd': True, 'dests': [0]}, {'stops': [], 'deck_of': {}, 'rejected': [0]}), ('control 4', {'top': 20, 'lower_odd': False, 'dests': [19, 3]}, {'stops': [2, 18], 'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': []}), ('control 7', {'top': 21, 'lower_odd': False, 'dests': [9, 10, 3, 4, 7]}, {'stops': [2, 4, 6, 8, 10], 'deck_of': {'9': 'upper', '10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper'}, 'rejected': []})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 44', {'top': 21, 'lower_odd': False, 'dests': [1, 21, 20]}, {'stops': [20], 'deck_of': {'21': 'upper', '20': 'lower'}, 'rejected': [1]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('control 12', {'top': 21, 'lower_odd': True, 'dests': [7, 16, 15, 14, 18, 5]}, {'stops': [5, 7, 13, 15, 17], 'deck_of': {'7': 'lower', '16': 'upper', '15': 'lower', '14': 'upper', '18': 'upper', '5': 'lower'}, 'rejected': []}), ('control 15', {'top': 21, 'lower_odd': False, 'dests': [2]}, {'stops': [2], 'deck_of': {'2': 'lower'}, 'rejected': []}), ('control 18', {'top': 30, 'lower_odd': True, 'dests': [1, 2, 16, 17, 9, 14]}, {'stops': [1, 9, 13, 15, 17], 'deck_of': {'1': 'lower', '2': 'upper', '16': 'upper', '17': 'lower', '9': 'lower', '14': 'upper'}, 'rejected': []})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 74', {'top': 20, 'lower_odd': False, 'dests': [4, 1, 8, 18, 18]}, {'stops': [4, 8, 18], 'deck_of': {'4': 'lower', '8': 'lower', '18': 'lower'}, 'rejected': [1]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('control 23', {'top': 20, 'lower_odd': True, 'dests': [11, 6, 9, 18, 10, 19]}, {'stops': [5, 9, 11, 17, 19], 'deck_of': {'11': 'lower', '6': 'upper', '9': 'lower', '18': 'upper', '10': 'upper', '19': 'lower'}, 'rejected': []}), ('control 26', {'top': 20, 'lower_odd': True, 'dests': [0, 7, 4, 8, 20]}, {'stops': [3, 7, 19], 'deck_of': {'7': 'lower', '4': 'upper', '8': 'upper', '20': 'upper'}, 'rejected': [0]}), ('sampled regression 29', {'top': 21, 'lower_odd': False, 'dests': [3, 12, 13, 19, 1]}, {'stops': [2, 12, 18], 'deck_of': {'3': 'upper', '12': 'lower', '13': 'upper', '19': 'upper'}, 'rejected': [1]})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('control 34', {'top': 20, 'lower_odd': True, 'dests': [5, 0]}, {'stops': [5], 'deck_of': {'5': 'lower'}, 'rejected': [0]}), ('control 37', {'top': 30, 'lower_odd': False, 'dests': [18, 28, 28]}, {'stops': [18, 28], 'deck_of': {'18': 'lower', '28': 'lower'}, 'rejected': []}), ('sampled regression 40', {'top': 20, 'lower_odd': False, 'dests': [11, 14, 12, 8, 0, 4]}, {'stops': [4, 8, 10, 12, 14], 'deck_of': {'11': 'upper', '14': 'lower', '12': 'lower', '8': 'lower', '4': 'lower'}, 'rejected': [0]})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('sampled regression 45', {'top': 30, 'lower_odd': False, 'dests': [1, 11, 0, 7, 22]}, {'stops': [6, 10, 22], 'deck_of': {'11': 'upper', '7': 'upper', '22': 'lower'}, 'rejected': [1, 0]}), ('control 48', {'top': 20, 'lower_odd': True, 'dests': [7, 1, 12, 15, 14, 20]}, {'stops': [1, 7, 11, 13, 15, 19], 'deck_of': {'7': 'lower', '1': 'lower', '12': 'upper', '15': 'lower', '14': 'upper', '20': 'upper'}, 'rejected': []}), ('control 54', {'top': 30, 'lower_odd': True, 'dests': [29]}, {'stops': [29], 'deck_of': {'29': 'lower'}, 'rejected': []})]]
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: top floor by the lower deck{'deck_of': {'21': 'lower'}, 'rejected': [], 'stops': [21]}{'deck_of': {}, 'rejected': [21], 'stops': []}Failed
sampled regression 5{'deck_of': {'16': 'upper', '21': 'lower', '7': 'lower'}, 'rejected': [], 'stops': [7, 15, 21]}{'deck_of': {'16': 'upper', '7': 'lower'}, 'rejected': [21], 'stops': [7, 15]}Failed
sampled regression 2{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '21': 'lower', '7': 'lower'}, 'rejected': [0], 'stops': [7, 15, 19, 21]}{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '7': 'lower'}, 'rejected': [21, 0], 'stops': [7, 15, 19]}Failed
boundary: odd and even floors share a stop{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}Passed
boundary: even-lower convention{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}Passed
control 1{'deck_of': {}, 'rejected': [0], 'stops': []}{'deck_of': {}, 'rejected': [0], 'stops': []}Passed
control 4{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}Passed
control 7{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}Passed

SHA-256 / 2c4eb1a5dc1ee456dea968cc521eea5f599725f7f901d65d7937b4133b8bad05

3 / The verified repair

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

N = 1
observations = []
def solve(x):
    stops = set()
    deck = {}
    rejected = []
    for d in x['dests']:
        lower = (d % 2 == 1) == x['lower_odd']
        pos = d if lower else d - 1
        if pos < 1 or pos > x['top'] - 1:
            rejected.append(d)
            continue
        deck[str(d)] = 'lower' if lower else 'upper'
        stops.add(pos)
    return {'stops': sorted(stops), 'deck_of': deck, 'rejected': rejected}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('sampled regression 2', {'top': 21, 'lower_odd': True, 'dests': [21, 20, 0, 16, 19, 7]}, {'stops': [7, 15, 19], 'deck_of': {'20': 'upper', '16': 'upper', '19': 'lower', '7': 'lower'}, 'rejected': [21, 0]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('boundary: even-lower convention', {'top': 20, 'lower_odd': False, 'dests': [6, 7]}, {'stops': [6], 'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': []}), ('control 1', {'top': 30, 'lower_odd': True, 'dests': [0]}, {'stops': [], 'deck_of': {}, 'rejected': [0]}), ('control 4', {'top': 20, 'lower_odd': False, 'dests': [19, 3]}, {'stops': [2, 18], 'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': []}), ('control 7', {'top': 21, 'lower_odd': False, 'dests': [9, 10, 3, 4, 7]}, {'stops': [2, 4, 6, 8, 10], 'deck_of': {'9': 'upper', '10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper'}, 'rejected': []})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 44', {'top': 21, 'lower_odd': False, 'dests': [1, 21, 20]}, {'stops': [20], 'deck_of': {'21': 'upper', '20': 'lower'}, 'rejected': [1]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('control 12', {'top': 21, 'lower_odd': True, 'dests': [7, 16, 15, 14, 18, 5]}, {'stops': [5, 7, 13, 15, 17], 'deck_of': {'7': 'lower', '16': 'upper', '15': 'lower', '14': 'upper', '18': 'upper', '5': 'lower'}, 'rejected': []}), ('control 15', {'top': 21, 'lower_odd': False, 'dests': [2]}, {'stops': [2], 'deck_of': {'2': 'lower'}, 'rejected': []}), ('control 18', {'top': 30, 'lower_odd': True, 'dests': [1, 2, 16, 17, 9, 14]}, {'stops': [1, 9, 13, 15, 17], 'deck_of': {'1': 'lower', '2': 'upper', '16': 'upper', '17': 'lower', '9': 'lower', '14': 'upper'}, 'rejected': []})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 74', {'top': 20, 'lower_odd': False, 'dests': [4, 1, 8, 18, 18]}, {'stops': [4, 8, 18], 'deck_of': {'4': 'lower', '8': 'lower', '18': 'lower'}, 'rejected': [1]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('control 23', {'top': 20, 'lower_odd': True, 'dests': [11, 6, 9, 18, 10, 19]}, {'stops': [5, 9, 11, 17, 19], 'deck_of': {'11': 'lower', '6': 'upper', '9': 'lower', '18': 'upper', '10': 'upper', '19': 'lower'}, 'rejected': []}), ('control 26', {'top': 20, 'lower_odd': True, 'dests': [0, 7, 4, 8, 20]}, {'stops': [3, 7, 19], 'deck_of': {'7': 'lower', '4': 'upper', '8': 'upper', '20': 'upper'}, 'rejected': [0]}), ('sampled regression 29', {'top': 21, 'lower_odd': False, 'dests': [3, 12, 13, 19, 1]}, {'stops': [2, 12, 18], 'deck_of': {'3': 'upper', '12': 'lower', '13': 'upper', '19': 'upper'}, 'rejected': [1]})], [('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 14', {'top': 20, 'lower_odd': False, 'dests': [5, 21, 17, 0, 13, 8]}, {'stops': [4, 8, 12, 16], 'deck_of': {'5': 'upper', '17': 'upper', '13': 'upper', '8': 'lower'}, 'rejected': [21, 0]}), ('sampled regression 5', {'top': 21, 'lower_odd': True, 'dests': [21, 7, 16]}, {'stops': [7, 15], 'deck_of': {'7': 'lower', '16': 'upper'}, 'rejected': [21]}), ('boundary: odd and even floors share a stop', {'top': 20, 'lower_odd': True, 'dests': [5, 6]}, {'stops': [5], 'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': []}), ('control 34', {'top': 20, 'lower_odd': True, 'dests': [5, 0]}, {'stops': [5], 'deck_of': {'5': 'lower'}, 'rejected': [0]}), ('control 37', {'top': 30, 'lower_odd': False, 'dests': [18, 28, 28]}, {'stops': [18, 28], 'deck_of': {'18': 'lower', '28': 'lower'}, 'rejected': []}), ('sampled regression 40', {'top': 20, 'lower_odd': False, 'dests': [11, 14, 12, 8, 0, 4]}, {'stops': [4, 8, 10, 12, 14], 'deck_of': {'11': 'upper', '14': 'lower', '12': 'lower', '8': 'lower', '4': 'lower'}, 'rejected': [0]})], [('regression: top floor by the lower deck', {'top': 21, 'lower_odd': True, 'dests': [21]}, {'stops': [], 'deck_of': {}, 'rejected': [21]}), ('sampled regression 51', {'top': 21, 'lower_odd': True, 'dests': [22, 5, 13]}, {'stops': [5, 13], 'deck_of': {'5': 'lower', '13': 'lower'}, 'rejected': [22]}), ('boundary: top floor by the upper deck', {'top': 20, 'lower_odd': True, 'dests': [20]}, {'stops': [19], 'deck_of': {'20': 'upper'}, 'rejected': []}), ('regression: floor one by the upper deck', {'top': 20, 'lower_odd': False, 'dests': [1]}, {'stops': [], 'deck_of': {}, 'rejected': [1]}), ('boundary: repeated destinations', {'top': 20, 'lower_odd': True, 'dests': [9, 9, 10]}, {'stops': [9], 'deck_of': {'9': 'lower', '10': 'upper'}, 'rejected': []}), ('sampled regression 45', {'top': 30, 'lower_odd': False, 'dests': [1, 11, 0, 7, 22]}, {'stops': [6, 10, 22], 'deck_of': {'11': 'upper', '7': 'upper', '22': 'lower'}, 'rejected': [1, 0]}), ('control 48', {'top': 20, 'lower_odd': True, 'dests': [7, 1, 12, 15, 14, 20]}, {'stops': [1, 7, 11, 13, 15, 19], 'deck_of': {'7': 'lower', '1': 'lower', '12': 'upper', '15': 'lower', '14': 'upper', '20': 'upper'}, 'rejected': []}), ('control 54', {'top': 30, 'lower_odd': True, 'dests': [29]}, {'stops': [29], 'deck_of': {'29': 'lower'}, 'rejected': []})]]
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: top floor by the lower deck{'deck_of': {}, 'rejected': [21], 'stops': []}{'deck_of': {}, 'rejected': [21], 'stops': []}Passed
sampled regression 5{'deck_of': {'16': 'upper', '7': 'lower'}, 'rejected': [21], 'stops': [7, 15]}{'deck_of': {'16': 'upper', '7': 'lower'}, 'rejected': [21], 'stops': [7, 15]}Passed
sampled regression 2{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '7': 'lower'}, 'rejected': [21, 0], 'stops': [7, 15, 19]}{'deck_of': {'16': 'upper', '19': 'lower', '20': 'upper', '7': 'lower'}, 'rejected': [21, 0], 'stops': [7, 15, 19]}Passed
boundary: odd and even floors share a stop{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}{'deck_of': {'5': 'lower', '6': 'upper'}, 'rejected': [], 'stops': [5]}Passed
boundary: even-lower convention{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}{'deck_of': {'6': 'lower', '7': 'upper'}, 'rejected': [], 'stops': [6]}Passed
control 1{'deck_of': {}, 'rejected': [0], 'stops': []}{'deck_of': {}, 'rejected': [0], 'stops': []}Passed
control 4{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}{'deck_of': {'19': 'upper', '3': 'upper'}, 'rejected': [], 'stops': [2, 18]}Passed
control 7{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}{'deck_of': {'10': 'lower', '3': 'upper', '4': 'lower', '7': 'upper', '9': 'upper'}, 'rejected': [], 'stops': [2, 4, 6, 8, 10]}Passed

SHA-256 / 9118ed5388a7053ff7790e107d78ecf7640984a93a9e7c635b6af176ca90f008

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

Case digest / c961a9c7446be410db931a798dabee18b0efc76555589a279405ce02945816e3