FA-67116 / Railway interlocking logic / Open access
Two-out-of-three occupancy voting: discrepancy reset · case 01
A channel is isolated after scattered, non-consecutive discrepancies.
ROOT CAUSE
The discrepancy count is never reset when the channel agrees.
VERIFIED REPAIR
Reset the count whenever the channel agrees or reports failure.
Unsuccessful approach: Not resetting on a failed report lets discrepancies straddle a failure.
Case contract
Three channels report occupancy (True/False) or None when failed. A channel isolated earlier counts as None. With fewer than two healthy channels the vote is occupied. Otherwise the vote is occupied when occupied reports are at least as many as clear ones (ties are occupied). A healthy channel that disagrees with the vote increments its discrepancy count, otherwise (agreeing or None) the count resets; a channel is isolated for good when its count reaches isolate_after. Return all votes and isolated channel indices.
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):
k = x['isolate_after']
bad = [0, 0, 0]
iso = [False, False, False]
votes = []
for cyc in x['cycles']:
vals = [None if iso[i] else cyc[i] for i in range(3)]
healthy = [v for v in vals if v is not None]
if len(healthy) < 2:
vote = True
else:
t = sum(1 for v in healthy if v)
f = len(healthy) - t
vote = t >= f
votes.append(vote)
for i in range(3):
if vals[i] is not None and vals[i] != vote:
bad[i] += 1
if bad[i] >= k:
iso[i] = True
else:
pass
return {'votes': votes, 'isolated': [i for i in range(3) if iso[i]]}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 10', {'isolate_after': 2, 'cycles': [[None, True, False], [False, None, True], [False, False, False], [False, True, False], [False, True, False], [True, True, False], [False, None, False], [True, True, True]]}, {'votes': [True, True, False, False, False, True, False, True], 'isolated': [1]}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('control 1', {'isolate_after': 2, 'cycles': [[False, False, False], [True, None, True], [True, True, True], [None, False, False]]}, {'votes': [False, True, True, False], 'isolated': []}), ('control 4', {'isolate_after': 2, 'cycles': [[False, True, True], [False, False, False], [False, False, False], [True, True, False], [True, True, True], [True, False, True], [False, False, False], [False, False, None], [True, True, True]]}, {'votes': [True, False, False, True, True, True, False, False, True], 'isolated': []}), ('control 7', {'isolate_after': 3, 'cycles': [[False, False, True], [False, False, False], [True, True, True], [False, True, True], [True, True, None], [False, False, False], [True, True, True], [False, False, False]]}, {'votes': [False, False, True, True, True, False, True, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 36', {'isolate_after': 3, 'cycles': [[None, True, False], [None, False, False], [False, False, True], [False, False, False], [True, True, False], [True, True, True], [True, True, None], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': []}), ('sampled regression 19', {'isolate_after': 2, 'cycles': [[True, True, True], [True, False, None], [True, False, True], [None, False, False], [True, True, None], [True, False, False], [False, False, True], [True, True, True]]}, {'votes': [True, True, True, True, True, True, True, True], 'isolated': [1]}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('boundary: persistent dissenter', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, False, False]]}, {'votes': [False, False, False], 'isolated': [0]}), ('control 12', {'isolate_after': 3, 'cycles': [[False, False, False], [False, True, False], [True, False, True], [True, False, True], [False, False, True], [False, False, False], [True, False, True], [True, True, True]]}, {'votes': [False, False, True, True, True, False, True, True], 'isolated': [1]}), ('control 15', {'isolate_after': 3, 'cycles': [[False, False, False], [False, None, False], [True, False, False], [True, None, False]]}, {'votes': [False, False, False, True], 'isolated': []}), ('sampled regression 18', {'isolate_after': 2, 'cycles': [[False, False, False], [None, False, True], [False, False, True], [True, False, False], [True, False, True], [False, False, False], [False, True, None], [False, False, False], [False, False, False]]}, {'votes': [False, True, False, False, True, False, True, False, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 71', {'isolate_after': 2, 'cycles': [[False, False, None], [True, False, True], [False, False, False], [False, True, False]]}, {'votes': [False, True, False, False], 'isolated': []}), ('sampled regression 20', {'isolate_after': 2, 'cycles': [[False, True, False], [True, False, False], [True, False, None], [False, None, False], [False, True, False], [False, None, None]]}, {'votes': [False, False, True, False, False, True], 'isolated': []}), ('boundary: two dissenters in turn', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, True, False], [False, True, False], [False, False, False]]}, {'votes': [False, False, True, True, True], 'isolated': [0, 2]}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('control 23', {'isolate_after': 2, 'cycles': [[True, False, True], [None, False, False], [False, False, False], [False, False, False], [False, False, None], [False, False, False], [True, None, True]]}, {'votes': [True, False, False, False, False, False, True], 'isolated': []}), ('control 26', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, True], [False, False, None]]}, {'votes': [True, False, False, False], 'isolated': []}), ('sampled regression 29', {'isolate_after': 2, 'cycles': [[False, False, True], [False, False, False], [False, False, True], [False, True, False], [False, True, True]]}, {'votes': [False, False, False, False, True], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('control 37', {'isolate_after': 3, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [True, False, False], [False, False, False]]}, {'votes': [True, False, False, False, False, False], 'isolated': []}), ('control 40', {'isolate_after': 2, 'cycles': [[True, None, True], [False, False, None], [False, True, False], [False, True, False], [True, True, True], [True, None, False], [None, False, False], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': [1, 2]})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('sampled regression 45', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [None, True, False], [None, True, False], [True, False, False]]}, {'votes': [True, False, False, False, True, True, True], 'isolated': [2]}), ('sampled regression 48', {'isolate_after': 2, 'cycles': [[False, False, False], [False, False, False], [False, True, True], [True, True, None], [False, True, False], [True, True, True], [False, False, False], [False, False, False], [False, True, False]]}, {'votes': [False, False, True, True, False, True, False, False, False], 'isolated': []}), ('control 51', {'isolate_after': 3, 'cycles': [[False, False, False], [True, False, False], [True, True, True], [True, True, True], [True, True, True], [True, True, True], [True, False, True], [True, False, False], [True, True, True]]}, {'votes': [False, False, True, True, True, True, True, False, True], 'isolated': []})]]
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: dissent interrupted by failure | {'isolated': [0], 'votes': [False, False, False]} | {'isolated': [], 'votes': [False, False, False]} | Failed |
| sampled regression 10 | {'isolated': [0, 1, 2], 'votes': [True, True, False, False, False, True, True, True]} | {'isolated': [1], 'votes': [True, True, False, False, False, True, False, True]} | Failed |
| sampled regression 9 | {'isolated': [2], 'votes': [False, True, True, False, True, True, True, False, True]} | {'isolated': [], 'votes': [False, True, True, False, True, True, True, False, True]} | Failed |
| boundary: two healthy channels disagree | {'isolated': [], 'votes': [True]} | {'isolated': [], 'votes': [True]} | Passed |
| boundary: two healthy channels agree clear | {'isolated': [], 'votes': [False]} | {'isolated': [], 'votes': [False]} | Passed |
| control 1 | {'isolated': [], 'votes': [False, True, True, False]} | {'isolated': [], 'votes': [False, True, True, False]} | Passed |
| control 4 | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | Passed |
| control 7 | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | Passed |
SHA-256 / cb451719b48c35c6b3cc2718330fa38daf5698fad896cdcced1b9727aa4210c8
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
k = x['isolate_after']
bad = [0, 0, 0]
iso = [False, False, False]
votes = []
for cyc in x['cycles']:
vals = [None if iso[i] else cyc[i] for i in range(3)]
healthy = [v for v in vals if v is not None]
if len(healthy) < 2:
vote = True
else:
t = sum(1 for v in healthy if v)
f = len(healthy) - t
vote = t >= f
votes.append(vote)
for i in range(3):
if vals[i] is not None and vals[i] != vote:
bad[i] += 1
if bad[i] >= k:
iso[i] = True
elif vals[i] is not None:
bad[i] = 0
return {'votes': votes, 'isolated': [i for i in range(3) if iso[i]]}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 10', {'isolate_after': 2, 'cycles': [[None, True, False], [False, None, True], [False, False, False], [False, True, False], [False, True, False], [True, True, False], [False, None, False], [True, True, True]]}, {'votes': [True, True, False, False, False, True, False, True], 'isolated': [1]}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('control 1', {'isolate_after': 2, 'cycles': [[False, False, False], [True, None, True], [True, True, True], [None, False, False]]}, {'votes': [False, True, True, False], 'isolated': []}), ('control 4', {'isolate_after': 2, 'cycles': [[False, True, True], [False, False, False], [False, False, False], [True, True, False], [True, True, True], [True, False, True], [False, False, False], [False, False, None], [True, True, True]]}, {'votes': [True, False, False, True, True, True, False, False, True], 'isolated': []}), ('control 7', {'isolate_after': 3, 'cycles': [[False, False, True], [False, False, False], [True, True, True], [False, True, True], [True, True, None], [False, False, False], [True, True, True], [False, False, False]]}, {'votes': [False, False, True, True, True, False, True, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 36', {'isolate_after': 3, 'cycles': [[None, True, False], [None, False, False], [False, False, True], [False, False, False], [True, True, False], [True, True, True], [True, True, None], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': []}), ('sampled regression 19', {'isolate_after': 2, 'cycles': [[True, True, True], [True, False, None], [True, False, True], [None, False, False], [True, True, None], [True, False, False], [False, False, True], [True, True, True]]}, {'votes': [True, True, True, True, True, True, True, True], 'isolated': [1]}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('boundary: persistent dissenter', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, False, False]]}, {'votes': [False, False, False], 'isolated': [0]}), ('control 12', {'isolate_after': 3, 'cycles': [[False, False, False], [False, True, False], [True, False, True], [True, False, True], [False, False, True], [False, False, False], [True, False, True], [True, True, True]]}, {'votes': [False, False, True, True, True, False, True, True], 'isolated': [1]}), ('control 15', {'isolate_after': 3, 'cycles': [[False, False, False], [False, None, False], [True, False, False], [True, None, False]]}, {'votes': [False, False, False, True], 'isolated': []}), ('sampled regression 18', {'isolate_after': 2, 'cycles': [[False, False, False], [None, False, True], [False, False, True], [True, False, False], [True, False, True], [False, False, False], [False, True, None], [False, False, False], [False, False, False]]}, {'votes': [False, True, False, False, True, False, True, False, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 71', {'isolate_after': 2, 'cycles': [[False, False, None], [True, False, True], [False, False, False], [False, True, False]]}, {'votes': [False, True, False, False], 'isolated': []}), ('sampled regression 20', {'isolate_after': 2, 'cycles': [[False, True, False], [True, False, False], [True, False, None], [False, None, False], [False, True, False], [False, None, None]]}, {'votes': [False, False, True, False, False, True], 'isolated': []}), ('boundary: two dissenters in turn', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, True, False], [False, True, False], [False, False, False]]}, {'votes': [False, False, True, True, True], 'isolated': [0, 2]}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('control 23', {'isolate_after': 2, 'cycles': [[True, False, True], [None, False, False], [False, False, False], [False, False, False], [False, False, None], [False, False, False], [True, None, True]]}, {'votes': [True, False, False, False, False, False, True], 'isolated': []}), ('control 26', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, True], [False, False, None]]}, {'votes': [True, False, False, False], 'isolated': []}), ('sampled regression 29', {'isolate_after': 2, 'cycles': [[False, False, True], [False, False, False], [False, False, True], [False, True, False], [False, True, True]]}, {'votes': [False, False, False, False, True], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('control 37', {'isolate_after': 3, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [True, False, False], [False, False, False]]}, {'votes': [True, False, False, False, False, False], 'isolated': []}), ('control 40', {'isolate_after': 2, 'cycles': [[True, None, True], [False, False, None], [False, True, False], [False, True, False], [True, True, True], [True, None, False], [None, False, False], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': [1, 2]})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('sampled regression 45', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [None, True, False], [None, True, False], [True, False, False]]}, {'votes': [True, False, False, False, True, True, True], 'isolated': [2]}), ('sampled regression 48', {'isolate_after': 2, 'cycles': [[False, False, False], [False, False, False], [False, True, True], [True, True, None], [False, True, False], [True, True, True], [False, False, False], [False, False, False], [False, True, False]]}, {'votes': [False, False, True, True, False, True, False, False, False], 'isolated': []}), ('control 51', {'isolate_after': 3, 'cycles': [[False, False, False], [True, False, False], [True, True, True], [True, True, True], [True, True, True], [True, True, True], [True, False, True], [True, False, False], [True, True, True]]}, {'votes': [False, False, True, True, True, True, True, False, True], 'isolated': []})]]
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: dissent interrupted by failure | {'isolated': [0], 'votes': [False, False, False]} | {'isolated': [], 'votes': [False, False, False]} | Failed |
| sampled regression 10 | {'isolated': [1], 'votes': [True, True, False, False, False, True, False, True]} | {'isolated': [1], 'votes': [True, True, False, False, False, True, False, True]} | Passed |
| sampled regression 9 | {'isolated': [2], 'votes': [False, True, True, False, True, True, True, False, True]} | {'isolated': [], 'votes': [False, True, True, False, True, True, True, False, True]} | Failed |
| boundary: two healthy channels disagree | {'isolated': [], 'votes': [True]} | {'isolated': [], 'votes': [True]} | Passed |
| boundary: two healthy channels agree clear | {'isolated': [], 'votes': [False]} | {'isolated': [], 'votes': [False]} | Passed |
| control 1 | {'isolated': [], 'votes': [False, True, True, False]} | {'isolated': [], 'votes': [False, True, True, False]} | Passed |
| control 4 | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | Passed |
| control 7 | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | Passed |
SHA-256 / 00c762741e45943c29acdf362a1c9758edb66609f3ece05a0766ce585bc9e8ba
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(x):
k = x['isolate_after']
bad = [0, 0, 0]
iso = [False, False, False]
votes = []
for cyc in x['cycles']:
vals = [None if iso[i] else cyc[i] for i in range(3)]
healthy = [v for v in vals if v is not None]
if len(healthy) < 2:
vote = True
else:
t = sum(1 for v in healthy if v)
f = len(healthy) - t
vote = t >= f
votes.append(vote)
for i in range(3):
if vals[i] is not None and vals[i] != vote:
bad[i] += 1
if bad[i] >= k:
iso[i] = True
else:
bad[i] = 0
return {'votes': votes, 'isolated': [i for i in range(3) if iso[i]]}
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 10', {'isolate_after': 2, 'cycles': [[None, True, False], [False, None, True], [False, False, False], [False, True, False], [False, True, False], [True, True, False], [False, None, False], [True, True, True]]}, {'votes': [True, True, False, False, False, True, False, True], 'isolated': [1]}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('control 1', {'isolate_after': 2, 'cycles': [[False, False, False], [True, None, True], [True, True, True], [None, False, False]]}, {'votes': [False, True, True, False], 'isolated': []}), ('control 4', {'isolate_after': 2, 'cycles': [[False, True, True], [False, False, False], [False, False, False], [True, True, False], [True, True, True], [True, False, True], [False, False, False], [False, False, None], [True, True, True]]}, {'votes': [True, False, False, True, True, True, False, False, True], 'isolated': []}), ('control 7', {'isolate_after': 3, 'cycles': [[False, False, True], [False, False, False], [True, True, True], [False, True, True], [True, True, None], [False, False, False], [True, True, True], [False, False, False]]}, {'votes': [False, False, True, True, True, False, True, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 36', {'isolate_after': 3, 'cycles': [[None, True, False], [None, False, False], [False, False, True], [False, False, False], [True, True, False], [True, True, True], [True, True, None], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': []}), ('sampled regression 19', {'isolate_after': 2, 'cycles': [[True, True, True], [True, False, None], [True, False, True], [None, False, False], [True, True, None], [True, False, False], [False, False, True], [True, True, True]]}, {'votes': [True, True, True, True, True, True, True, True], 'isolated': [1]}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('boundary: persistent dissenter', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, False, False]]}, {'votes': [False, False, False], 'isolated': [0]}), ('control 12', {'isolate_after': 3, 'cycles': [[False, False, False], [False, True, False], [True, False, True], [True, False, True], [False, False, True], [False, False, False], [True, False, True], [True, True, True]]}, {'votes': [False, False, True, True, True, False, True, True], 'isolated': [1]}), ('control 15', {'isolate_after': 3, 'cycles': [[False, False, False], [False, None, False], [True, False, False], [True, None, False]]}, {'votes': [False, False, False, True], 'isolated': []}), ('sampled regression 18', {'isolate_after': 2, 'cycles': [[False, False, False], [None, False, True], [False, False, True], [True, False, False], [True, False, True], [False, False, False], [False, True, None], [False, False, False], [False, False, False]]}, {'votes': [False, True, False, False, True, False, True, False, False], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 71', {'isolate_after': 2, 'cycles': [[False, False, None], [True, False, True], [False, False, False], [False, True, False]]}, {'votes': [False, True, False, False], 'isolated': []}), ('sampled regression 20', {'isolate_after': 2, 'cycles': [[False, True, False], [True, False, False], [True, False, None], [False, None, False], [False, True, False], [False, None, None]]}, {'votes': [False, False, True, False, False, True], 'isolated': []}), ('boundary: two dissenters in turn', {'isolate_after': 2, 'cycles': [[True, False, False], [True, False, False], [False, True, False], [False, True, False], [False, False, False]]}, {'votes': [False, False, True, True, True], 'isolated': [0, 2]}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('control 23', {'isolate_after': 2, 'cycles': [[True, False, True], [None, False, False], [False, False, False], [False, False, False], [False, False, None], [False, False, False], [True, None, True]]}, {'votes': [True, False, False, False, False, False, True], 'isolated': []}), ('control 26', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, True], [False, False, None]]}, {'votes': [True, False, False, False], 'isolated': []}), ('sampled regression 29', {'isolate_after': 2, 'cycles': [[False, False, True], [False, False, False], [False, False, True], [False, True, False], [False, True, True]]}, {'votes': [False, False, False, False, True], 'isolated': []})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: isolated channel keeps reporting', {'isolate_after': 1, 'cycles': [[True, False, False], [True, True, False]]}, {'votes': [False, True], 'isolated': [0, 2]}), ('boundary: two healthy channels disagree', {'isolate_after': 3, 'cycles': [[True, False, None]]}, {'votes': [True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('control 37', {'isolate_after': 3, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [True, False, False], [False, False, False]]}, {'votes': [True, False, False, False, False, False], 'isolated': []}), ('control 40', {'isolate_after': 2, 'cycles': [[True, None, True], [False, False, None], [False, True, False], [False, True, False], [True, True, True], [True, None, False], [None, False, False], [True, True, True]]}, {'votes': [True, False, False, False, True, True, True, True], 'isolated': [1, 2]})], [('regression: dissent interrupted by failure', {'isolate_after': 2, 'cycles': [[True, False, False], [None, False, False], [True, False, False]]}, {'votes': [False, False, False], 'isolated': []}), ('sampled regression 34', {'isolate_after': 2, 'cycles': [[True, True, False], [False, True, False], [True, True, True], [True, True, True], [True, False, True], [False, False, False], [True, False, True]]}, {'votes': [True, False, True, True, True, False, True], 'isolated': []}), ('sampled regression 9', {'isolate_after': 3, 'cycles': [[None, False, False], [None, True, False], [False, None, None], [False, False, True], [True, None, False], [True, True, True], [None, False, None], [False, False, False], [True, None, False]]}, {'votes': [False, True, True, False, True, True, True, False, True], 'isolated': []}), ('boundary: two healthy channels agree clear', {'isolate_after': 3, 'cycles': [[False, False, None]]}, {'votes': [False], 'isolated': []}), ('boundary: single healthy channel says clear', {'isolate_after': 3, 'cycles': [[False, None, None]]}, {'votes': [True], 'isolated': []}), ('sampled regression 45', {'isolate_after': 2, 'cycles': [[True, True, True], [False, False, False], [False, False, False], [False, True, False], [None, True, False], [None, True, False], [True, False, False]]}, {'votes': [True, False, False, False, True, True, True], 'isolated': [2]}), ('sampled regression 48', {'isolate_after': 2, 'cycles': [[False, False, False], [False, False, False], [False, True, True], [True, True, None], [False, True, False], [True, True, True], [False, False, False], [False, False, False], [False, True, False]]}, {'votes': [False, False, True, True, False, True, False, False, False], 'isolated': []}), ('control 51', {'isolate_after': 3, 'cycles': [[False, False, False], [True, False, False], [True, True, True], [True, True, True], [True, True, True], [True, True, True], [True, False, True], [True, False, False], [True, True, True]]}, {'votes': [False, False, True, True, True, True, True, False, True], 'isolated': []})]]
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: dissent interrupted by failure | {'isolated': [], 'votes': [False, False, False]} | {'isolated': [], 'votes': [False, False, False]} | Passed |
| sampled regression 10 | {'isolated': [1], 'votes': [True, True, False, False, False, True, False, True]} | {'isolated': [1], 'votes': [True, True, False, False, False, True, False, True]} | Passed |
| sampled regression 9 | {'isolated': [], 'votes': [False, True, True, False, True, True, True, False, True]} | {'isolated': [], 'votes': [False, True, True, False, True, True, True, False, True]} | Passed |
| boundary: two healthy channels disagree | {'isolated': [], 'votes': [True]} | {'isolated': [], 'votes': [True]} | Passed |
| boundary: two healthy channels agree clear | {'isolated': [], 'votes': [False]} | {'isolated': [], 'votes': [False]} | Passed |
| control 1 | {'isolated': [], 'votes': [False, True, True, False]} | {'isolated': [], 'votes': [False, True, True, False]} | Passed |
| control 4 | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | {'isolated': [], 'votes': [True, False, False, True, True, True, False, False, True]} | Passed |
| control 7 | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | {'isolated': [], 'votes': [False, False, True, True, True, False, True, False]} | Passed |
SHA-256 / b5774886046f5af10dcd977d59836b0027809f5a10f61310bcdd218a73785003
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:49.915001+00:00.
Case digest / 3e0fa4198817bd99ce68b72a2bed90fa20c2b928e12475b2d77afa67c77096ec