FA-67496 / Elevator dispatch scheduling / Open access
Car call registration and cancellation: door reopen condition · case 01
Pressing the current floor with doors closed is swallowed instead of registered.
ROOT CAUSE
The reopen branch ignores whether the doors are open.
VERIFIED REPAIR
Reopen only when the doors are open at the pressed floor.
Unsuccessful approach: Requiring no other calls registers a reopen request as a call once any call exists.
Case contract
Car buttons are processed in order. Pressing the current floor with doors open reopens the doors. Floors outside 0..floors-1 are invalid. Pressing an already registered floor cancels it, unless it is the only call (kept). With load under 20 kg, a new call is refused as nuisance once five calls are registered. Otherwise the call is registered. Return the sorted calls and the per-press log.
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):
calls = []
log = []
for f in x['presses']:
if f == x['floor']:
log.append('reopen')
elif f < 0 or f >= x['floors']:
log.append('invalid')
elif f in calls:
if len(calls) > 1:
calls.remove(f)
log.append('cancelled')
else:
log.append('kept')
elif x['load_kg'] < 20 and len(calls) >= 5:
log.append('nuisance')
else:
calls.append(f)
log.append('registered')
return {'calls': sorted(calls), 'log': log}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 3', {'floors': 7, 'floor': 3, 'doors_open': True, 'load_kg': 20, 'presses': [0, 5, 5, 0, 3, 3, -1]}, {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']}), ('sampled regression 8', {'floors': 7, 'floor': 0, 'doors_open': False, 'load_kg': 21, 'presses': [1, 0, 0, 6, -1, 5]}, {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('boundary: own floor with doors open', {'floors': 10, 'floor': 4, 'doors_open': True, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [6], 'log': ['reopen', 'registered']}), ('control 1', {'floors': 12, 'floor': 6, 'doors_open': True, 'load_kg': 19, 'presses': [7, 7, -1, 8, 7]}, {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']}), ('sampled regression 4', {'floors': 7, 'floor': 6, 'doors_open': False, 'load_kg': 19, 'presses': [0, 6, 6, 6, 4, 6]}, {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']}), ('control 7', {'floors': 7, 'floor': 1, 'doors_open': False, 'load_kg': 19, 'presses': [2, 0, 2, 5, 4, 6]}, {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('sampled regression 39', {'floors': 7, 'floor': 3, 'doors_open': False, 'load_kg': 300, 'presses': [-1, 0, -1, 0, 3, 6, 1]}, {'calls': [0, 1, 3, 6], 'log': ['invalid', 'registered', 'invalid', 'kept', 'registered', 'registered', 'registered']}), ('control 33', {'floors': 11, 'floor': 8, 'doors_open': True, 'load_kg': 15, 'presses': [9, 10, 6, 5, 10, 10, 8, 2, 9]}, {'calls': [2, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'registered', 'reopen', 'registered', 'cancelled']}), ('boundary: basement button that does not exist', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [-1, 3]}, {'calls': [3], 'log': ['invalid', 'registered']}), ('control 12', {'floors': 13, 'floor': 5, 'doors_open': True, 'load_kg': 21, 'presses': [2, 3, 11]}, {'calls': [2, 3, 11], 'log': ['registered', 'registered', 'registered']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 18', {'floors': 9, 'floor': 4, 'doors_open': True, 'load_kg': 19, 'presses': [3, 0, 5, 2, 7, 7, -1, 0]}, {'calls': [2, 3, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'cancelled', 'invalid', 'cancelled']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 16', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 20, 'presses': [10, 12, 9, 2, 2]}, {'calls': [10, 12], 'log': ['registered', 'registered', 'reopen', 'registered', 'cancelled']}), ('sampled regression 72', {'floors': 6, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [3, 0, 2, 0, 4]}, {'calls': [2, 3, 4], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered']}), ('control 46', {'floors': 10, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [0, 9, 4, 7, 3, 6, 9, 7, 9]}, {'calls': [0, 4, 6, 9], 'log': ['registered', 'registered', 'registered', 'registered', 'reopen', 'registered', 'cancelled', 'cancelled', 'registered']}), ('boundary: double press cancels', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 3]}, {'calls': [5], 'log': ['registered', 'registered', 'cancelled']}), ('sampled regression 23', {'floors': 14, 'floor': 2, 'doors_open': False, 'load_kg': 15, 'presses': [2, 14, 1, 0, -1, 14, 5, 13]}, {'calls': [0, 1, 2, 5, 13], 'log': ['registered', 'invalid', 'registered', 'registered', 'invalid', 'invalid', 'registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('control 29', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 20, 'presses': [10, 0, 1]}, {'calls': [0, 1], 'log': ['invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 63', {'floors': 13, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [3, 3, 0, 3, 5]}, {'calls': [0, 5], 'log': ['reopen', 'reopen', 'registered', 'reopen', 'registered']}), ('boundary: cancel an earlier call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 7, 5]}, {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 34', {'floors': 11, 'floor': 9, 'doors_open': False, 'load_kg': 0, 'presses': [10, 0, 5, 6, 0, 5, 9, 10, 9]}, {'calls': [6], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'cancelled', 'registered', 'cancelled', 'cancelled']}), ('control 37', {'floors': 10, 'floor': 7, 'doors_open': True, 'load_kg': 80, 'presses': [10, 0, -1, -1, 5]}, {'calls': [0, 5], 'log': ['invalid', 'registered', 'invalid', 'invalid', 'registered']}), ('control 40', {'floors': 13, 'floor': 0, 'doors_open': True, 'load_kg': 15, 'presses': [0, -1, 8, 3]}, {'calls': [3, 8], 'log': ['reopen', 'invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 28', {'floors': 11, 'floor': 4, 'doors_open': True, 'load_kg': 21, 'presses': [9, 7, 9, 4, 10, 1, -1, 10]}, {'calls': [1, 7], 'log': ['registered', 'registered', 'cancelled', 'reopen', 'registered', 'registered', 'invalid', 'cancelled']}), ('sampled regression 60', {'floors': 12, 'floor': 11, 'doors_open': False, 'load_kg': 21, 'presses': [11, 3]}, {'calls': [3, 11], 'log': ['registered', 'registered']}), ('control 78', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 0, 'presses': [8, 3, 2, 9, 13, 9, 5, 6, 0]}, {'calls': [2, 3, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'reopen', 'registered', 'nuisance', 'nuisance']}), ('boundary: exactly twenty kilograms', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 20, 'presses': [1, 2, 3, 4, 5, 6]}, {'calls': [1, 2, 3, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'registered']}), ('control 45', {'floors': 10, 'floor': 6, 'doors_open': False, 'load_kg': 20, 'presses': [10, 9, 0, 0, 5, 7, 2, 3, 3]}, {'calls': [2, 5, 7, 9], 'log': ['invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 48', {'floors': 10, 'floor': 2, 'doors_open': False, 'load_kg': 0, 'presses': [6, 10, 7, 2, 7, 4, 9]}, {'calls': [2, 4, 6, 9], 'log': ['registered', 'invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 51', {'floors': 15, 'floor': 9, 'doors_open': True, 'load_kg': 21, 'presses': [13, 6, 9, 10, 9]}, {'calls': [6, 10, 13], 'log': ['registered', 'registered', 'reopen', 'registered', 'reopen']})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: own floor with doors closed | {'calls': [6], 'log': ['reopen', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Failed |
| control 3 | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']} | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']} | Passed |
| sampled regression 8 | {'calls': [1, 5, 6], 'log': ['registered', 'reopen', 'reopen', 'registered', 'invalid', 'registered']} | {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']} | Failed |
| control 13 | {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | Passed |
| boundary: own floor with doors open | {'calls': [6], 'log': ['reopen', 'registered']} | {'calls': [6], 'log': ['reopen', 'registered']} | Passed |
| control 1 | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Passed |
| sampled regression 4 | {'calls': [0, 4], 'log': ['registered', 'reopen', 'reopen', 'reopen', 'registered', 'reopen']} | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | Failed |
| control 7 | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | Passed |
SHA-256 / 5a92802a6dbe6e6aff8c9409a7e5fc30351307d98cd255a80992467d2e0a028c
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
calls = []
log = []
for f in x['presses']:
if f == x['floor'] and x['doors_open'] and not calls:
log.append('reopen')
elif f < 0 or f >= x['floors']:
log.append('invalid')
elif f in calls:
if len(calls) > 1:
calls.remove(f)
log.append('cancelled')
else:
log.append('kept')
elif x['load_kg'] < 20 and len(calls) >= 5:
log.append('nuisance')
else:
calls.append(f)
log.append('registered')
return {'calls': sorted(calls), 'log': log}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 3', {'floors': 7, 'floor': 3, 'doors_open': True, 'load_kg': 20, 'presses': [0, 5, 5, 0, 3, 3, -1]}, {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']}), ('sampled regression 8', {'floors': 7, 'floor': 0, 'doors_open': False, 'load_kg': 21, 'presses': [1, 0, 0, 6, -1, 5]}, {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('boundary: own floor with doors open', {'floors': 10, 'floor': 4, 'doors_open': True, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [6], 'log': ['reopen', 'registered']}), ('control 1', {'floors': 12, 'floor': 6, 'doors_open': True, 'load_kg': 19, 'presses': [7, 7, -1, 8, 7]}, {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']}), ('sampled regression 4', {'floors': 7, 'floor': 6, 'doors_open': False, 'load_kg': 19, 'presses': [0, 6, 6, 6, 4, 6]}, {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']}), ('control 7', {'floors': 7, 'floor': 1, 'doors_open': False, 'load_kg': 19, 'presses': [2, 0, 2, 5, 4, 6]}, {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('sampled regression 39', {'floors': 7, 'floor': 3, 'doors_open': False, 'load_kg': 300, 'presses': [-1, 0, -1, 0, 3, 6, 1]}, {'calls': [0, 1, 3, 6], 'log': ['invalid', 'registered', 'invalid', 'kept', 'registered', 'registered', 'registered']}), ('control 33', {'floors': 11, 'floor': 8, 'doors_open': True, 'load_kg': 15, 'presses': [9, 10, 6, 5, 10, 10, 8, 2, 9]}, {'calls': [2, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'registered', 'reopen', 'registered', 'cancelled']}), ('boundary: basement button that does not exist', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [-1, 3]}, {'calls': [3], 'log': ['invalid', 'registered']}), ('control 12', {'floors': 13, 'floor': 5, 'doors_open': True, 'load_kg': 21, 'presses': [2, 3, 11]}, {'calls': [2, 3, 11], 'log': ['registered', 'registered', 'registered']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 18', {'floors': 9, 'floor': 4, 'doors_open': True, 'load_kg': 19, 'presses': [3, 0, 5, 2, 7, 7, -1, 0]}, {'calls': [2, 3, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'cancelled', 'invalid', 'cancelled']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 16', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 20, 'presses': [10, 12, 9, 2, 2]}, {'calls': [10, 12], 'log': ['registered', 'registered', 'reopen', 'registered', 'cancelled']}), ('sampled regression 72', {'floors': 6, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [3, 0, 2, 0, 4]}, {'calls': [2, 3, 4], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered']}), ('control 46', {'floors': 10, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [0, 9, 4, 7, 3, 6, 9, 7, 9]}, {'calls': [0, 4, 6, 9], 'log': ['registered', 'registered', 'registered', 'registered', 'reopen', 'registered', 'cancelled', 'cancelled', 'registered']}), ('boundary: double press cancels', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 3]}, {'calls': [5], 'log': ['registered', 'registered', 'cancelled']}), ('sampled regression 23', {'floors': 14, 'floor': 2, 'doors_open': False, 'load_kg': 15, 'presses': [2, 14, 1, 0, -1, 14, 5, 13]}, {'calls': [0, 1, 2, 5, 13], 'log': ['registered', 'invalid', 'registered', 'registered', 'invalid', 'invalid', 'registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('control 29', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 20, 'presses': [10, 0, 1]}, {'calls': [0, 1], 'log': ['invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 63', {'floors': 13, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [3, 3, 0, 3, 5]}, {'calls': [0, 5], 'log': ['reopen', 'reopen', 'registered', 'reopen', 'registered']}), ('boundary: cancel an earlier call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 7, 5]}, {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 34', {'floors': 11, 'floor': 9, 'doors_open': False, 'load_kg': 0, 'presses': [10, 0, 5, 6, 0, 5, 9, 10, 9]}, {'calls': [6], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'cancelled', 'registered', 'cancelled', 'cancelled']}), ('control 37', {'floors': 10, 'floor': 7, 'doors_open': True, 'load_kg': 80, 'presses': [10, 0, -1, -1, 5]}, {'calls': [0, 5], 'log': ['invalid', 'registered', 'invalid', 'invalid', 'registered']}), ('control 40', {'floors': 13, 'floor': 0, 'doors_open': True, 'load_kg': 15, 'presses': [0, -1, 8, 3]}, {'calls': [3, 8], 'log': ['reopen', 'invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 28', {'floors': 11, 'floor': 4, 'doors_open': True, 'load_kg': 21, 'presses': [9, 7, 9, 4, 10, 1, -1, 10]}, {'calls': [1, 7], 'log': ['registered', 'registered', 'cancelled', 'reopen', 'registered', 'registered', 'invalid', 'cancelled']}), ('sampled regression 60', {'floors': 12, 'floor': 11, 'doors_open': False, 'load_kg': 21, 'presses': [11, 3]}, {'calls': [3, 11], 'log': ['registered', 'registered']}), ('control 78', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 0, 'presses': [8, 3, 2, 9, 13, 9, 5, 6, 0]}, {'calls': [2, 3, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'reopen', 'registered', 'nuisance', 'nuisance']}), ('boundary: exactly twenty kilograms', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 20, 'presses': [1, 2, 3, 4, 5, 6]}, {'calls': [1, 2, 3, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'registered']}), ('control 45', {'floors': 10, 'floor': 6, 'doors_open': False, 'load_kg': 20, 'presses': [10, 9, 0, 0, 5, 7, 2, 3, 3]}, {'calls': [2, 5, 7, 9], 'log': ['invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 48', {'floors': 10, 'floor': 2, 'doors_open': False, 'load_kg': 0, 'presses': [6, 10, 7, 2, 7, 4, 9]}, {'calls': [2, 4, 6, 9], 'log': ['registered', 'invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 51', {'floors': 15, 'floor': 9, 'doors_open': True, 'load_kg': 21, 'presses': [13, 6, 9, 10, 9]}, {'calls': [6, 10, 13], 'log': ['registered', 'registered', 'reopen', 'registered', 'reopen']})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: own floor with doors closed | {'calls': [4, 6], 'log': ['registered', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Passed |
| control 3 | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'registered', 'cancelled', 'invalid']} | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']} | Failed |
| sampled regression 8 | {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']} | {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']} | Passed |
| control 13 | {'calls': [0, 2, 5, 8, 12, 13], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | Failed |
| boundary: own floor with doors open | {'calls': [6], 'log': ['reopen', 'registered']} | {'calls': [6], 'log': ['reopen', 'registered']} | Passed |
| control 1 | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Passed |
| sampled regression 4 | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | Passed |
| control 7 | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | Passed |
SHA-256 / f0153e348fb721feb22ea6a0b308b5b6ed7a00c94d542808baacf0ae80026e81
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
calls = []
log = []
for f in x['presses']:
if f == x['floor'] and x['doors_open']:
log.append('reopen')
elif f < 0 or f >= x['floors']:
log.append('invalid')
elif f in calls:
if len(calls) > 1:
calls.remove(f)
log.append('cancelled')
else:
log.append('kept')
elif x['load_kg'] < 20 and len(calls) >= 5:
log.append('nuisance')
else:
calls.append(f)
log.append('registered')
return {'calls': sorted(calls), 'log': log}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 3', {'floors': 7, 'floor': 3, 'doors_open': True, 'load_kg': 20, 'presses': [0, 5, 5, 0, 3, 3, -1]}, {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']}), ('sampled regression 8', {'floors': 7, 'floor': 0, 'doors_open': False, 'load_kg': 21, 'presses': [1, 0, 0, 6, -1, 5]}, {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('boundary: own floor with doors open', {'floors': 10, 'floor': 4, 'doors_open': True, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [6], 'log': ['reopen', 'registered']}), ('control 1', {'floors': 12, 'floor': 6, 'doors_open': True, 'load_kg': 19, 'presses': [7, 7, -1, 8, 7]}, {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']}), ('sampled regression 4', {'floors': 7, 'floor': 6, 'doors_open': False, 'load_kg': 19, 'presses': [0, 6, 6, 6, 4, 6]}, {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']}), ('control 7', {'floors': 7, 'floor': 1, 'doors_open': False, 'load_kg': 19, 'presses': [2, 0, 2, 5, 4, 6]}, {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 13', {'floors': 14, 'floor': 12, 'doors_open': True, 'load_kg': 80, 'presses': [8, 0, 1, 12, 1, 13, 2, 5, -1]}, {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']}), ('sampled regression 39', {'floors': 7, 'floor': 3, 'doors_open': False, 'load_kg': 300, 'presses': [-1, 0, -1, 0, 3, 6, 1]}, {'calls': [0, 1, 3, 6], 'log': ['invalid', 'registered', 'invalid', 'kept', 'registered', 'registered', 'registered']}), ('control 33', {'floors': 11, 'floor': 8, 'doors_open': True, 'load_kg': 15, 'presses': [9, 10, 6, 5, 10, 10, 8, 2, 9]}, {'calls': [2, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'registered', 'reopen', 'registered', 'cancelled']}), ('boundary: basement button that does not exist', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [-1, 3]}, {'calls': [3], 'log': ['invalid', 'registered']}), ('control 12', {'floors': 13, 'floor': 5, 'doors_open': True, 'load_kg': 21, 'presses': [2, 3, 11]}, {'calls': [2, 3, 11], 'log': ['registered', 'registered', 'registered']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 18', {'floors': 9, 'floor': 4, 'doors_open': True, 'load_kg': 19, 'presses': [3, 0, 5, 2, 7, 7, -1, 0]}, {'calls': [2, 3, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'cancelled', 'invalid', 'cancelled']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 16', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 20, 'presses': [10, 12, 9, 2, 2]}, {'calls': [10, 12], 'log': ['registered', 'registered', 'reopen', 'registered', 'cancelled']}), ('sampled regression 72', {'floors': 6, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [3, 0, 2, 0, 4]}, {'calls': [2, 3, 4], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered']}), ('control 46', {'floors': 10, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [0, 9, 4, 7, 3, 6, 9, 7, 9]}, {'calls': [0, 4, 6, 9], 'log': ['registered', 'registered', 'registered', 'registered', 'reopen', 'registered', 'cancelled', 'cancelled', 'registered']}), ('boundary: double press cancels', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 3]}, {'calls': [5], 'log': ['registered', 'registered', 'cancelled']}), ('sampled regression 23', {'floors': 14, 'floor': 2, 'doors_open': False, 'load_kg': 15, 'presses': [2, 14, 1, 0, -1, 14, 5, 13]}, {'calls': [0, 1, 2, 5, 13], 'log': ['registered', 'invalid', 'registered', 'registered', 'invalid', 'invalid', 'registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('control 29', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 20, 'presses': [10, 0, 1]}, {'calls': [0, 1], 'log': ['invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 26', {'floors': 10, 'floor': 9, 'doors_open': True, 'load_kg': 15, 'presses': [2, 4, 5, 9, 6, 1, 7, 9]}, {'calls': [1, 2, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'registered', 'nuisance', 'reopen']}), ('sampled regression 15', {'floors': 12, 'floor': 10, 'doors_open': False, 'load_kg': 21, 'presses': [10, 4, 1, 4, 5, 6]}, {'calls': [1, 5, 6, 10], 'log': ['registered', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 63', {'floors': 13, 'floor': 3, 'doors_open': True, 'load_kg': 80, 'presses': [3, 3, 0, 3, 5]}, {'calls': [0, 5], 'log': ['reopen', 'reopen', 'registered', 'reopen', 'registered']}), ('boundary: cancel an earlier call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 5, 7, 5]}, {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 34', {'floors': 11, 'floor': 9, 'doors_open': False, 'load_kg': 0, 'presses': [10, 0, 5, 6, 0, 5, 9, 10, 9]}, {'calls': [6], 'log': ['registered', 'registered', 'registered', 'registered', 'cancelled', 'cancelled', 'registered', 'cancelled', 'cancelled']}), ('control 37', {'floors': 10, 'floor': 7, 'doors_open': True, 'load_kg': 80, 'presses': [10, 0, -1, -1, 5]}, {'calls': [0, 5], 'log': ['invalid', 'registered', 'invalid', 'invalid', 'registered']}), ('control 40', {'floors': 13, 'floor': 0, 'doors_open': True, 'load_kg': 15, 'presses': [0, -1, 8, 3]}, {'calls': [3, 8], 'log': ['reopen', 'invalid', 'registered', 'registered']})], [('regression: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('control 28', {'floors': 11, 'floor': 4, 'doors_open': True, 'load_kg': 21, 'presses': [9, 7, 9, 4, 10, 1, -1, 10]}, {'calls': [1, 7], 'log': ['registered', 'registered', 'cancelled', 'reopen', 'registered', 'registered', 'invalid', 'cancelled']}), ('sampled regression 60', {'floors': 12, 'floor': 11, 'doors_open': False, 'load_kg': 21, 'presses': [11, 3]}, {'calls': [3, 11], 'log': ['registered', 'registered']}), ('control 78', {'floors': 14, 'floor': 9, 'doors_open': True, 'load_kg': 0, 'presses': [8, 3, 2, 9, 13, 9, 5, 6, 0]}, {'calls': [2, 3, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'registered', 'reopen', 'registered', 'nuisance', 'nuisance']}), ('boundary: exactly twenty kilograms', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 20, 'presses': [1, 2, 3, 4, 5, 6]}, {'calls': [1, 2, 3, 4, 5, 6], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'registered']}), ('control 45', {'floors': 10, 'floor': 6, 'doors_open': False, 'load_kg': 20, 'presses': [10, 9, 0, 0, 5, 7, 2, 3, 3]}, {'calls': [2, 5, 7, 9], 'log': ['invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('sampled regression 48', {'floors': 10, 'floor': 2, 'doors_open': False, 'load_kg': 0, 'presses': [6, 10, 7, 2, 7, 4, 9]}, {'calls': [2, 4, 6, 9], 'log': ['registered', 'invalid', 'registered', 'registered', 'cancelled', 'registered', 'registered']}), ('control 51', {'floors': 15, 'floor': 9, 'doors_open': True, 'load_kg': 21, 'presses': [13, 6, 9, 10, 9]}, {'calls': [6, 10, 13], 'log': ['registered', 'registered', 'reopen', 'registered', 'reopen']})]]
for label, args, expected in fixtures[N-1]:
check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: own floor with doors closed | {'calls': [4, 6], 'log': ['registered', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Passed |
| control 3 | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']} | {'calls': [0], 'log': ['registered', 'registered', 'cancelled', 'kept', 'reopen', 'reopen', 'invalid']} | Passed |
| sampled regression 8 | {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']} | {'calls': [1, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'invalid', 'registered']} | Passed |
| control 13 | {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | {'calls': [0, 2, 5, 8, 13], 'log': ['registered', 'registered', 'registered', 'reopen', 'cancelled', 'registered', 'registered', 'registered', 'invalid']} | Passed |
| boundary: own floor with doors open | {'calls': [6], 'log': ['reopen', 'registered']} | {'calls': [6], 'log': ['reopen', 'registered']} | Passed |
| control 1 | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Passed |
| sampled regression 4 | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | Passed |
| control 7 | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | Passed |
SHA-256 / 7a16ef6538c91d3eb7f1f37c31a326b3800d9032ba30b7c0d0bb651536e5e10d
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:53.325408+00:00.
Case digest / 32ffb5b62ca8f0a74c3a0a4f1cfaad86962f5878786274cfad54edf4bf4d46e6