{"abstract":"Outputs that other rungs control on the same word are cleared on every sequencer step.","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":"ORing the masked word in never clears masked bits from the previous step.","family":"w2-plc-ladder-logic-scan-cycles-sqo-sequencer-mask-merge","id":"FA-92091","implementations":{"attempt":{"sha256":"a359800df538eb6914f8b8d8f1c8c45ca0976f3b275472273740261d74f6c944","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 | (words[pos] & mask)\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: 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  ['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  ['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  ['regression: 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  ['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  ['regression: 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 4',\n   [[26660, 61415, 54040],\n    65535,\n    45106,\n    [[True, False], [True, False], [True, False], [False, False], [False, False], [True, False]]],\n   [[1, 61415], [1, 61415], [1, 61415], [1, 61415], [1, 61415], [2, 54040]]]],\n [['regression: 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   [[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  ['regression: 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  ['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 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 3',\n   [[16618, 36272, 41924, 55813],\n    3855,\n    48911,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[1, 48384], [1, 48384], [1, 48384], [1, 48384], [1, 48384], [2, 45828], [2, 45828]]],\n  ['regression: scenario 4',\n   [[45574, 2941],\n    255,\n    15355,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False]]],\n   [[0, 15355],\n    [0, 15355],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229]]]],\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  ['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: 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  ['regression: 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   [[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 3',\n   [[45414, 65173, 31151, 4829],\n    3855,\n    46402,\n    [[False, True],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False]]],\n   [[0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [1, 48709],\n    [1, 48709],\n    [1, 48709]]],\n  ['regression: scenario 4',\n   [[29784, 63854],\n    255,\n    25258,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 25258],\n    [1, 25198],\n    [1, 25198],\n    [1, 25198],\n    [0, 25198],\n    [0, 25198],\n    [0, 25198],\n    [1, 25198],\n    [1, 25198],\n    [0, 25198],\n    [0, 25198],\n    [0, 25198],\n    [1, 25198],\n    [0, 25198]]]],\n [['regression: 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  ['regression: scenario 5',\n   [[47154, 32327, 23912, 32399],\n    3855,\n    21368,\n    [[False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 21368],\n    [0, 21368],\n    [0, 21368],\n    [1, 24183],\n    [1, 24183],\n    [1, 24183],\n    [2, 23928],\n    [2, 23928],\n    [2, 23928],\n    [3, 24191],\n    [0, 24191]]],\n  ['regression: 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  ['regression: 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  ['regression: 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 3',\n   [[35305, 48952, 41314, 29239, 28773],\n    65535,\n    11028,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, True]]],\n   [[0, 11028],\n    [0, 11028],\n    [1, 48952],\n    [1, 48952],\n    [1, 48952],\n    [1, 48952],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [0, 41314]]]],\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]]],\n  ['regression: scenario 6',\n   [[49875, 17863, 34135],\n    3855,\n    57202,\n    [[False, False], [True, False], [True, False], [True, True], [False, False], [False, False]]],\n   [[0, 57202], [1, 54647], [1, 54647], [0, 54647], [0, 54647], [0, 54647]]],\n  ['regression: 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  ['regression: 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  ['regression: 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 3',\n   [[62662, 46394, 25376, 46313],\n    3855,\n    7057,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [1, 5530],\n    [1, 5530],\n    [2, 5008],\n    [2, 5008],\n    [2, 5008],\n    [2, 5008],\n    [3, 5273],\n    [3, 5273]]]]]\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":"868c6135d8fb3a2ee0222ff155a3d30dd835849b380f2bd469c0fcdb00869d1b","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 = words[pos] & mask\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: 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  ['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  ['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  ['regression: 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  ['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  ['regression: 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 4',\n   [[26660, 61415, 54040],\n    65535,\n    45106,\n    [[True, False], [True, False], [True, False], [False, False], [False, False], [True, False]]],\n   [[1, 61415], [1, 61415], [1, 61415], [1, 61415], [1, 61415], [2, 54040]]]],\n [['regression: 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   [[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  ['regression: 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  ['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 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 3',\n   [[16618, 36272, 41924, 55813],\n    3855,\n    48911,\n    [[True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[1, 48384], [1, 48384], [1, 48384], [1, 48384], [1, 48384], [2, 45828], [2, 45828]]],\n  ['regression: scenario 4',\n   [[45574, 2941],\n    255,\n    15355,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False]]],\n   [[0, 15355],\n    [0, 15355],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229],\n    [1, 15229]]]],\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  ['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: 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  ['regression: 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   [[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 3',\n   [[45414, 65173, 31151, 4829],\n    3855,\n    46402,\n    [[False, True],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False]]],\n   [[0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [0, 46402],\n    [1, 48709],\n    [1, 48709],\n    [1, 48709]]],\n  ['regression: scenario 4',\n   [[29784, 63854],\n    255,\n    25258,\n    [[False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 25258],\n    [1, 25198],\n    [1, 25198],\n    [1, 25198],\n    [0, 25198],\n    [0, 25198],\n    [0, 25198],\n    [1, 25198],\n    [1, 25198],\n    [0, 25198],\n    [0, 25198],\n    [0, 25198],\n    [1, 25198],\n    [0, 25198]]]],\n [['regression: 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  ['regression: scenario 5',\n   [[47154, 32327, 23912, 32399],\n    3855,\n    21368,\n    [[False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, True]]],\n   [[0, 21368],\n    [0, 21368],\n    [0, 21368],\n    [1, 24183],\n    [1, 24183],\n    [1, 24183],\n    [2, 23928],\n    [2, 23928],\n    [2, 23928],\n    [3, 24191],\n    [0, 24191]]],\n  ['regression: 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  ['regression: 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  ['regression: 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 3',\n   [[35305, 48952, 41314, 29239, 28773],\n    65535,\n    11028,\n    [[False, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, True]]],\n   [[0, 11028],\n    [0, 11028],\n    [1, 48952],\n    [1, 48952],\n    [1, 48952],\n    [1, 48952],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [2, 41314],\n    [0, 41314]]]],\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]]],\n  ['regression: scenario 6',\n   [[49875, 17863, 34135],\n    3855,\n    57202,\n    [[False, False], [True, False], [True, False], [True, True], [False, False], [False, False]]],\n   [[0, 57202], [1, 54647], [1, 54647], [0, 54647], [0, 54647], [0, 54647]]],\n  ['regression: 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  ['regression: 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  ['regression: 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 3',\n   [[62662, 46394, 25376, 46313],\n    3855,\n    7057,\n    [[False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [False, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [True, False],\n     [True, False],\n     [False, False],\n     [True, False],\n     [False, False]]],\n   [[0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [0, 7057],\n    [1, 5530],\n    [1, 5530],\n    [2, 5008],\n    [2, 5008],\n    [2, 5008],\n    [2, 5008],\n    [3, 5273],\n    [3, 5273]]]]]\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-mask-merge","generated_at":"2026-09-29T14:51:42.448326+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 destination is overwritten with the masked word.","sha256":"d33383452db1301662e1631daf6d04db1d4986aef6ce94039fc22460612b1ca8","title":"Sequencer write clobbers destination bits outside the mask · 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.254,"exit_code":1,"observations":[{"actual":[[1,43793],[1,43793],[2,43827],[2,43827],[1,43827],[1,43827]],"check":"regression: wrap past last step","expected":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"passed":false},{"actual":[[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[0,52597],[1,52727],[1,52727],[1,52727]],"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,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":"regression: reset while enabled","expected":[[1,65523],[0,65523],[0,65523],[1,65523]],"passed":true},{"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":[[1,5879],[1,5879],[1,5879],[1,5879],[2,5887],[2,5887],[2,5887],[2,5887],[0,5887],[0,5887]],"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":"regression: scenario 3","expected":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"passed":true},{"actual":[[1,65527],[1,65527],[1,65527],[1,65527],[1,65527],[2,65535]],"check":"regression: scenario 4","expected":[[1,61415],[1,61415],[1,61415],[1,61415],[1,61415],[2,54040]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wrap past last step\", \"actual\": [[1, 43793], [1, 43793], [2, 43827], [2, 43827], [1, 43827], [1, 43827]], \"expected\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 52727], [1, 52727], [1, 52727]], \"expected\": [[0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [0, 52597], [1, 50611], [1, 50611], [1, 50611]], \"passed\": false}, {\"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\": \"regression: 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: 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 2\", \"actual\": [[1, 5879], [1, 5879], [1, 5879], [1, 5879], [2, 5887], [2, 5887], [2, 5887], [2, 5887], [0, 5887], [0, 5887]], \"expected\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]], \"passed\": false}, {\"check\": \"regression: 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}, {\"check\": \"regression: scenario 4\", \"actual\": [[1, 65527], [1, 65527], [1, 65527], [1, 65527], [1, 65527], [2, 65535]], \"expected\": [[1, 61415], [1, 61415], [1, 61415], [1, 61415], [1, 61415], [2, 54040]], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.97,"exit_code":1,"observations":[{"actual":[[1,17],[1,17],[2,34],[2,34],[1,17],[1,17]],"check":"regression: wrap past last step","expected":[[1,43793],[1,43793],[2,43810],[2,43810],[1,43793],[1,43793]],"passed":false},{"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,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,3],[0,3],[0,3],[1,3]],"check":"regression: reset while enabled","expected":[[1,65523],[0,65523],[0,65523],[1,65523]],"passed":false},{"actual":[[0,170],[0,170],[0,170],[1,256]],"check":"regression: reset with advance","expected":[[0,170],[0,170],[0,170],[1,426]],"passed":false},{"actual":[[1,245],[1,245],[1,245],[1,245],[2,26],[2,26],[2,26],[2,26],[0,26],[0,26]],"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,45056],[1,45056],[1,45056],[1,45056],[1,45056],[1,45056],[1,45056]],"check":"regression: scenario 3","expected":[[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985],[1,45985]],"passed":false},{"actual":[[1,61415],[1,61415],[1,61415],[1,61415],[1,61415],[2,54040]],"check":"regression: scenario 4","expected":[[1,61415],[1,61415],[1,61415],[1,61415],[1,61415],[2,54040]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wrap past last step\", \"actual\": [[1, 17], [1, 17], [2, 34], [2, 34], [1, 17], [1, 17]], \"expected\": [[1, 43793], [1, 43793], [2, 43810], [2, 43810], [1, 43793], [1, 43793]], \"passed\": false}, {\"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\": \"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\": \"regression: reset while enabled\", \"actual\": [[1, 3], [0, 3], [0, 3], [1, 3]], \"expected\": [[1, 65523], [0, 65523], [0, 65523], [1, 65523]], \"passed\": false}, {\"check\": \"regression: reset with advance\", \"actual\": [[0, 170], [0, 170], [0, 170], [1, 256]], \"expected\": [[0, 170], [0, 170], [0, 170], [1, 426]], \"passed\": false}, {\"check\": \"regression: scenario 2\", \"actual\": [[1, 245], [1, 245], [1, 245], [1, 245], [2, 26], [2, 26], [2, 26], [2, 26], [0, 26], [0, 26]], \"expected\": [[1, 5877], [1, 5877], [1, 5877], [1, 5877], [2, 5658], [2, 5658], [2, 5658], [2, 5658], [0, 5658], [0, 5658]], \"passed\": false}, {\"check\": \"regression: scenario 3\", \"actual\": [[1, 45056], [1, 45056], [1, 45056], [1, 45056], [1, 45056], [1, 45056], [1, 45056]], \"expected\": [[1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985], [1, 45985]], \"passed\": false}, {\"check\": \"regression: scenario 4\", \"actual\": [[1, 61415], [1, 61415], [1, 61415], [1, 61415], [1, 61415], [2, 54040]], \"expected\": [[1, 61415], [1, 61415], [1, 61415], [1, 61415], [1, 61415], [2, 54040]], \"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."}}