FA-67506 / Elevator dispatch scheduling / Open access
Car call registration and cancellation: double press cancel · case 01
The last remaining call is cancelled by a double press, or earlier calls cannot be cancelled.
ROOT CAUSE
The only remaining call can be cancelled.
VERIFIED REPAIR
Cancel on a repeat press unless it is the only call.
Unsuccessful approach: Cancelling only the most recent call ignores repeat presses of earlier calls.
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'] 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 5', {'floors': 11, 'floor': 1, 'doors_open': True, 'load_kg': 15, 'presses': [10, 10, 8]}, {'calls': [8, 10], 'log': ['registered', 'kept', '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']}), ('boundary: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('sampled regression 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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 67', {'floors': 11, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 4, 0, 0, 9, 6, 2, 3, 9]}, {'calls': [2, 3, 4, 6], 'log': ['registered', 'kept', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('control 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']}), ('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']}), ('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']}), ('control 21', {'floors': 15, 'floor': 0, 'doors_open': True, 'load_kg': 19, 'presses': [7, 14, 5, 9]}, {'calls': [5, 7, 9, 14], 'log': ['registered', 'registered', 'registered', 'registered']})], [('regression: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 24', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 15, 'presses': [10, 5, 5, 2]}, {'calls': [2, 5], 'log': ['invalid', 'registered', 'kept', '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']}), ('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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 71', {'floors': 13, 'floor': 9, 'doors_open': True, 'load_kg': 300, 'presses': [12, 12, 1, 5]}, {'calls': [1, 5, 12], 'log': ['registered', 'kept', 'registered', '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: child presses every button', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 15, 'presses': [1, 2, 3, 4, 5, 6, 7]}, {'calls': [1, 2, 3, 4, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'nuisance', 'nuisance']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 27', {'floors': 8, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [0, 0, 4, -1, 6, 8]}, {'calls': [0, 4, 6], 'log': ['registered', 'kept', 'registered', 'invalid', 'registered', 'invalid']}), ('control 66', {'floors': 9, 'floor': 2, 'doors_open': True, 'load_kg': 300, 'presses': [8, 2, 6, 8]}, {'calls': [6], 'log': ['registered', 'reopen', 'registered', 'cancelled']}), ('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']}), ('control 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: double press of the only call | {'calls': [], 'log': ['registered', 'cancelled']} | {'calls': [3], 'log': ['registered', 'kept']} | Failed |
| boundary: double press cancels | {'calls': [5], 'log': ['registered', 'registered', 'cancelled']} | {'calls': [5], 'log': ['registered', 'registered', 'cancelled']} | Passed |
| sampled regression 5 | {'calls': [8], 'log': ['registered', 'cancelled', 'registered']} | {'calls': [8, 10], 'log': ['registered', 'kept', 'registered']} | Failed |
| boundary: cancel an earlier call | {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']} | {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']} | Passed |
| boundary: own floor with doors closed | {'calls': [4, 6], 'log': ['registered', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Passed |
| sampled regression 1 | {'calls': [7, 8], 'log': ['registered', 'cancelled', 'invalid', 'registered', 'registered']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Failed |
| control 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 / 8897794594dec959c8234cd9f82fe2f2fd9b89c57a1c01db53bdce064038373f
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']:
log.append('reopen')
elif f < 0 or f >= x['floors']:
log.append('invalid')
elif f in calls:
if len(calls) > 1 and calls[-1] == f:
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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 5', {'floors': 11, 'floor': 1, 'doors_open': True, 'load_kg': 15, 'presses': [10, 10, 8]}, {'calls': [8, 10], 'log': ['registered', 'kept', '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']}), ('boundary: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('sampled regression 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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 67', {'floors': 11, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 4, 0, 0, 9, 6, 2, 3, 9]}, {'calls': [2, 3, 4, 6], 'log': ['registered', 'kept', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('control 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']}), ('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']}), ('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']}), ('control 21', {'floors': 15, 'floor': 0, 'doors_open': True, 'load_kg': 19, 'presses': [7, 14, 5, 9]}, {'calls': [5, 7, 9, 14], 'log': ['registered', 'registered', 'registered', 'registered']})], [('regression: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 24', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 15, 'presses': [10, 5, 5, 2]}, {'calls': [2, 5], 'log': ['invalid', 'registered', 'kept', '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']}), ('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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 71', {'floors': 13, 'floor': 9, 'doors_open': True, 'load_kg': 300, 'presses': [12, 12, 1, 5]}, {'calls': [1, 5, 12], 'log': ['registered', 'kept', 'registered', '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: child presses every button', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 15, 'presses': [1, 2, 3, 4, 5, 6, 7]}, {'calls': [1, 2, 3, 4, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'nuisance', 'nuisance']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 27', {'floors': 8, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [0, 0, 4, -1, 6, 8]}, {'calls': [0, 4, 6], 'log': ['registered', 'kept', 'registered', 'invalid', 'registered', 'invalid']}), ('control 66', {'floors': 9, 'floor': 2, 'doors_open': True, 'load_kg': 300, 'presses': [8, 2, 6, 8]}, {'calls': [6], 'log': ['registered', 'reopen', 'registered', 'cancelled']}), ('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']}), ('control 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: double press of the only call | {'calls': [3], 'log': ['registered', 'kept']} | {'calls': [3], 'log': ['registered', 'kept']} | Passed |
| boundary: double press cancels | {'calls': [3, 5], 'log': ['registered', 'registered', 'kept']} | {'calls': [5], 'log': ['registered', 'registered', 'cancelled']} | Failed |
| sampled regression 5 | {'calls': [8, 10], 'log': ['registered', 'kept', 'registered']} | {'calls': [8, 10], 'log': ['registered', 'kept', 'registered']} | Passed |
| boundary: cancel an earlier call | {'calls': [3, 5, 7], 'log': ['registered', 'registered', 'registered', 'kept']} | {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']} | Failed |
| boundary: own floor with doors closed | {'calls': [4, 6], 'log': ['registered', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Passed |
| sampled regression 1 | {'calls': [7, 8], 'log': ['registered', 'kept', 'invalid', 'registered', 'kept']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Failed |
| control 4 | {'calls': [0, 4, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'kept']} | {'calls': [0, 4], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'cancelled']} | Failed |
| control 7 | {'calls': [0, 2, 4, 5, 6], 'log': ['registered', 'registered', 'kept', 'registered', 'registered', 'registered']} | {'calls': [0, 4, 5, 6], 'log': ['registered', 'registered', 'cancelled', 'registered', 'registered', 'registered']} | Failed |
SHA-256 / 9feb60aebd1dee6bd68c8235ec6b7d65cce852fbc41f84a3c131b0ff27505076
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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 5', {'floors': 11, 'floor': 1, 'doors_open': True, 'load_kg': 15, 'presses': [10, 10, 8]}, {'calls': [8, 10], 'log': ['registered', 'kept', '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']}), ('boundary: own floor with doors closed', {'floors': 10, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 6]}, {'calls': [4, 6], 'log': ['registered', 'registered']}), ('sampled regression 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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 67', {'floors': 11, 'floor': 4, 'doors_open': False, 'load_kg': 80, 'presses': [4, 4, 0, 0, 9, 6, 2, 3, 9]}, {'calls': [2, 3, 4, 6], 'log': ['registered', 'kept', 'registered', 'cancelled', 'registered', 'registered', 'registered', 'registered', 'cancelled']}), ('control 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']}), ('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']}), ('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']}), ('control 21', {'floors': 15, 'floor': 0, 'doors_open': True, 'load_kg': 19, 'presses': [7, 14, 5, 9]}, {'calls': [5, 7, 9, 14], 'log': ['registered', 'registered', 'registered', 'registered']})], [('regression: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 24', {'floors': 10, 'floor': 8, 'doors_open': False, 'load_kg': 15, 'presses': [10, 5, 5, 2]}, {'calls': [2, 5], 'log': ['invalid', 'registered', 'kept', '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']}), ('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']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 71', {'floors': 13, 'floor': 9, 'doors_open': True, 'load_kg': 300, 'presses': [12, 12, 1, 5]}, {'calls': [1, 5, 12], 'log': ['registered', 'kept', 'registered', '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: child presses every button', {'floors': 12, 'floor': 0, 'doors_open': False, 'load_kg': 15, 'presses': [1, 2, 3, 4, 5, 6, 7]}, {'calls': [1, 2, 3, 4, 5], 'log': ['registered', 'registered', 'registered', 'registered', 'registered', 'nuisance', 'nuisance']}), ('control 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: double press of the only call', {'floors': 10, 'floor': 0, 'doors_open': False, 'load_kg': 80, 'presses': [3, 3]}, {'calls': [3], 'log': ['registered', 'kept']}), ('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 27', {'floors': 8, 'floor': 4, 'doors_open': False, 'load_kg': 300, 'presses': [0, 0, 4, -1, 6, 8]}, {'calls': [0, 4, 6], 'log': ['registered', 'kept', 'registered', 'invalid', 'registered', 'invalid']}), ('control 66', {'floors': 9, 'floor': 2, 'doors_open': True, 'load_kg': 300, 'presses': [8, 2, 6, 8]}, {'calls': [6], 'log': ['registered', 'reopen', 'registered', 'cancelled']}), ('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']}), ('control 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: double press of the only call | {'calls': [3], 'log': ['registered', 'kept']} | {'calls': [3], 'log': ['registered', 'kept']} | Passed |
| boundary: double press cancels | {'calls': [5], 'log': ['registered', 'registered', 'cancelled']} | {'calls': [5], 'log': ['registered', 'registered', 'cancelled']} | Passed |
| sampled regression 5 | {'calls': [8, 10], 'log': ['registered', 'kept', 'registered']} | {'calls': [8, 10], 'log': ['registered', 'kept', 'registered']} | Passed |
| boundary: cancel an earlier call | {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']} | {'calls': [3, 7], 'log': ['registered', 'registered', 'registered', 'cancelled']} | Passed |
| boundary: own floor with doors closed | {'calls': [4, 6], 'log': ['registered', 'registered']} | {'calls': [4, 6], 'log': ['registered', 'registered']} | Passed |
| sampled regression 1 | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | {'calls': [8], 'log': ['registered', 'kept', 'invalid', 'registered', 'cancelled']} | Passed |
| control 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 / be7d066990ce2fbf14824d432ed307e23c41f92f56f2935f4717971851f7f063
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.491610+00:00.
Case digest / 6fe25a50addc3323a9fa71b611642868549013003d191f9a5bbe2bec8cec6f2b