FA-92096 / PLC ladder logic scan cycles / Open access
Sequencer advances every scan while enable is held · case 01
Holding the step input races through the whole sequence.
ROOT CAUSE
The advance condition tests the enable level instead of its rising edge.
VERIFIED REPAIR
Advance only when enable is true and was false on the previous scan.
Unsuccessful approach: Stopping at the last element instead of edge-detecting still cannot wrap.
Case contract
Sequencer output (SQO). words is the sequencer file whose element 0 is the home step; position starts at 0. On each rising edge of enable the position advances; past the last element it wraps to 1 (not 0). Each advance writes dest = (dest AND NOT mask) OR (word AND mask) in 16 bits. A reset input returns position to 0 without writing dest and has priority over a coincident advance; the enable edge memory is always updated. steps is a list of [enable, reset]; return [position, dest] per scan.
Why this case matters
Ladder programs are executed as repeated scans; each defect here changes what a rung, timer, counter or data-table instruction reports on a particular scan, which is how commissioning and field faults are actually observed.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(words, mask, start_dest, steps):
pos = 0
dest = start_dest
prev = False
length = len(words) - 1
out = []
for en, res in steps:
en = bool(en)
if res:
pos = 0
elif en:
pos += 1
if pos > length:
pos = 1
dest = (dest & ~mask & 0xFFFF) | (words[pos] & mask)
prev = en
out.append([pos, dest])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['regression: scenario 5',
[[31779, 18767, 26849],
3855,
17424,
[[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False]]],
[[1, 18719],
[1, 18719],
[1, 18719],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[1, 18719],
[1, 18719]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 1',
[[26918, 50611, 8879, 59828],
65535,
52597,
[[False, False],
[False, False],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[1, 50611],
[1, 50611],
[1, 50611]]],
['control: scenario 2',
[[42968, 29173, 43546],
255,
5794,
[[True, False],
[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[False, False]]],
[[1, 5877],
[1, 5877],
[1, 5877],
[1, 5877],
[2, 5658],
[2, 5658],
[2, 5658],
[2, 5658],
[0, 5658],
[0, 5658]]],
['regression: scenario 3',
[[16785, 47110, 21847, 45361],
61440,
41889,
[[True, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False]]],
[[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]]]],
[['regression: scenario 1',
[[8488, 43469, 38296, 4034],
255,
44563,
[[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False]]],
[[0, 44563],
[1, 44749],
[1, 44749],
[1, 44749],
[1, 44749],
[2, 44696],
[2, 44696],
[3, 44738],
[3, 44738],
[1, 44749],
[1, 44749],
[2, 44696]]],
['regression: scenario 21',
[[35992, 43053, 59445],
65535,
52164,
[[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 52164],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[2, 59445],
[2, 59445],
[0, 59445],
[0, 59445]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 2',
[[43079, 20640, 23622, 26553],
255,
15109,
[[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, True]]],
[[0, 15109],
[0, 15109],
[1, 15264],
[1, 15264],
[1, 15264],
[1, 15264],
[2, 15174],
[2, 15174],
[2, 15174],
[2, 15174],
[3, 15289],
[0, 15289]]],
['regression: scenario 3',
[[16618, 36272, 41924, 55813],
3855,
48911,
[[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False]]],
[[1, 48384], [1, 48384], [1, 48384], [1, 48384], [1, 48384], [2, 45828], [2, 45828]]]],
[['regression: scenario 3',
[[45414, 65173, 31151, 4829],
3855,
46402,
[[False, True],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False]]],
[[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[1, 48709],
[1, 48709],
[1, 48709]]],
['regression: scenario 6',
[[53426, 5627, 11199, 28564],
3855,
26531,
[[True, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False]]],
[[1, 26027],
[1, 26027],
[1, 26027],
[2, 27567],
[2, 27567],
[2, 27567],
[2, 27567],
[3, 28580],
[3, 28580],
[3, 28580],
[1, 26027],
[1, 26027],
[1, 26027],
[1, 26027]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[38610, 2229],
65535,
14704,
[[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 14704], [0, 14704], [0, 14704], [0, 14704], [0, 14704], [1, 2229], [1, 2229], [0, 2229], [0, 2229]]],
['regression: scenario 2',
[[36741, 30504],
65535,
26589,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[True, False],
[False, False]]],
[[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[0, 30504],
[0, 30504],
[0, 30504]]]],
[['regression: scenario 6',
[[41259, 64194, 24167],
255,
50548,
[[True, False],
[False, False],
[True, True],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[1, 50626], [1, 50626], [0, 50626], [0, 50626], [1, 50626], [1, 50626], [1, 50626]]],
['regression: scenario 34',
[[14407, 35134, 61773],
65535,
32422,
[[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False]]],
[[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[61786, 58708],
255,
45362,
[[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[0, 45362], [0, 45362], [0, 45362], [1, 45396], [1, 45396], [1, 45396], [1, 45396]]],
['control: scenario 2',
[[57902, 51779],
61440,
26811,
[[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387]]]],
[['regression: scenario 6',
[[49875, 17863, 34135],
3855,
57202,
[[False, False], [True, False], [True, False], [True, True], [False, False], [False, False]]],
[[0, 57202], [1, 54647], [1, 54647], [0, 54647], [0, 54647], [0, 54647]]],
['regression: scenario 46',
[[23503, 30684, 5429],
61440,
58681,
[[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False]]],
[[1, 30009],
[1, 30009],
[1, 30009],
[1, 30009],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[1, 30009]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[39974, 26951],
3855,
4546,
[[False, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, True]]],
[[0, 4546],
[0, 4546],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[0, 6599]]],
['regression: scenario 2',
[[43067, 57880, 6921, 33106, 51712],
255,
13830,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, True],
[True, True],
[False, False],
[True, False],
[False, False]]],
[[1, 13848],
[1, 13848],
[1, 13848],
[2, 13833],
[2, 13833],
[2, 13833],
[3, 13906],
[3, 13906],
[0, 13906],
[0, 13906],
[0, 13906],
[1, 13848],
[1, 13848]]]]]
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: wrap past last step | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [2, 43810]] | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]] | Failed |
| regression: scenario 5 | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [1, 18719], [2, 18449]] | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [1, 18719], [1, 18719]] | Failed |
| control: two element file | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | Passed |
| control: reset while enabled | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | Passed |
| control: reset with advance | [[0, 170], [0, 170], [0, 170], [1, 426]] | [[0, 170], [0, 170], [0, 170], [1, 426]] | Passed |
| regression: scenario 1 | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [2, 8879], [2, 8879]] | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]] | Failed |
| control: scenario 2 | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | Passed |
| regression: scenario 3 | [[1, 45985], [2, 21409], [3, 45985], [1, 45985], [2, 21409], [2, 21409], [2, 21409]] | [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]] | Failed |
SHA-256 / e82a3d0c0abbf84fda12e06da96cebc43d479ed1e9ca056dda64e0311ad23b12
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(words, mask, start_dest, steps):
pos = 0
dest = start_dest
prev = False
length = len(words) - 1
out = []
for en, res in steps:
en = bool(en)
if res:
pos = 0
elif en and not prev and pos < length:
pos += 1
if pos > length:
pos = 1
dest = (dest & ~mask & 0xFFFF) | (words[pos] & mask)
prev = en
out.append([pos, dest])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['regression: scenario 5',
[[31779, 18767, 26849],
3855,
17424,
[[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False]]],
[[1, 18719],
[1, 18719],
[1, 18719],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[1, 18719],
[1, 18719]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 1',
[[26918, 50611, 8879, 59828],
65535,
52597,
[[False, False],
[False, False],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[1, 50611],
[1, 50611],
[1, 50611]]],
['control: scenario 2',
[[42968, 29173, 43546],
255,
5794,
[[True, False],
[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[False, False]]],
[[1, 5877],
[1, 5877],
[1, 5877],
[1, 5877],
[2, 5658],
[2, 5658],
[2, 5658],
[2, 5658],
[0, 5658],
[0, 5658]]],
['regression: scenario 3',
[[16785, 47110, 21847, 45361],
61440,
41889,
[[True, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False]]],
[[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]]]],
[['regression: scenario 1',
[[8488, 43469, 38296, 4034],
255,
44563,
[[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False]]],
[[0, 44563],
[1, 44749],
[1, 44749],
[1, 44749],
[1, 44749],
[2, 44696],
[2, 44696],
[3, 44738],
[3, 44738],
[1, 44749],
[1, 44749],
[2, 44696]]],
['regression: scenario 21',
[[35992, 43053, 59445],
65535,
52164,
[[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 52164],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[2, 59445],
[2, 59445],
[0, 59445],
[0, 59445]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 2',
[[43079, 20640, 23622, 26553],
255,
15109,
[[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, True]]],
[[0, 15109],
[0, 15109],
[1, 15264],
[1, 15264],
[1, 15264],
[1, 15264],
[2, 15174],
[2, 15174],
[2, 15174],
[2, 15174],
[3, 15289],
[0, 15289]]],
['regression: scenario 3',
[[16618, 36272, 41924, 55813],
3855,
48911,
[[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False]]],
[[1, 48384], [1, 48384], [1, 48384], [1, 48384], [1, 48384], [2, 45828], [2, 45828]]]],
[['regression: scenario 3',
[[45414, 65173, 31151, 4829],
3855,
46402,
[[False, True],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False]]],
[[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[1, 48709],
[1, 48709],
[1, 48709]]],
['regression: scenario 6',
[[53426, 5627, 11199, 28564],
3855,
26531,
[[True, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False]]],
[[1, 26027],
[1, 26027],
[1, 26027],
[2, 27567],
[2, 27567],
[2, 27567],
[2, 27567],
[3, 28580],
[3, 28580],
[3, 28580],
[1, 26027],
[1, 26027],
[1, 26027],
[1, 26027]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[38610, 2229],
65535,
14704,
[[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 14704], [0, 14704], [0, 14704], [0, 14704], [0, 14704], [1, 2229], [1, 2229], [0, 2229], [0, 2229]]],
['regression: scenario 2',
[[36741, 30504],
65535,
26589,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[True, False],
[False, False]]],
[[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[0, 30504],
[0, 30504],
[0, 30504]]]],
[['regression: scenario 6',
[[41259, 64194, 24167],
255,
50548,
[[True, False],
[False, False],
[True, True],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[1, 50626], [1, 50626], [0, 50626], [0, 50626], [1, 50626], [1, 50626], [1, 50626]]],
['regression: scenario 34',
[[14407, 35134, 61773],
65535,
32422,
[[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False]]],
[[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[61786, 58708],
255,
45362,
[[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[0, 45362], [0, 45362], [0, 45362], [1, 45396], [1, 45396], [1, 45396], [1, 45396]]],
['control: scenario 2',
[[57902, 51779],
61440,
26811,
[[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387]]]],
[['regression: scenario 6',
[[49875, 17863, 34135],
3855,
57202,
[[False, False], [True, False], [True, False], [True, True], [False, False], [False, False]]],
[[0, 57202], [1, 54647], [1, 54647], [0, 54647], [0, 54647], [0, 54647]]],
['regression: scenario 46',
[[23503, 30684, 5429],
61440,
58681,
[[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False]]],
[[1, 30009],
[1, 30009],
[1, 30009],
[1, 30009],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[1, 30009]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[39974, 26951],
3855,
4546,
[[False, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, True]]],
[[0, 4546],
[0, 4546],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[0, 6599]]],
['regression: scenario 2',
[[43067, 57880, 6921, 33106, 51712],
255,
13830,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, True],
[True, True],
[False, False],
[True, False],
[False, False]]],
[[1, 13848],
[1, 13848],
[1, 13848],
[2, 13833],
[2, 13833],
[2, 13833],
[3, 13906],
[3, 13906],
[0, 13906],
[0, 13906],
[0, 13906],
[1, 13848],
[1, 13848]]]]]
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: wrap past last step | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [2, 43810], [2, 43810]] | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]] | Failed |
| regression: scenario 5 | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449]] | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [1, 18719], [1, 18719]] | Failed |
| control: two element file | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | Passed |
| control: reset while enabled | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | Passed |
| control: reset with advance | [[0, 170], [0, 170], [0, 170], [1, 426]] | [[0, 170], [0, 170], [0, 170], [1, 426]] | Passed |
| regression: scenario 1 | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]] | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]] | Passed |
| control: scenario 2 | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | Passed |
| regression: scenario 3 | [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]] | [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]] | Passed |
SHA-256 / 565404a6ea7389b592fe8405f2ead375a83772be171d10bffe6ceb69afe4e99d
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(words, mask, start_dest, steps):
pos = 0
dest = start_dest
prev = False
length = len(words) - 1
out = []
for en, res in steps:
en = bool(en)
if res:
pos = 0
elif en and not prev:
pos += 1
if pos > length:
pos = 1
dest = (dest & ~mask & 0xFFFF) | (words[pos] & mask)
prev = en
out.append([pos, dest])
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['regression: scenario 5',
[[31779, 18767, 26849],
3855,
17424,
[[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False]]],
[[1, 18719],
[1, 18719],
[1, 18719],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[2, 18449],
[1, 18719],
[1, 18719]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 1',
[[26918, 50611, 8879, 59828],
65535,
52597,
[[False, False],
[False, False],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[0, 52597],
[1, 50611],
[1, 50611],
[1, 50611]]],
['control: scenario 2',
[[42968, 29173, 43546],
255,
5794,
[[True, False],
[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[False, False]]],
[[1, 5877],
[1, 5877],
[1, 5877],
[1, 5877],
[2, 5658],
[2, 5658],
[2, 5658],
[2, 5658],
[0, 5658],
[0, 5658]]],
['regression: scenario 3',
[[16785, 47110, 21847, 45361],
61440,
41889,
[[True, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False]]],
[[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]]]],
[['regression: scenario 1',
[[8488, 43469, 38296, 4034],
255,
44563,
[[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False]]],
[[0, 44563],
[1, 44749],
[1, 44749],
[1, 44749],
[1, 44749],
[2, 44696],
[2, 44696],
[3, 44738],
[3, 44738],
[1, 44749],
[1, 44749],
[2, 44696]]],
['regression: scenario 21',
[[35992, 43053, 59445],
65535,
52164,
[[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 52164],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[1, 43053],
[1, 43053],
[2, 59445],
[2, 59445],
[2, 59445],
[2, 59445],
[0, 59445],
[0, 59445]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['regression: scenario 2',
[[43079, 20640, 23622, 26553],
255,
15109,
[[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, True]]],
[[0, 15109],
[0, 15109],
[1, 15264],
[1, 15264],
[1, 15264],
[1, 15264],
[2, 15174],
[2, 15174],
[2, 15174],
[2, 15174],
[3, 15289],
[0, 15289]]],
['regression: scenario 3',
[[16618, 36272, 41924, 55813],
3855,
48911,
[[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False]]],
[[1, 48384], [1, 48384], [1, 48384], [1, 48384], [1, 48384], [2, 45828], [2, 45828]]]],
[['regression: scenario 3',
[[45414, 65173, 31151, 4829],
3855,
46402,
[[False, True],
[False, False],
[True, True],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False]]],
[[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[0, 46402],
[1, 48709],
[1, 48709],
[1, 48709]]],
['regression: scenario 6',
[[53426, 5627, 11199, 28564],
3855,
26531,
[[True, False],
[True, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[False, False]]],
[[1, 26027],
[1, 26027],
[1, 26027],
[2, 27567],
[2, 27567],
[2, 27567],
[2, 27567],
[3, 28580],
[3, 28580],
[3, 28580],
[1, 26027],
[1, 26027],
[1, 26027],
[1, 26027]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[38610, 2229],
65535,
14704,
[[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, True],
[False, False]]],
[[0, 14704], [0, 14704], [0, 14704], [0, 14704], [0, 14704], [1, 2229], [1, 2229], [0, 2229], [0, 2229]]],
['regression: scenario 2',
[[36741, 30504],
65535,
26589,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[True, True],
[True, False],
[False, False]]],
[[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[1, 30504],
[0, 30504],
[0, 30504],
[0, 30504]]]],
[['regression: scenario 6',
[[41259, 64194, 24167],
255,
50548,
[[True, False],
[False, False],
[True, True],
[False, False],
[True, False],
[True, False],
[False, False]]],
[[1, 50626], [1, 50626], [0, 50626], [0, 50626], [1, 50626], [1, 50626], [1, 50626]]],
['regression: scenario 34',
[[14407, 35134, 61773],
65535,
32422,
[[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False]]],
[[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[1, 35134],
[1, 35134],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773],
[2, 61773]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[61786, 58708],
255,
45362,
[[False, False],
[False, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[0, 45362], [0, 45362], [0, 45362], [1, 45396], [1, 45396], [1, 45396], [1, 45396]]],
['control: scenario 2',
[[57902, 51779],
61440,
26811,
[[True, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[False, False],
[True, False]]],
[[1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387]]]],
[['regression: scenario 6',
[[49875, 17863, 34135],
3855,
57202,
[[False, False], [True, False], [True, False], [True, True], [False, False], [False, False]]],
[[0, 57202], [1, 54647], [1, 54647], [0, 54647], [0, 54647], [0, 54647]]],
['regression: scenario 46',
[[23503, 30684, 5429],
61440,
58681,
[[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[True, False],
[False, False],
[False, False],
[False, False],
[False, False],
[False, False],
[True, False]]],
[[1, 30009],
[1, 30009],
[1, 30009],
[1, 30009],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[2, 5433],
[1, 30009]]],
['regression: wrap past last step',
[[0, 17, 34],
255,
43776,
[[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],
[[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],
['control: two element file',
[[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],
[[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],
['control: reset while enabled',
[[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],
[[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],
['control: reset with advance',
[[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],
[[0, 170], [0, 170], [0, 170], [1, 426]]],
['control: scenario 1',
[[39974, 26951],
3855,
4546,
[[False, False],
[False, False],
[True, False],
[False, False],
[True, False],
[True, False],
[False, False],
[False, False],
[True, False],
[True, True]]],
[[0, 4546],
[0, 4546],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[1, 6599],
[0, 6599]]],
['regression: scenario 2',
[[43067, 57880, 6921, 33106, 51712],
255,
13830,
[[True, False],
[False, False],
[False, False],
[True, False],
[True, False],
[False, False],
[True, False],
[False, False],
[True, True],
[True, True],
[False, False],
[True, False],
[False, False]]],
[[1, 13848],
[1, 13848],
[1, 13848],
[2, 13833],
[2, 13833],
[2, 13833],
[3, 13906],
[3, 13906],
[0, 13906],
[0, 13906],
[0, 13906],
[1, 13848],
[1, 13848]]]]]
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: wrap past last step | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]] | [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]] | Passed |
| regression: scenario 5 | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [1, 18719], [1, 18719]] | [[1, 18719], [1, 18719], [1, 18719], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [2, 18449], [1, 18719], [1, 18719]] | Passed |
| control: two element file | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]] | Passed |
| control: reset while enabled | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | [[1, 65523], [0, 65523], [0, 65523], [1, 65523]] | Passed |
| control: reset with advance | [[0, 170], [0, 170], [0, 170], [1, 426]] | [[0, 170], [0, 170], [0, 170], [1, 426]] | Passed |
| regression: scenario 1 | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]] | [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]] | Passed |
| control: scenario 2 | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]] | Passed |
| regression: scenario 3 | [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]] | [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]] | Passed |
SHA-256 / ee784ba15fa24cf9319cc8ced7415a0bf54e387175ce7ea0807e7709d1464cc2
Verification & scope
A deterministic bounded teaching model of one PLC instruction or rung pattern evaluated scan by scan. The stated contract is a stipulated toy convention, not a claim of conformance to any vendor controller or IEC 61131-3 runtime. 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:51:42.460102+00:00.
Case digest / bd1db501f1fe2c627dccadf5e4a0ca11417e2c0b1cfb61725e93b8269777c025