FA-67466 / Elevator dispatch scheduling / Open access
Floor label and index mapping: index range guard · case 01
A negative index returns a label from the top of the building.
ROOT CAUSE
Negative indices fall through to Python negative indexing.
THE FAILURE
Negative indices fall through to Python negative indexing.
Unsuccessful approach: Excluding index 0 loses the lowest floor.
Case contract
Physical indices 0..floors-1 are labelled bottom-up: basements Bk..B1, then G, then M if there is a mezzanine, then 1, 2, 3 ... skipping 13 when skip13. label:i returns the label of index i (None outside the range); index:L returns the index of label L (case-insensitive) or None.
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):
labels = ['B%d' % i for i in range(x['basements'], 0, -1)] + ['G']
if x['mezz']:
labels.append('M')
num = 1
while len(labels) < x['floors']:
if x['skip13'] and num == 13:
num += 1
continue
labels.append(str(num))
num += 1
out = []
for q in x['queries']:
kind, val = q.split(':')
if kind == 'label':
i = int(val)
out.append(labels[i] if i < len(labels) else None)
else:
v = val.upper()
out.append(labels.index(v) if v in labels else None)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('sampled regression 5', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['index:M', 'label:0', 'index:B1', 'index:B1', 'label:-2', 'index:g']}, [3, 'B2', 1, 1, None, 2]), ('boundary: thirteen skipped', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 16, 'queries': ['label:13', 'index:14', 'index:13']}, ['14', 13, None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('control 1', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['label:2', 'index:B1', 'index:B1', 'label:9', 'index:15', 'label:9']}, ['1', None, None, None, None, None]), ('sampled regression 4', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 15, 'queries': ['index:B1', 'label:-1', 'index:g', 'label:13', 'index:13', 'index:14']}, [None, None, 0, '14', None, 13]), ('sampled regression 7', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['index:G', 'index:B2', 'index:14', 'label:8', 'label:-1', 'label:5']}, [1, None, None, '6', None, '3'])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('sampled regression 28', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 12, 'queries': ['label:1', 'label:13', 'index:m', 'index:b2', 'label:-2', 'label:10']}, ['G', None, 2, None, None, '8']), ('control 15', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 15, 'queries': ['label:14', 'index:1', 'index:13', 'label:0', 'label:7', 'index:X']}, ['11', 4, None, 'B2', '4', None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('boundary: ground floor index', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:0', 'index:g', 'index:m']}, ['G', 0, 1]), ('sampled regression 12', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 8, 'queries': ['index:B2', 'index:20', 'index:12', 'index:13', 'index:12', 'label:-1']}, [None, None, None, None, None, None]), ('sampled regression 18', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 18, 'queries': ['index:B1', 'label:-1', 'index:12', 'index:15', 'label:16', 'index:20']}, [0, None, 14, 16, '15', None]), ('control 21', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:11', 'index:b2', 'label:0', 'index:B2', 'label:6', 'index:1']}, [None, 0, 'B2', 0, '3', 4])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: ground floor index', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:0', 'index:g', 'index:m']}, ['G', 0, 1]), ('sampled regression 46', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 10, 'queries': ['label:8', 'index:B1', 'index:14', 'label:-1', 'label:2', 'label:4']}, ['6', 1, None, None, 'G', '2']), ('sampled regression 33', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 12, 'queries': ['label:8', 'index:13', 'label:9', 'label:0', 'label:6', 'label:-1']}, ['6', None, '7', 'B2', '4', None]), ('boundary: twenty-six with skip', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 30, 'queries': ['label:26', 'label:27', 'index:26']}, ['27', '28', 25]), ('control 23', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 18, 'queries': ['index:B2', 'label:5', 'index:15', 'index:B1', 'index:b2', 'index:g']}, [0, '2', 17, 1, 0, 2]), ('sampled regression 26', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 8, 'queries': ['index:G', 'label:-1', 'label:6', 'label:3', 'index:G', 'label:-1']}, [1, None, '4', '1', 1, None]), ('control 29', {'basements': 1, 'mezz': False, 'skip13': False, 'floors': 14, 'queries': ['label:11', 'label:6', 'label:14', 'label:2', 'index:b2', 'index:M']}, ['10', '5', None, '1', None, None])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('sampled regression 53', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 6, 'queries': ['label:6', 'index:B2', 'label:7', 'label:-1', 'index:B2', 'label:1']}, [None, None, None, None, None, 'G']), ('sampled regression 66', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 6, 'queries': ['index:15', 'label:3', 'label:6', 'label:0', 'label:-2', 'label:3']}, [None, '1', None, 'B2', None, '1']), ('boundary: index past the top', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 6, 'queries': ['label:6', 'label:5']}, [None, '5']), ('sampled regression 34', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:B2', 'index:M', 'label:4', 'index:13', 'label:-2', 'label:5']}, [None, None, '4', None, None, '5']), ('control 37', {'basements': 1, 'mezz': False, 'skip13': True, 'floors': 19, 'queries': ['label:15', 'index:17', 'label:5', 'index:15', 'index:M', 'index:B1']}, ['15', 17, '4', 15, None, 0]), ('control 40', {'basements': 1, 'mezz': True, 'skip13': False, 'floors': 13, 'queries': ['index:B2', 'index:B2', 'index:g', 'index:17', 'index:17', 'label:13']}, [None, None, 1, None, None, None])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('sampled regression 74', {'basements': 1, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:14', 'index:g', 'index:G', 'index:20', 'index:X', 'label:-1']}, [None, 1, 1, None, None, None]), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('boundary: thirteen skipped', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 16, 'queries': ['label:13', 'index:14', 'index:13']}, ['14', 13, None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('control 45', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:m', 'index:15', 'label:4', 'index:g', 'index:17', 'label:7']}, [None, None, '4', 0, None, None]), ('sampled regression 48', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 17, 'queries': ['label:8', 'label:5', 'index:m', 'label:13', 'label:-1', 'label:16']}, ['7', '4', 1, '12', None, '16']), ('sampled regression 51', {'basements': 2, 'mezz': False, 'skip13': False, 'floors': 10, 'queries': ['label:6', 'label:-2', 'label:8', 'label:-2', 'label:7', 'index:B1']}, ['4', None, '6', None, '5', 1])]]
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: negative index | ['7', 'B1'] | [None, 'B1'] | Failed |
| boundary: two basements | ['B2', 'B1', 1, 0] | ['B2', 'B1', 1, 0] | Passed |
| sampled regression 5 | [3, 'B2', 1, 1, '4', 2] | [3, 'B2', 1, 1, None, 2] | Failed |
| boundary: thirteen skipped | ['14', 13, None] | ['14', 13, None] | Passed |
| boundary: thirteen kept | ['13', 13] | ['13', 13] | Passed |
| control 1 | ['1', None, None, None, None, None] | ['1', None, None, None, None, None] | Passed |
| sampled regression 4 | [None, '15', 0, '14', None, 13] | [None, None, 0, '14', None, 13] | Failed |
| sampled regression 7 | [1, None, None, '6', '6', '3'] | [1, None, None, '6', None, '3'] | Failed |
SHA-256 / 1511e16457d4a66ab013dbc244be7cea173d8c0bbdcbbc1a14ea178812f11046
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
labels = ['B%d' % i for i in range(x['basements'], 0, -1)] + ['G']
if x['mezz']:
labels.append('M')
num = 1
while len(labels) < x['floors']:
if x['skip13'] and num == 13:
num += 1
continue
labels.append(str(num))
num += 1
out = []
for q in x['queries']:
kind, val = q.split(':')
if kind == 'label':
i = int(val)
out.append(labels[i] if 0 < i < len(labels) else None)
else:
v = val.upper()
out.append(labels.index(v) if v in labels else None)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('sampled regression 5', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['index:M', 'label:0', 'index:B1', 'index:B1', 'label:-2', 'index:g']}, [3, 'B2', 1, 1, None, 2]), ('boundary: thirteen skipped', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 16, 'queries': ['label:13', 'index:14', 'index:13']}, ['14', 13, None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('control 1', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['label:2', 'index:B1', 'index:B1', 'label:9', 'index:15', 'label:9']}, ['1', None, None, None, None, None]), ('sampled regression 4', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 15, 'queries': ['index:B1', 'label:-1', 'index:g', 'label:13', 'index:13', 'index:14']}, [None, None, 0, '14', None, 13]), ('sampled regression 7', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 9, 'queries': ['index:G', 'index:B2', 'index:14', 'label:8', 'label:-1', 'label:5']}, [1, None, None, '6', None, '3'])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('sampled regression 28', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 12, 'queries': ['label:1', 'label:13', 'index:m', 'index:b2', 'label:-2', 'label:10']}, ['G', None, 2, None, None, '8']), ('control 15', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 15, 'queries': ['label:14', 'index:1', 'index:13', 'label:0', 'label:7', 'index:X']}, ['11', 4, None, 'B2', '4', None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('boundary: ground floor index', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:0', 'index:g', 'index:m']}, ['G', 0, 1]), ('sampled regression 12', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 8, 'queries': ['index:B2', 'index:20', 'index:12', 'index:13', 'index:12', 'label:-1']}, [None, None, None, None, None, None]), ('sampled regression 18', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 18, 'queries': ['index:B1', 'label:-1', 'index:12', 'index:15', 'label:16', 'index:20']}, [0, None, 14, 16, '15', None]), ('control 21', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:11', 'index:b2', 'label:0', 'index:B2', 'label:6', 'index:1']}, [None, 0, 'B2', 0, '3', 4])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: ground floor index', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:0', 'index:g', 'index:m']}, ['G', 0, 1]), ('sampled regression 46', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 10, 'queries': ['label:8', 'index:B1', 'index:14', 'label:-1', 'label:2', 'label:4']}, ['6', 1, None, None, 'G', '2']), ('sampled regression 33', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 12, 'queries': ['label:8', 'index:13', 'label:9', 'label:0', 'label:6', 'label:-1']}, ['6', None, '7', 'B2', '4', None]), ('boundary: twenty-six with skip', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 30, 'queries': ['label:26', 'label:27', 'index:26']}, ['27', '28', 25]), ('control 23', {'basements': 2, 'mezz': True, 'skip13': True, 'floors': 18, 'queries': ['index:B2', 'label:5', 'index:15', 'index:B1', 'index:b2', 'index:g']}, [0, '2', 17, 1, 0, 2]), ('sampled regression 26', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 8, 'queries': ['index:G', 'label:-1', 'label:6', 'label:3', 'index:G', 'label:-1']}, [1, None, '4', '1', 1, None]), ('control 29', {'basements': 1, 'mezz': False, 'skip13': False, 'floors': 14, 'queries': ['label:11', 'label:6', 'label:14', 'label:2', 'index:b2', 'index:M']}, ['10', '5', None, '1', None, None])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('sampled regression 53', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 6, 'queries': ['label:6', 'index:B2', 'label:7', 'label:-1', 'index:B2', 'label:1']}, [None, None, None, None, None, 'G']), ('sampled regression 66', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 6, 'queries': ['index:15', 'label:3', 'label:6', 'label:0', 'label:-2', 'label:3']}, [None, '1', None, 'B2', None, '1']), ('boundary: index past the top', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 6, 'queries': ['label:6', 'label:5']}, [None, '5']), ('sampled regression 34', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:B2', 'index:M', 'label:4', 'index:13', 'label:-2', 'label:5']}, [None, None, '4', None, None, '5']), ('control 37', {'basements': 1, 'mezz': False, 'skip13': True, 'floors': 19, 'queries': ['label:15', 'index:17', 'label:5', 'index:15', 'index:M', 'index:B1']}, ['15', 17, '4', 15, None, 0]), ('control 40', {'basements': 1, 'mezz': True, 'skip13': False, 'floors': 13, 'queries': ['index:B2', 'index:B2', 'index:g', 'index:17', 'index:17', 'label:13']}, [None, None, 1, None, None, None])], [('regression: negative index', {'basements': 1, 'mezz': True, 'skip13': True, 'floors': 10, 'queries': ['label:-1', 'label:0']}, [None, 'B1']), ('sampled regression 74', {'basements': 1, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:14', 'index:g', 'index:G', 'index:20', 'index:X', 'label:-1']}, [None, 1, 1, None, None, None]), ('boundary: two basements', {'basements': 2, 'mezz': False, 'skip13': True, 'floors': 8, 'queries': ['label:0', 'label:1', 'index:B1', 'index:B2']}, ['B2', 'B1', 1, 0]), ('boundary: thirteen skipped', {'basements': 0, 'mezz': False, 'skip13': True, 'floors': 16, 'queries': ['label:13', 'index:14', 'index:13']}, ['14', 13, None]), ('boundary: thirteen kept', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 16, 'queries': ['label:13', 'index:13']}, ['13', 13]), ('control 45', {'basements': 0, 'mezz': False, 'skip13': False, 'floors': 6, 'queries': ['index:m', 'index:15', 'label:4', 'index:g', 'index:17', 'label:7']}, [None, None, '4', 0, None, None]), ('sampled regression 48', {'basements': 0, 'mezz': True, 'skip13': True, 'floors': 17, 'queries': ['label:8', 'label:5', 'index:m', 'label:13', 'label:-1', 'label:16']}, ['7', '4', 1, '12', None, '16']), ('sampled regression 51', {'basements': 2, 'mezz': False, 'skip13': False, 'floors': 10, 'queries': ['label:6', 'label:-2', 'label:8', 'label:-2', 'label:7', 'index:B1']}, ['4', None, '6', None, '5', 1])]]
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: negative index | [None, None] | [None, 'B1'] | Failed |
| boundary: two basements | [None, 'B1', 1, 0] | ['B2', 'B1', 1, 0] | Failed |
| sampled regression 5 | [3, None, 1, 1, None, 2] | [3, 'B2', 1, 1, None, 2] | Failed |
| boundary: thirteen skipped | ['14', 13, None] | ['14', 13, None] | Passed |
| boundary: thirteen kept | ['13', 13] | ['13', 13] | Passed |
| control 1 | ['1', None, None, None, None, None] | ['1', None, None, None, None, None] | Passed |
| sampled regression 4 | [None, None, 0, '14', None, 13] | [None, None, 0, '14', None, 13] | Passed |
| sampled regression 7 | [1, None, None, '6', None, '3'] | [1, None, None, '6', None, '3'] | Passed |
SHA-256 / 9a1acb39b0d381dbdb5015dfc797dfb0452a1d4d227496e0e81a08f84b3d3687
HELD IN THE MEMBER ARCHIVE
The verified repair and its recorded checks are member-only.
This mechanism has 8 recorded checks per implementation. The open-access tier publishes the failure and the unsuccessful fix; the repaired source that passes every check, and the observations that prove it, are available to members.
Every case sharing this mechanism uses the same contract and the same repair, so this one record is held back for all of them.
Member access is invitation-based. Sign in with your invited account to inspect the repair.
Sign in to the archive ↗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.124963+00:00.
Case digest / 3bbd2555c11735b16a8c79f3d80a85abbeb7b9708d75efb35e78cfcedd7e3572