{"abstract":"After a failed throw the point is still reported detected in a lie.","category":"Railway interlocking logic","checks":8,"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.","evaluation_group":"w2-railway_interlocking_logic-point-machine-throw","failed_approach":"Reporting the commanded position assumes the blades reached it.","family":"w2-railway_interlocking_logic-point-machine-throw-failed-throw-position","id":"FA-66911","implementations":{"attempt":{"sha256":"3547b0ed92924981f65e7a09819d45a97291ee4baa0c6438baad49c150bf1158","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pos, cmd = x['pos'], x['cmd']\n    if pos == cmd:\n        return {'pos': pos, 'result': 'in-position', 'alarm': False}\n    if x['route_locked']:\n        return {'pos': pos, 'result': 'route-locked', 'alarm': pos == 'X'}\n    if x['occupied']:\n        return {'pos': pos, 'result': 'track-locked', 'alarm': pos == 'X'}\n    det = x['detected_ms']\n    if det is None or det > x['limit_ms']:\n        return {'pos': cmd, 'result': 'no-detection', 'alarm': True}\n    return {'pos': cmd, 'result': 'moved', 'alarm': False}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 6', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 7000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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: 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}), ('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 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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 43', {'pos': 'X', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4500}, {'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}), ('boundary: 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}), ('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: 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}), ('sampled regression 48', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 3001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 65', {'pos': 'X', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 4500}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('boundary: 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}), ('boundary: 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}), ('control 23', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', '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})], [('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 24', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 47', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 6000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'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}), ('sampled regression 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})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"4fe7be65ba3ebcccb1422d5d12ff3d346b10096211a8f65a6696a116249c951b","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pos, cmd = x['pos'], x['cmd']\n    if pos == cmd:\n        return {'pos': pos, 'result': 'in-position', 'alarm': False}\n    if x['route_locked']:\n        return {'pos': pos, 'result': 'route-locked', 'alarm': pos == 'X'}\n    if x['occupied']:\n        return {'pos': pos, 'result': 'track-locked', 'alarm': pos == 'X'}\n    det = x['detected_ms']\n    if det is None or det > x['limit_ms']:\n        return {'pos': pos, 'result': 'no-detection', 'alarm': True}\n    return {'pos': cmd, 'result': 'moved', 'alarm': False}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 6', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 7000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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: 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}), ('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 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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 43', {'pos': 'X', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4500}, {'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}), ('boundary: 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}), ('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: 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}), ('sampled regression 48', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 3001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 65', {'pos': 'X', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 4500}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('boundary: 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}), ('boundary: 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}), ('control 23', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', '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})], [('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 24', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 47', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 6000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'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}), ('sampled regression 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})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"fb091ed25dc5fbc6906e01209dc59208bdc019b2e59c9ae6b969b113da15a3b0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(x):\n    pos, cmd = x['pos'], x['cmd']\n    if pos == cmd:\n        return {'pos': pos, 'result': 'in-position', 'alarm': False}\n    if x['route_locked']:\n        return {'pos': pos, 'result': 'route-locked', 'alarm': pos == 'X'}\n    if x['occupied']:\n        return {'pos': pos, 'result': 'track-locked', 'alarm': pos == 'X'}\n    det = x['detected_ms']\n    if det is None or det > x['limit_ms']:\n        return {'pos': 'X', 'result': 'no-detection', 'alarm': True}\n    return {'pos': cmd, 'result': 'moved', 'alarm': False}\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 6', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 7000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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: 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}), ('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 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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 43', {'pos': 'X', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4500}, {'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}), ('boundary: 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}), ('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: 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}), ('sampled regression 48', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 3001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('control 65', {'pos': 'X', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 4500}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('boundary: 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}), ('boundary: 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}), ('control 23', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 6000, 'detected_ms': 6000}, {'pos': 'R', 'result': 'moved', 'alarm': False}), ('control 26', {'pos': 'N', 'cmd': 'N', 'route_locked': False, 'occupied': True, 'limit_ms': 4000, 'detected_ms': 1500}, {'pos': 'N', 'result': 'in-position', '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})], [('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 24', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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: never detected', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': None}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('sampled regression 47', {'pos': 'R', 'cmd': 'N', 'route_locked': False, 'occupied': False, 'limit_ms': 3000, 'detected_ms': 6000}, {'pos': 'X', 'result': 'no-detection', 'alarm': True}), ('regression: 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}), ('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}), ('regression: detection one ms late', {'pos': 'N', 'cmd': 'R', 'route_locked': False, 'occupied': False, 'limit_ms': 4000, 'detected_ms': 4001}, {'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}), ('sampled regression 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})]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-railway_interlocking_logic-point-machine-throw-failed-throw-position","generated_at":"2026-09-29T14:47:48.108514+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Interlocking logic decides whether trains may be given authority; a wrong decision at this point either grants unsafe movements or strands traffic.","repair":"A failed throw leaves the point out of correspondence (X).","root_cause":"The failed throw keeps the previous position instead of out of correspondence.","sha256":"d9ea6a9a227ec86f8d9089fd6212053e9de917fcf7b3b238b8925fbe5d3f287c","title":"Point machine throw control: failed throw position · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":37.803,"exit_code":1,"observations":[{"actual":{"alarm":true,"pos":"R","result":"no-detection"},"check":"regression: detection one ms late","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":true,"pos":"R","result":"no-detection"},"check":"sampled regression 6","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":true,"pos":"N","result":"no-detection"},"check":"regression: never detected","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":false,"pos":"R","result":"moved"},"check":"boundary: detection exactly at the limit","expected":{"alarm":false,"pos":"R","result":"moved"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"moved"},"check":"boundary: immediate detection","expected":{"alarm":false,"pos":"N","result":"moved"},"passed":true},{"actual":{"alarm":true,"pos":"X","result":"route-locked"},"check":"control 1","expected":{"alarm":true,"pos":"X","result":"route-locked"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"in-position"},"check":"control 4","expected":{"alarm":false,"pos":"N","result":"in-position"},"passed":true},{"actual":{"alarm":false,"pos":"R","result":"in-position"},"check":"control 7","expected":{"alarm":false,"pos":"R","result":"in-position"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: detection one ms late\", \"actual\": {\"pos\": \"R\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"sampled regression 6\", \"actual\": {\"pos\": \"R\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"regression: never detected\", \"actual\": {\"pos\": \"N\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"boundary: detection exactly at the limit\", \"actual\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"boundary: immediate detection\", \"actual\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":36.52,"exit_code":1,"observations":[{"actual":{"alarm":true,"pos":"N","result":"no-detection"},"check":"regression: detection one ms late","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":true,"pos":"N","result":"no-detection"},"check":"sampled regression 6","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":true,"pos":"R","result":"no-detection"},"check":"regression: never detected","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":false},{"actual":{"alarm":false,"pos":"R","result":"moved"},"check":"boundary: detection exactly at the limit","expected":{"alarm":false,"pos":"R","result":"moved"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"moved"},"check":"boundary: immediate detection","expected":{"alarm":false,"pos":"N","result":"moved"},"passed":true},{"actual":{"alarm":true,"pos":"X","result":"route-locked"},"check":"control 1","expected":{"alarm":true,"pos":"X","result":"route-locked"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"in-position"},"check":"control 4","expected":{"alarm":false,"pos":"N","result":"in-position"},"passed":true},{"actual":{"alarm":false,"pos":"R","result":"in-position"},"check":"control 7","expected":{"alarm":false,"pos":"R","result":"in-position"},"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: detection one ms late\", \"actual\": {\"pos\": \"N\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"sampled regression 6\", \"actual\": {\"pos\": \"N\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"regression: never detected\", \"actual\": {\"pos\": \"R\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": false}, {\"check\": \"boundary: detection exactly at the limit\", \"actual\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"boundary: immediate detection\", \"actual\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":35.986,"exit_code":0,"observations":[{"actual":{"alarm":true,"pos":"X","result":"no-detection"},"check":"regression: detection one ms late","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":true},{"actual":{"alarm":true,"pos":"X","result":"no-detection"},"check":"sampled regression 6","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":true},{"actual":{"alarm":true,"pos":"X","result":"no-detection"},"check":"regression: never detected","expected":{"alarm":true,"pos":"X","result":"no-detection"},"passed":true},{"actual":{"alarm":false,"pos":"R","result":"moved"},"check":"boundary: detection exactly at the limit","expected":{"alarm":false,"pos":"R","result":"moved"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"moved"},"check":"boundary: immediate detection","expected":{"alarm":false,"pos":"N","result":"moved"},"passed":true},{"actual":{"alarm":true,"pos":"X","result":"route-locked"},"check":"control 1","expected":{"alarm":true,"pos":"X","result":"route-locked"},"passed":true},{"actual":{"alarm":false,"pos":"N","result":"in-position"},"check":"control 4","expected":{"alarm":false,"pos":"N","result":"in-position"},"passed":true},{"actual":{"alarm":false,"pos":"R","result":"in-position"},"check":"control 7","expected":{"alarm":false,"pos":"R","result":"in-position"},"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: detection one ms late\", \"actual\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": true}, {\"check\": \"sampled regression 6\", \"actual\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": true}, {\"check\": \"regression: never detected\", \"actual\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"no-detection\", \"alarm\": true}, \"passed\": true}, {\"check\": \"boundary: detection exactly at the limit\", \"actual\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"boundary: immediate detection\", \"actual\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"moved\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 1\", \"actual\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"expected\": {\"pos\": \"X\", \"result\": \"route-locked\", \"alarm\": true}, \"passed\": true}, {\"check\": \"control 4\", \"actual\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"N\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}, {\"check\": \"control 7\", \"actual\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"expected\": {\"pos\": \"R\", \"result\": \"in-position\", \"alarm\": false}, \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}