FAILURE MAP
← Case archive

FA-66906 / Railway interlocking logic / Open access

Point machine throw control: in-position under lock · case 01

A command matching the current lie is refused because the point is locked.

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

ROOT CAUSE

The in-position check runs after the locking checks, so a no-op command is rejected.

THE FAILURE

The in-position check runs after the locking checks, so a no-op command is rejected.

Unsuccessful approach: Skipping the shortcut under occupancy still refuses a no-op command beneath a train.

Case contract

A point command is answered as in-position when already detected in the commanded lie (even if locked or occupied). Otherwise route locking refuses (route-locked), then track locking refuses (track-locked); the alarm flag on refusals is raised only when the point has lost detection (X). A throw that fails to regain detection within limit_ms (inclusive; None means never) leaves the point X with alarm; otherwise it lies in the commanded position. detected_ms of 0 means detection was immediate.

Why this case matters

Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.

1 / The failure

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

N = 1
observations = []
def solve(x):
    pos, cmd = x['pos'], x['cmd']
    if x['route_locked']:
        return {'pos': pos, 'result': 'route-locked', 'alarm': pos == 'X'}
    if x['occupied']:
        return {'pos': pos, 'result': 'track-locked', 'alarm': pos == 'X'}
    det = x['detected_ms']
    if pos == cmd:
        return {'pos': pos, 'result': 'in-position', 'alarm': False}
    if det is None or det > x['limit_ms']:
        return {'pos': 'X', 'result': 'no-detection', 'alarm': True}
    return {'pos': cmd, 'result': 'moved', 'alarm': False}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 20', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 1500}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('boundary: detection exactly at the limit', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 1', {'pos': 'X', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 3000, 'detected_ms': 4500}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('control 4', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 6000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('control 7', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'in-position', 'alarm': False})], [('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 80', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 0}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 70', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 3000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('boundary: immediate detection', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 0}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 12', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 15', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 3000, 'detected_ms': 3999}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 18', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': None}, {'pos': 'N', 'result': 'route-locked', 'alarm': False})], [('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 58', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2999}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('sampled regression 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: out of correspondence and locked', {'pos': 'X', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('control 23', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 29', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': None}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('control 32', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 3999}, {'pos': 'R', 'result': 'moved', 'alarm': False})], [('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 20', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 1500}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('sampled regression 72', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 3000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: out of correspondence and locked', {'pos': 'X', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('boundary: normal point locked by a route', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 34', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 0}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 37', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 4000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('control 40', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 7000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False})], [('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 78', {'pos': 'N', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 0}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 28', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: failed throw from normal', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 9000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 45', {'pos': 'X', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2999}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 48', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 3001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 51', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 0}, {'pos': 'R', 'result': 'moved', 'alarm': False})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: already reverse while route locked{'alarm': False, 'pos': 'R', 'result': 'route-locked'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Failed
regression: already normal under a train{'alarm': False, 'pos': 'N', 'result': 'track-locked'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Failed
sampled regression 26{'alarm': False, 'pos': 'N', 'result': 'track-locked'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Failed
sampled regression 20{'alarm': False, 'pos': 'R', 'result': 'track-locked'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Failed
boundary: detection exactly at the limit{'alarm': False, 'pos': 'R', 'result': 'moved'}{'alarm': False, 'pos': 'R', 'result': 'moved'}Passed
control 1{'alarm': True, 'pos': 'X', 'result': 'route-locked'}{'alarm': True, 'pos': 'X', 'result': 'route-locked'}Passed
control 4{'alarm': False, 'pos': 'N', 'result': 'in-position'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Passed
control 7{'alarm': False, 'pos': 'R', 'result': 'in-position'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Passed

SHA-256 / 844751909ef2a1b6052855af038a4e7b3840c85c945ca66ce0bcd299274c5900

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(x):
    pos, cmd = x['pos'], x['cmd']
    if pos == cmd and not x['occupied']:
        return {'pos': pos, 'result': 'in-position', 'alarm': False}
    if x['route_locked']:
        return {'pos': pos, 'result': 'route-locked', 'alarm': pos == 'X'}
    if x['occupied']:
        return {'pos': pos, 'result': 'track-locked', 'alarm': pos == 'X'}
    det = x['detected_ms']
    if det is None or det > x['limit_ms']:
        return {'pos': 'X', 'result': 'no-detection', 'alarm': True}
    return {'pos': cmd, 'result': 'moved', 'alarm': False}
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 20', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 1500}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('boundary: detection exactly at the limit', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 1', {'pos': 'X', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 3000, 'detected_ms': 4500}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('control 4', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 6000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('control 7', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'in-position', 'alarm': False})], [('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 80', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 0}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 70', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 3000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('boundary: immediate detection', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 0}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 12', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 15', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': True, 'limit_ms': 3000, 'detected_ms': 3999}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 18', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': None}, {'pos': 'N', 'result': 'route-locked', 'alarm': False})], [('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 58', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2999}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('sampled regression 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: out of correspondence and locked', {'pos': 'X', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('control 23', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 29', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': None}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('control 32', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 3999}, {'pos': 'R', 'result': 'moved', 'alarm': False})], [('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 20', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': True, 'limit_ms': 6000, 'detected_ms': 1500}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('sampled regression 72', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 3000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: out of correspondence and locked', {'pos': 'X', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'X', 'result': 'route-locked', 'alarm': True}), ('boundary: normal point locked by a route', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False}), ('control 34', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 0}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 37', {'pos': 'R', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 4000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('control 40', {'pos': 'N', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 7000}, {'pos': 'N', 'result': 'route-locked', 'alarm': False})], [('regression: already reverse while route locked', {'pos': 'R', 'cmd': 'R', 'route_locked': True, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'R', 'result': 'in-position', 'alarm': False}), ('regression: already normal under a train', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 2000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 78', {'pos': 'N', 'cmd': 'N', 'route_locked': True, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 0}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('sampled regression 28', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 4000}, {'pos': 'N', 'result': 'in-position', 'alarm': False}), ('boundary: failed throw from normal', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 9000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 45', {'pos': 'X', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 2999}, {'pos': 'N', 'result': 'moved', 'alarm': False}), ('control 48', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 3001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 51', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 0}, {'pos': 'R', 'result': 'moved', 'alarm': False})]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: already reverse while route locked{'alarm': False, 'pos': 'R', 'result': 'in-position'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Passed
regression: already normal under a train{'alarm': False, 'pos': 'N', 'result': 'track-locked'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Failed
sampled regression 26{'alarm': False, 'pos': 'N', 'result': 'track-locked'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Failed
sampled regression 20{'alarm': False, 'pos': 'R', 'result': 'track-locked'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Failed
boundary: detection exactly at the limit{'alarm': False, 'pos': 'R', 'result': 'moved'}{'alarm': False, 'pos': 'R', 'result': 'moved'}Passed
control 1{'alarm': True, 'pos': 'X', 'result': 'route-locked'}{'alarm': True, 'pos': 'X', 'result': 'route-locked'}Passed
control 4{'alarm': False, 'pos': 'N', 'result': 'in-position'}{'alarm': False, 'pos': 'N', 'result': 'in-position'}Passed
control 7{'alarm': False, 'pos': 'R', 'result': 'in-position'}{'alarm': False, 'pos': 'R', 'result': 'in-position'}Passed

SHA-256 / 5d69cc163f2e6dd908923675d26941b451884d90ae4470afd00fd28374a71b6e

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 interlocking contract for a bounded teaching model; it makes no claim of conformance to any railway signalling standard 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:48.022659+00:00.

Case digest / 1000e0c0c981cc2c0b5a75f88f89d502521811b47a15d614ff3f1346a5d75a7b