{"abstract":"Operators clear latched alarms with the acknowledge button, bypassing the reset.","category":"PLC ladder logic scan cycles","checks":8,"contract":"Digital alarm instruction evaluated per scan; scans is a list of [condition, ack, reset], min_scans >= 1. The alarm activates when the condition has been true for min_scans consecutive scans; activation clears the acknowledged flag. A non-latched alarm clears when the condition goes false; a latched alarm clears only on a reset while the condition is false. ack sets acknowledged. Return [in_alarm, acknowledged] per scan.","evaluation_group":"w2-plc-ladder-logic-scan-cycles-digital-alarm-block","failed_approach":"Accepting either reset or ack still lets acknowledgement clear the latch.","family":"w2-plc-ladder-logic-scan-cycles-digital-alarm-block-latched-clear-source","id":"FA-92206","implementations":{"attempt":{"sha256":"bcefa71ab32302025a609093f37d0d0f5ae52e1ac591e7bf2d019a9ae353f0f0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_scans, latched, scans):\n    in_alarm = False\n    acked = True\n    count = 0\n    out = []\n    for cond, ack, reset in scans:\n        count = count + 1 if cond else 0\n        if count >= min_scans and cond and not in_alarm:\n            in_alarm = True\n            acked = False\n        elif in_alarm and not cond and (not latched or reset or ack):\n            in_alarm = False\n        if ack and not acked:\n            acked = True\n        out.append([in_alarm, acked])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False]]],\n   [[True, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False]]],\n  ['regression: scenario 2',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, True],\n    [True, False],\n    [True, False]]],\n  ['control: scenario 3',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [True, True, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['regression: scenario 6',\n   [2,\n    True,\n    [[False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [False, True, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [True, False]]],\n  ['control: scenario 2',\n   [3,\n    False,\n    [[False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: scenario 2',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: scenario 3',\n   [3,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [False, False]]]],\n [['regression: scenario 11',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True]]],\n  ['regression: scenario 34',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, True],\n     [True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]]],\n [['regression: scenario 10',\n   [1,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False]]],\n  ['regression: scenario 11',\n   [2,\n    True,\n    [[True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, True],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, True, False]]],\n   [[False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    False,\n    [[False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True],\n     [False, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [False, False],\n    [False, False],\n    [True, False]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"49242f2ca7ed42e0d159ef382555c2b1ba8c838d7a9e83354f6994fef85c972c","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_scans, latched, scans):\n    in_alarm = False\n    acked = True\n    count = 0\n    out = []\n    for cond, ack, reset in scans:\n        count = count + 1 if cond else 0\n        if count >= min_scans and cond and not in_alarm:\n            in_alarm = True\n            acked = False\n        elif in_alarm and not cond and (not latched or ack):\n            in_alarm = False\n        if ack and not acked:\n            acked = True\n        out.append([in_alarm, acked])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False]]],\n   [[True, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False]]],\n  ['regression: scenario 2',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, True],\n    [True, False],\n    [True, False]]],\n  ['control: scenario 3',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [True, True, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['regression: scenario 6',\n   [2,\n    True,\n    [[False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [False, True, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [True, False]]],\n  ['control: scenario 2',\n   [3,\n    False,\n    [[False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: scenario 2',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: scenario 3',\n   [3,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [False, False]]]],\n [['regression: scenario 11',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True]]],\n  ['regression: scenario 34',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, True],\n     [True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]]],\n [['regression: scenario 10',\n   [1,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False]]],\n  ['regression: scenario 11',\n   [2,\n    True,\n    [[True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, True],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, True, False]]],\n   [[False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    False,\n    [[False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True],\n     [False, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [False, False],\n    [False, False],\n    [True, False]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"4bce9f07b3da4fe013b8391bb6ae7a93a733664c203e1a16c995a2b2dbd5a9fb","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_scans, latched, scans):\n    in_alarm = False\n    acked = True\n    count = 0\n    out = []\n    for cond, ack, reset in scans:\n        count = count + 1 if cond else 0\n        if count >= min_scans and cond and not in_alarm:\n            in_alarm = True\n            acked = False\n        elif in_alarm and not cond and (not latched or reset):\n            in_alarm = False\n        if ack and not acked:\n            acked = True\n        out.append([in_alarm, acked])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False]]],\n   [[True, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False]]],\n  ['regression: scenario 2',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, True],\n    [True, False],\n    [True, False]]],\n  ['control: scenario 3',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [True, True, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['regression: scenario 6',\n   [2,\n    True,\n    [[False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [False, True, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['control: scenario 1',\n   [1,\n    False,\n    [[False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [True, True, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [True, False]]],\n  ['control: scenario 2',\n   [3,\n    False,\n    [[False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False]]]],\n [['regression: scenario 2',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: scenario 3',\n   [3,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, True],\n     [False, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [False, False],\n    [False, False],\n    [False, False],\n    [True, False],\n    [False, False],\n    [False, False]]]],\n [['regression: scenario 11',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True]]],\n   [[False, True],\n    [True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True]]],\n  ['regression: scenario 34',\n   [1,\n    True,\n    [[False, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, True, False],\n     [False, False, False]]],\n   [[False, True],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    True,\n    [[False, True, False],\n     [True, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, True],\n     [True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, True, False],\n     [True, False, False]]],\n   [[False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True]]]],\n [['regression: scenario 10',\n   [1,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [False, False, False],\n     [False, False, True],\n     [False, False, False],\n     [False, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [False, False, False]]],\n   [[True, False],\n    [True, False],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, False]]],\n  ['regression: scenario 11',\n   [2,\n    True,\n    [[True, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, True, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [False, True, True],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, True],\n     [True, True, False]]],\n   [[False, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [True, False],\n    [True, False],\n    [True, True]]],\n  ['regression: latched with ack and reset',\n   [2,\n    True,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [False, True, False],\n     [False, False, True],\n     [True, False, False]]],\n   [[False, True], [True, False], [True, False], [True, True], [False, True], [False, True]]],\n  ['control: chattering condition',\n   [3,\n    False,\n    [[True, False, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, False],\n     [True, False, False]]],\n   [[False, True], [False, True], [False, True], [False, True], [False, True], [True, False]]],\n  ['control: realarm after ack',\n   [1, False, [[True, False, False], [True, True, False], [False, False, False], [True, False, False]]],\n   [[True, False], [True, True], [False, True], [True, False]]],\n  ['control: reset while condition true',\n   [1, False, [[True, False, False], [True, False, True], [True, False, False]]],\n   [[True, False], [True, False], [True, False]]],\n  ['regression: ack on latched alarm',\n   [1, True, [[True, False, False], [False, True, False], [False, False, False], [False, False, True]]],\n   [[True, False], [True, True], [True, True], [False, True]]],\n  ['control: scenario 1',\n   [2,\n    False,\n    [[False, False, False],\n     [True, True, False],\n     [True, True, False],\n     [False, False, True],\n     [False, False, True],\n     [True, True, False],\n     [True, False, False],\n     [False, False, False],\n     [True, False, False],\n     [True, False, True]]],\n   [[False, True],\n    [False, True],\n    [True, True],\n    [False, True],\n    [False, True],\n    [False, True],\n    [True, False],\n    [False, False],\n    [False, False],\n    [True, False]]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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-digital-alarm-block-latched-clear-source","generated_at":"2026-09-29T14:51:43.643734+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.","repair":"A latched alarm clears only on reset once the condition is false.","root_cause":"The latched clear condition tests ack instead of reset.","sha256":"16c0eef2a38dcd7fae67d1346f95fa8061eba234cbaf28069c4f923ab3366f37","title":"Acknowledging a latched alarm clears it · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":44.889,"exit_code":1,"observations":[{"actual":[[false,true],[true,false],[true,false],[false,true],[false,true],[false,true]],"check":"regression: latched with ack and reset","expected":[[false,true],[true,false],[true,false],[true,true],[false,true],[false,true]],"passed":false},{"actual":[[true,false],[false,true],[false,true],[false,true]],"check":"regression: ack on latched alarm","expected":[[true,false],[true,true],[true,true],[false,true]],"passed":false},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: chattering condition","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,true],[false,true],[true,false]],"check":"control: realarm after ack","expected":[[true,false],[true,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,false],[true,false]],"check":"control: reset while condition true","expected":[[true,false],[true,false],[true,false]],"passed":true},{"actual":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"check":"control: scenario 1","expected":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,false],[false,false],[false,true],[true,false],[true,false]],"check":"regression: scenario 2","expected":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,false],[false,false],[false,true],[true,false],[true,false]],"passed":true},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: scenario 3","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: latched with ack and reset\", \"actual\": [[false, true], [true, false], [true, false], [false, true], [false, true], [false, true]], \"expected\": [[false, true], [true, false], [true, false], [true, true], [false, true], [false, true]], \"passed\": false}, {\"check\": \"regression: ack on latched alarm\", \"actual\": [[true, false], [false, true], [false, true], [false, true]], \"expected\": [[true, false], [true, true], [true, true], [false, true]], \"passed\": false}, {\"check\": \"control: chattering condition\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: realarm after ack\", \"actual\": [[true, false], [true, true], [false, true], [true, false]], \"expected\": [[true, false], [true, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: reset while condition true\", \"actual\": [[true, false], [true, false], [true, false]], \"expected\": [[true, false], [true, false], [true, false]], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"expected\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, false], [false, false], [false, true], [true, false], [true, false]], \"expected\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, false], [false, false], [false, true], [true, false], [true, false]], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.338,"exit_code":1,"observations":[{"actual":[[false,true],[true,false],[true,false],[false,true],[false,true],[false,true]],"check":"regression: latched with ack and reset","expected":[[false,true],[true,false],[true,false],[true,true],[false,true],[false,true]],"passed":false},{"actual":[[true,false],[false,true],[false,true],[false,true]],"check":"regression: ack on latched alarm","expected":[[true,false],[true,true],[true,true],[false,true]],"passed":false},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: chattering condition","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,true],[false,true],[true,false]],"check":"control: realarm after ack","expected":[[true,false],[true,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,false],[true,false]],"check":"control: reset while condition true","expected":[[true,false],[true,false],[true,false]],"passed":true},{"actual":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"check":"control: scenario 1","expected":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,true],[true,false],[true,false]],"check":"regression: scenario 2","expected":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,false],[false,false],[false,true],[true,false],[true,false]],"passed":false},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: scenario 3","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: latched with ack and reset\", \"actual\": [[false, true], [true, false], [true, false], [false, true], [false, true], [false, true]], \"expected\": [[false, true], [true, false], [true, false], [true, true], [false, true], [false, true]], \"passed\": false}, {\"check\": \"regression: ack on latched alarm\", \"actual\": [[true, false], [false, true], [false, true], [false, true]], \"expected\": [[true, false], [true, true], [true, true], [false, true]], \"passed\": false}, {\"check\": \"control: chattering condition\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: realarm after ack\", \"actual\": [[true, false], [true, true], [false, true], [true, false]], \"expected\": [[true, false], [true, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: reset while condition true\", \"actual\": [[true, false], [true, false], [true, false]], \"expected\": [[true, false], [true, false], [true, false]], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"expected\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, true], [true, false], [true, false]], \"expected\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, false], [false, false], [false, true], [true, false], [true, false]], \"passed\": false}, {\"check\": \"control: scenario 3\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":44.206,"exit_code":0,"observations":[{"actual":[[false,true],[true,false],[true,false],[true,true],[false,true],[false,true]],"check":"regression: latched with ack and reset","expected":[[false,true],[true,false],[true,false],[true,true],[false,true],[false,true]],"passed":true},{"actual":[[true,false],[true,true],[true,true],[false,true]],"check":"regression: ack on latched alarm","expected":[[true,false],[true,true],[true,true],[false,true]],"passed":true},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: chattering condition","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,true],[false,true],[true,false]],"check":"control: realarm after ack","expected":[[true,false],[true,true],[false,true],[true,false]],"passed":true},{"actual":[[true,false],[true,false],[true,false]],"check":"control: reset while condition true","expected":[[true,false],[true,false],[true,false]],"passed":true},{"actual":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"check":"control: scenario 1","expected":[[true,false],[false,false],[true,false],[false,false],[true,true],[true,true],[true,true],[false,true],[false,true],[true,false]],"passed":true},{"actual":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,false],[false,false],[false,true],[true,false],[true,false]],"check":"regression: scenario 2","expected":[[false,true],[true,false],[true,false],[true,false],[true,false],[true,false],[true,false],[false,false],[false,false],[false,true],[true,false],[true,false]],"passed":true},{"actual":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"check":"control: scenario 3","expected":[[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[false,true],[true,false]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: latched with ack and reset\", \"actual\": [[false, true], [true, false], [true, false], [true, true], [false, true], [false, true]], \"expected\": [[false, true], [true, false], [true, false], [true, true], [false, true], [false, true]], \"passed\": true}, {\"check\": \"regression: ack on latched alarm\", \"actual\": [[true, false], [true, true], [true, true], [false, true]], \"expected\": [[true, false], [true, true], [true, true], [false, true]], \"passed\": true}, {\"check\": \"control: chattering condition\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: realarm after ack\", \"actual\": [[true, false], [true, true], [false, true], [true, false]], \"expected\": [[true, false], [true, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"control: reset while condition true\", \"actual\": [[true, false], [true, false], [true, false]], \"expected\": [[true, false], [true, false], [true, false]], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"expected\": [[true, false], [false, false], [true, false], [false, false], [true, true], [true, true], [true, true], [false, true], [false, true], [true, false]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, false], [false, false], [false, true], [true, false], [true, false]], \"expected\": [[false, true], [true, false], [true, false], [true, false], [true, false], [true, false], [true, false], [false, false], [false, false], [false, true], [true, false], [true, false]], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"expected\": [[false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [false, true], [true, false]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}