{"abstract":"A reset coinciding with a step pulse outputs the next step pattern while the position reads 0.","category":"PLC ladder logic scan cycles","checks":8,"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.","contract_signature":"words, mask, start_dest, steps","evaluation_group":"w2-plc-ladder-logic-scan-cycles-sqo-sequencer","failed_approach":"Skipping the edge-memory update on a reset scan makes a held enable advance right after the reset.","family":"w2-plc-ladder-logic-scan-cycles-sqo-sequencer-reset-priority","id":"FA-92106","implementations":{"attempt":{"sha256":"7281f3b7a1828ede71afdd4679fc2d08a8cc61a04701c0518c9db569708c2d73","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(words, mask, start_dest, steps):\n    pos = 0\n    dest = start_dest\n    prev = False\n    length = len(words) - 1\n    out = []\n    for en, res in steps:\n        en = bool(en)\n        if res:\n            pos = 0\n        elif en and not prev:\n            pos += 1\n            if pos > length:\n                pos = 1\n            dest = (dest & ~mask & 0xFFFF) | (words[pos] & mask)\n        prev = en if not res else prev\n        out.append([pos, dest])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['regression: scenario 6',\n   [[29507, 12756, 63003, 15441, 3378],\n    61440,\n    54790,\n    [[False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False]]],\n   [[0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [1, 13830],\n    [1, 13830],\n    [1, 13830],\n    [2, 62982]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: scenario 1',\n   [[26918, 50611, 8879, 59828],\n    65535,\n    52597,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False]]],\n   [[0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [1, 50611],\n    [1, 50611],\n    [1, 50611]]],\n  ['regression: scenario 2',\n   [[42968, 29173, 43546],\n    255,\n    5794,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False]]],\n   [[1, 5877],\n    [1, 5877],\n    [1, 5877],\n    [1, 5877],\n    [2, 5658],\n    [2, 5658],\n    [2, 5658],\n    [2, 5658],\n    [0, 5658],\n    [0, 5658]]],\n  ['control: scenario 3',\n   [[16785, 47110, 21847, 45361],\n    61440,\n    41889,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False]]],\n   [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]]]],\n [['regression: scenario 8',\n   [[65487, 45479, 8754],\n    61440,\n    1982,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False]]],\n   [[0, 1982],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [2, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174]]],\n  ['regression: scenario 31',\n   [[26490, 1121, 33414, 24311],\n    65535,\n    26582,\n    [[True, True],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False]]],\n   [[0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[8488, 43469, 38296, 4034],\n    255,\n    44563,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False]]],\n   [[0, 44563],\n    [1, 44749],\n    [1, 44749],\n    [1, 44749],\n    [1, 44749],\n    [2, 44696],\n    [2, 44696],\n    [3, 44738],\n    [3, 44738],\n    [1, 44749],\n    [1, 44749],\n    [2, 44696]]],\n  ['control: scenario 2',\n   [[43079, 20640, 23622, 26553],\n    255,\n    15109,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, True]]],\n   [[0, 15109],\n    [0, 15109],\n    [1, 15264],\n    [1, 15264],\n    [1, 15264],\n    [1, 15264],\n    [2, 15174],\n    [2, 15174],\n    [2, 15174],\n    [2, 15174],\n    [3, 15289],\n    [0, 15289]]]],\n [['regression: scenario 5',\n   [[8300, 19450, 62969],\n    255,\n    8070,\n    [[True, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False]]],\n   [[0, 8070],\n    [0, 8070],\n    [0, 8070],\n    [1, 8186],\n    [1, 8186],\n    [1, 8186],\n    [1, 8186],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [1, 8186],\n    [1, 8186]]],\n  ['regression: scenario 20',\n   [[27683, 27069, 29983],\n    255,\n    29648,\n    [[False, False],\n     [True, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, True]]],\n   [[0, 29648],\n    [1, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[38610, 2229],\n    65535,\n    14704,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, True],\n     [False, False]]],\n   [[0, 14704], [0, 14704], [0, 14704], [0, 14704], [0, 14704], [1, 2229], [1, 2229], [0, 2229], [0, 2229]]],\n  ['regression: scenario 2',\n   [[36741, 30504],\n    65535,\n    26589,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False]]],\n   [[1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [0, 30504],\n    [0, 30504],\n    [0, 30504]]]],\n [['regression: scenario 23',\n   [[17706, 2201, 35072],\n    3855,\n    50743,\n    [[True, True], [True, False], [False, False], [False, True], [True, False], [False, False]]],\n   [[0, 50743], [0, 50743], [0, 50743], [0, 50743], [1, 51257], [1, 51257]]],\n  ['regression: scenario 37',\n   [[46144, 38157],\n    61440,\n    18798,\n    [[False, True], [False, False], [False, False], [False, False], [True, True], [True, False]]],\n   [[0, 18798], [0, 18798], [0, 18798], [0, 18798], [0, 18798], [0, 18798]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[61786, 58708],\n    255,\n    45362,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False]]],\n   [[0, 45362], [0, 45362], [0, 45362], [1, 45396], [1, 45396], [1, 45396], [1, 45396]]],\n  ['control: scenario 2',\n   [[57902, 51779],\n    61440,\n    26811,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False]]],\n   [[1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387]]]],\n [['regression: scenario 10',\n   [[42427, 61110, 22519, 20082, 65253],\n    65535,\n    32195,\n    [[True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False]]],\n   [[1, 61110],\n    [1, 61110],\n    [2, 22519],\n    [2, 22519],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [0, 20082],\n    [0, 20082],\n    [0, 20082],\n    [0, 20082]]],\n  ['regression: scenario 19',\n   [[7514, 21129, 31492],\n    61440,\n    5749,\n    [[True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, True],\n     [True, False],\n     [False, False]]],\n   [[1, 22133],\n    [1, 22133],\n    [1, 22133],\n    [1, 22133],\n    [2, 30325],\n    [2, 30325],\n    [2, 30325],\n    [0, 30325],\n    [1, 22133],\n    [1, 22133]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[39974, 26951],\n    3855,\n    4546,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 4546],\n    [0, 4546],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [0, 6599]]],\n  ['regression: scenario 2',\n   [[43067, 57880, 6921, 33106, 51712],\n    255,\n    13830,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[1, 13848],\n    [1, 13848],\n    [1, 13848],\n    [2, 13833],\n    [2, 13833],\n    [2, 13833],\n    [3, 13906],\n    [3, 13906],\n    [0, 13906],\n    [0, 13906],\n    [0, 13906],\n    [1, 13848],\n    [1, 13848]]]]]\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":"f158f02663c880bd14b4cc6b0fad3d9a98567da7fba5ef3bbd7b5b1743724b3f","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(words, mask, start_dest, steps):\n    pos = 0\n    dest = start_dest\n    prev = False\n    length = len(words) - 1\n    out = []\n    for en, res in steps:\n        en = bool(en)\n        if en and not prev:\n            pos += 1\n            if pos > length:\n                pos = 1\n            dest = (dest & ~mask & 0xFFFF) | (words[pos] & mask)\n        if res:\n            pos = 0\n        prev = en\n        out.append([pos, dest])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['regression: scenario 6',\n   [[29507, 12756, 63003, 15441, 3378],\n    61440,\n    54790,\n    [[False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False]]],\n   [[0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [0, 54790],\n    [1, 13830],\n    [1, 13830],\n    [1, 13830],\n    [2, 62982]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: scenario 1',\n   [[26918, 50611, 8879, 59828],\n    65535,\n    52597,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False]]],\n   [[0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [0, 52597],\n    [1, 50611],\n    [1, 50611],\n    [1, 50611]]],\n  ['regression: scenario 2',\n   [[42968, 29173, 43546],\n    255,\n    5794,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False]]],\n   [[1, 5877],\n    [1, 5877],\n    [1, 5877],\n    [1, 5877],\n    [2, 5658],\n    [2, 5658],\n    [2, 5658],\n    [2, 5658],\n    [0, 5658],\n    [0, 5658]]],\n  ['control: scenario 3',\n   [[16785, 47110, 21847, 45361],\n    61440,\n    41889,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False]]],\n   [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]]]],\n [['regression: scenario 8',\n   [[65487, 45479, 8754],\n    61440,\n    1982,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False]]],\n   [[0, 1982],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [1, 47038],\n    [2, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174],\n    [0, 10174]]],\n  ['regression: scenario 31',\n   [[26490, 1121, 33414, 24311],\n    65535,\n    26582,\n    [[True, True],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False]]],\n   [[0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582],\n    [0, 26582]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[8488, 43469, 38296, 4034],\n    255,\n    44563,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False]]],\n   [[0, 44563],\n    [1, 44749],\n    [1, 44749],\n    [1, 44749],\n    [1, 44749],\n    [2, 44696],\n    [2, 44696],\n    [3, 44738],\n    [3, 44738],\n    [1, 44749],\n    [1, 44749],\n    [2, 44696]]],\n  ['control: scenario 2',\n   [[43079, 20640, 23622, 26553],\n    255,\n    15109,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, True]]],\n   [[0, 15109],\n    [0, 15109],\n    [1, 15264],\n    [1, 15264],\n    [1, 15264],\n    [1, 15264],\n    [2, 15174],\n    [2, 15174],\n    [2, 15174],\n    [2, 15174],\n    [3, 15289],\n    [0, 15289]]]],\n [['regression: scenario 5',\n   [[8300, 19450, 62969],\n    255,\n    8070,\n    [[True, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False]]],\n   [[0, 8070],\n    [0, 8070],\n    [0, 8070],\n    [1, 8186],\n    [1, 8186],\n    [1, 8186],\n    [1, 8186],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [2, 8185],\n    [1, 8186],\n    [1, 8186]]],\n  ['regression: scenario 20',\n   [[27683, 27069, 29983],\n    255,\n    29648,\n    [[False, False],\n     [True, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, True]]],\n   [[0, 29648],\n    [1, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629],\n    [0, 29629]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[38610, 2229],\n    65535,\n    14704,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, True],\n     [False, False]]],\n   [[0, 14704], [0, 14704], [0, 14704], [0, 14704], [0, 14704], [1, 2229], [1, 2229], [0, 2229], [0, 2229]]],\n  ['regression: scenario 2',\n   [[36741, 30504],\n    65535,\n    26589,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [False, False]]],\n   [[1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [1, 30504],\n    [0, 30504],\n    [0, 30504],\n    [0, 30504]]]],\n [['regression: scenario 23',\n   [[17706, 2201, 35072],\n    3855,\n    50743,\n    [[True, True], [True, False], [False, False], [False, True], [True, False], [False, False]]],\n   [[0, 50743], [0, 50743], [0, 50743], [0, 50743], [1, 51257], [1, 51257]]],\n  ['regression: scenario 37',\n   [[46144, 38157],\n    61440,\n    18798,\n    [[False, True], [False, False], [False, False], [False, False], [True, True], [True, False]]],\n   [[0, 18798], [0, 18798], [0, 18798], [0, 18798], [0, 18798], [0, 18798]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[61786, 58708],\n    255,\n    45362,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False]]],\n   [[0, 45362], [0, 45362], [0, 45362], [1, 45396], [1, 45396], [1, 45396], [1, 45396]]],\n  ['control: scenario 2',\n   [[57902, 51779],\n    61440,\n    26811,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False]]],\n   [[1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387], [1, 51387]]]],\n [['regression: scenario 10',\n   [[42427, 61110, 22519, 20082, 65253],\n    65535,\n    32195,\n    [[True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False]]],\n   [[1, 61110],\n    [1, 61110],\n    [2, 22519],\n    [2, 22519],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [3, 20082],\n    [0, 20082],\n    [0, 20082],\n    [0, 20082],\n    [0, 20082]]],\n  ['regression: scenario 19',\n   [[7514, 21129, 31492],\n    61440,\n    5749,\n    [[True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, True],\n     [True, False],\n     [False, False]]],\n   [[1, 22133],\n    [1, 22133],\n    [1, 22133],\n    [1, 22133],\n    [2, 30325],\n    [2, 30325],\n    [2, 30325],\n    [0, 30325],\n    [1, 22133],\n    [1, 22133]]],\n  ['control: wrap past last step',\n   [[0, 17, 34],\n    255,\n    43776,\n    [[True, False], [False, False], [True, False], [False, False], [True, False], [True, False]]],\n   [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]]],\n  ['control: two element file',\n   [[5, 9], 65535, 0, [[True, False], [False, False], [True, False], [False, False], [True, False]]],\n   [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]]],\n  ['control: reset while enabled',\n   [[0, 3, 12], 15, 65520, [[True, False], [True, True], [False, False], [True, False]]],\n   [[1, 65523], [0, 65523], [0, 65523], [1, 65523]]],\n  ['regression: reset with advance',\n   [[0, 256, 512], 65280, 170, [[False, False], [True, True], [False, False], [True, False]]],\n   [[0, 170], [0, 170], [0, 170], [1, 426]]],\n  ['control: scenario 1',\n   [[39974, 26951],\n    3855,\n    4546,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 4546],\n    [0, 4546],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [1, 6599],\n    [0, 6599]]],\n  ['regression: scenario 2',\n   [[43067, 57880, 6921, 33106, 51712],\n    255,\n    13830,\n    [[True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[1, 13848],\n    [1, 13848],\n    [1, 13848],\n    [2, 13833],\n    [2, 13833],\n    [2, 13833],\n    [3, 13906],\n    [3, 13906],\n    [0, 13906],\n    [0, 13906],\n    [0, 13906],\n    [1, 13848],\n    [1, 13848]]]]]\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":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-plc-ladder-logic-scan-cycles-sqo-sequencer-reset-priority","generated_at":"2026-09-29T14:51:42.513818+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"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.","root_cause":"The advance is processed before the reset in the same scan.","sha256":"773aafd4651aa7fa5d1a9f564d5a847cc267fd04239b3c1977791ad998060452","title":"Sequencer advances and writes on a scan that is also resetting · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":43.338,"exit_code":1,"observations":[{"actual":[[0,170],[0,170],[0,170],[1,426]],"check":"regression: reset with advance","expected":[[0,170],[0,170],[0,170],[1,426]],"passed":true},{"actual":[[0,54790],[0,54790],[0,54790],[1,13830],[1,13830],[1,13830],[2,62982],[2,62982],[2,62982],[3,13830]],"check":"regression: scenario 6","expected":[[0,54790],[0,54790],[0,54790],[0,54790],[0,54790],[0,54790],[1,13830],[1,13830],[1,13830],[2,62982]],"passed":false},{"actual":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"check":"control: wrap past last step","expected":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"passed":true},{"actual":[[1,9],[1,9],[1,9],[1,9],[1,9]],"check":"control: two element file","expected":[[1,9],[1,9],[1,9],[1,9],[1,9]],"passed":true},{"actual":[[1,65523],[0,65523],[0,65523],[1,65523]],"check":"control: reset while enabled","expected":[[1,65523],[0,65523],[0,65523],[1,65523]],"passed":true},{"actual":[[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[1,50611],[1,50611],[1,50611]],"check":"regression: scenario 1","expected":[[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[1,50611],[1,50611],[1,50611]],"passed":true},{"actual":[[1,5877],[1,5877],[1,5877],[1,5877],[2,5658],[2,5658],[2,5658],[2,5658],[0,5658],[0,5658]],"check":"regression: scenario 2","expected":[[1,5877],[1,5877],[1,5877],[1,5877],[2,5658],[2,5658],[2,5658],[2,5658],[0,5658],[0,5658]],"passed":true},{"actual":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"check":"control: scenario 3","expected":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reset with advance\", \"actual\": [[0, 170], [0, 170], [0, 170], [1, 426]], \"expected\": [[0, 170], [0, 170], [0, 170], [1, 426]], \"passed\": true}, {\"check\": \"regression: scenario 6\", \"actual\": [[0, 54790], [0, 54790], [0, 54790], [1, 13830], [1, 13830], [1, 13830], [2, 62982], [2, 62982], [2, 62982], [3, 13830]], \"expected\": [[0, 54790], [0, 54790], [0, 54790], [0, 54790], [0, 54790], [0, 54790], [1, 13830], [1, 13830], [1, 13830], [2, 62982]], \"passed\": false}, {\"check\": \"control: wrap past last step\", \"actual\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"expected\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"passed\": true}, {\"check\": \"control: two element file\", \"actual\": [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]], \"expected\": [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]], \"passed\": true}, {\"check\": \"control: reset while enabled\", \"actual\": [[1, 65523], [0, 65523], [0, 65523], [1, 65523]], \"expected\": [[1, 65523], [0, 65523], [0, 65523], [1, 65523]], \"passed\": true}, {\"check\": \"regression: scenario 1\", \"actual\": [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]], \"expected\": [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]], \"expected\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]], \"expected\": [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.922,"exit_code":1,"observations":[{"actual":[[0,170],[0,426],[0,426],[1,426]],"check":"regression: reset with advance","expected":[[0,170],[0,170],[0,170],[1,426]],"passed":false},{"actual":[[0,54790],[0,54790],[0,13830],[0,13830],[0,13830],[0,13830],[1,13830],[1,13830],[1,13830],[2,62982]],"check":"regression: scenario 6","expected":[[0,54790],[0,54790],[0,54790],[0,54790],[0,54790],[0,54790],[1,13830],[1,13830],[1,13830],[2,62982]],"passed":false},{"actual":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"check":"control: wrap past last step","expected":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"passed":true},{"actual":[[1,9],[1,9],[1,9],[1,9],[1,9]],"check":"control: two element file","expected":[[1,9],[1,9],[1,9],[1,9],[1,9]],"passed":true},{"actual":[[1,65523],[0,65523],[0,65523],[1,65523]],"check":"control: reset while enabled","expected":[[1,65523],[0,65523],[0,65523],[1,65523]],"passed":true},{"actual":[[0,52597],[0,52597],[0,52597],[0,50611],[0,50611],[0,50611],[0,50611],[1,50611],[1,50611],[1,50611]],"check":"regression: scenario 1","expected":[[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[1,50611],[1,50611],[1,50611]],"passed":false},{"actual":[[1,5877],[1,5877],[1,5877],[1,5877],[2,5658],[2,5658],[2,5658],[2,5658],[0,5877],[0,5877]],"check":"regression: scenario 2","expected":[[1,5877],[1,5877],[1,5877],[1,5877],[2,5658],[2,5658],[2,5658],[2,5658],[0,5658],[0,5658]],"passed":false},{"actual":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"check":"control: scenario 3","expected":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: reset with advance\", \"actual\": [[0, 170], [0, 426], [0, 426], [1, 426]], \"expected\": [[0, 170], [0, 170], [0, 170], [1, 426]], \"passed\": false}, {\"check\": \"regression: scenario 6\", \"actual\": [[0, 54790], [0, 54790], [0, 13830], [0, 13830], [0, 13830], [0, 13830], [1, 13830], [1, 13830], [1, 13830], [2, 62982]], \"expected\": [[0, 54790], [0, 54790], [0, 54790], [0, 54790], [0, 54790], [0, 54790], [1, 13830], [1, 13830], [1, 13830], [2, 62982]], \"passed\": false}, {\"check\": \"control: wrap past last step\", \"actual\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"expected\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"passed\": true}, {\"check\": \"control: two element file\", \"actual\": [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]], \"expected\": [[1, 9], [1, 9], [1, 9], [1, 9], [1, 9]], \"passed\": true}, {\"check\": \"control: reset while enabled\", \"actual\": [[1, 65523], [0, 65523], [0, 65523], [1, 65523]], \"expected\": [[1, 65523], [0, 65523], [0, 65523], [1, 65523]], \"passed\": true}, {\"check\": \"regression: scenario 1\", \"actual\": [[0, 52597], [0, 52597], [0, 52597], [0, 50611], [0, 50611], [0, 50611], [0, 50611], [1, 50611], [1, 50611], [1, 50611]], \"expected\": [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]], \"passed\": false}, {\"check\": \"regression: scenario 2\", \"actual\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5877], [0, 5877]], \"expected\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]], \"passed\": false}, {\"check\": \"control: scenario 3\", \"actual\": [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]], \"expected\": [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}