{"abstract":"Unclamped overflow stores a positive value above 32767 instead of the negative two's-complement result.","category":"PLC ladder logic scan cycles","checks":8,"contract":"16-bit INT math rung followed by a later fault-clearing rung, one op per scan; ops is a list of [a, b, ADD|SUB|MUL, clear]. A result outside -32768..32767 sets the overflow bit V for that instruction and the overflow trap; the stored result is saturated to 32767/-32768 when clamp is set or wrapped as 16-bit two's complement otherwise. V is recomputed per instruction. The later rung clears the trap when clear is true; a trap still set at end of scan halts the processor. Return [result, V, trap] per scan, then \"halted\" and stop if faulted.","evaluation_group":"w2-plc-ladder-logic-scan-cycles-int-math-overflow-trap","failed_approach":"Wrapping the magnitude and restoring the sign still stores out-of-range values.","family":"w2-plc-ladder-logic-scan-cycles-int-math-overflow-trap-wrap-formula","id":"FA-92316","implementations":{"attempt":{"sha256":"9b524fc7ecbcc3bc2ad02481d7b1e5413fd715ed0c6ca4c63a6e26bc80b71cec","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clamp, ops):\n    trap = False\n    out = []\n    for a, b, op, clear in ops:\n        if op == 'ADD':\n            r = a + b\n        elif op == 'SUB':\n            r = a - b\n        else:\n            r = a * b\n        v = not (-32768 <= r <= 32767)\n        if v:\n            trap = True\n            if clamp:\n                r = 32767 if r > 0 else -32768\n            else:\n                r = -((-r) % 65536) if r < 0 else r % 65536\n        if clear:\n            trap = False\n        out.append([r, v, trap])\n        if trap:\n            out.append('halted')\n            break\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-32768, -20192, 'SUB', True],\n     [12968, -30310, 'ADD', False],\n     [-31305, 2, 'SUB', False],\n     [11091, 200, 'MUL', True],\n     [10310, 200, 'SUB', False]]],\n   [[-12576, False, False],\n    [-17342, False, False],\n    [-31307, False, False],\n    [-10024, True, False],\n    [10110, False, False]]],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[27834, -6307, 'SUB', False],\n     [30000, -15473, 'SUB', False],\n     [-1, 1, 'MUL', False],\n     [-30000, -4507, 'SUB', True],\n     [-21177, 21481, 'MUL', False],\n     [31159, 1, 'SUB', False]]],\n   [[32767, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[18788, 200, 'SUB', True],\n     [20369, -23104, 'MUL', False],\n     [-32768, 10449, 'ADD', False],\n     [-17550, 18799, 'ADD', False],\n     [1, 32767, 'MUL', False]]],\n   [[18588, False, False], [8640, True, True], 'halted']],\n  ['regression: scenario 4',\n   [False,\n    [[30000, 1, 'ADD', True],\n     [-20338, 30000, 'ADD', True],\n     [18879, 1, 'SUB', True],\n     [27305, -32768, 'MUL', True],\n     [16107, -9800, 'MUL', False],\n     [3999, -32768, 'SUB', False],\n     [1, -21623, 'ADD', False]]],\n   [[30001, False, False],\n    [9662, False, False],\n    [18878, False, False],\n    [-32768, True, False],\n    [27624, True, True],\n    'halted']]],\n [['regression: scenario 4',\n   [False,\n    [[200, -21485, 'MUL', True],\n     [-200, -32768, 'SUB', True],\n     [15677, 32607, 'ADD', True],\n     [-10557, 26430, 'SUB', False],\n     [-200, 30000, 'SUB', True],\n     [-30000, 200, 'ADD', True],\n     [26687, -20358, 'ADD', False]]],\n   [[28376, True, False], [32568, False, False], [-17252, True, False], [28549, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-15041, -14459, 'SUB', False],\n     [13071, -30000, 'ADD', True],\n     [-17526, -1, 'MUL', True],\n     [-30000, 200, 'MUL', False]]],\n   [[-582, False, False], [-16929, False, False], [17526, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[-1048, 30000, 'ADD', False],\n     [2, -13120, 'SUB', False],\n     [29306, -32768, 'SUB', True],\n     [-9919, -24931, 'MUL', True]]],\n   [[28952, False, False], [13122, False, False], [32767, True, False], [32767, True, False]]],\n  ['control: scenario 3',\n   [False,\n    [[-10436, -32034, 'MUL', True],\n     [2, 22108, 'SUB', False],\n     [7659, 2, 'MUL', False],\n     [5339, 1, 'MUL', False]]],\n   [[7688, True, False], [-22106, False, False], [15318, False, False], [5339, False, False]]]],\n [['regression: scenario 2',\n   [False,\n    [[-200, -200, 'ADD', True],\n     [32767, 200, 'MUL', False],\n     [-9390, 1, 'MUL', False],\n     [-11169, -28064, 'ADD', True],\n     [22720, -1, 'ADD', False],\n     [-200, -1, 'ADD', False],\n     [-12859, 1, 'ADD', True]]],\n   [[-400, False, False], [-200, True, True], 'halted']],\n  ['regression: scenario 10',\n   [False,\n    [[32767, -28982, 'ADD', False],\n     [-30000, 200, 'MUL', False],\n     [-1, 2660, 'SUB', True],\n     [-200, -13460, 'MUL', False],\n     [1, -9677, 'MUL', True],\n     [-1, 14598, 'SUB', True],\n     [-32768, 1, 'ADD', False]]],\n   [[3785, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[15094, -24454, 'MUL', False],\n     [-30000, 24363, 'MUL', True],\n     [2, -14871, 'MUL', False],\n     [1, -26550, 'MUL', True],\n     [-1, -7090, 'SUB', False],\n     [32767, 1, 'MUL', True],\n     [-32768, 15967, 'ADD', False],\n     [21457, -28729, 'SUB', True]]],\n   [[-9924, True, True], 'halted']],\n  ['control: scenario 3',\n   [True,\n    [[200, 30000, 'ADD', True],\n     [11009, -200, 'SUB', True],\n     [-200, 1, 'MUL', False],\n     [-20841, 21280, 'ADD', True]]],\n   [[30200, False, False], [11209, False, False], [-200, False, False], [439, False, False]]]],\n [['regression: scenario 8',\n   [False,\n    [[200, -32768, 'MUL', True],\n     [30000, 32767, 'MUL', False],\n     [12166, 30000, 'MUL', True],\n     [-1, -23798, 'ADD', False],\n     [-1, 32767, 'SUB', True]]],\n   [[0, True, False], [-30000, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[-32768, 19187, 'MUL', True],\n     [-7301, -200, 'SUB', False],\n     [-32768, 30000, 'SUB', True],\n     [-9747, -24186, 'ADD', True],\n     [-1, -22920, 'SUB', True],\n     [-259, 22293, 'SUB', False],\n     [23494, -1, 'MUL', False],\n     [-32529, 24353, 'SUB', True]]],\n   [[-32768, True, False],\n    [-7101, False, False],\n    [2768, True, False],\n    [31603, True, False],\n    [22919, False, False],\n    [-22552, False, False],\n    [-23494, False, False],\n    [8654, True, False]]],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[-26759, 2, 'SUB', True],\n     [-30000, -32768, 'SUB', False],\n     [-3730, -31438, 'ADD', False],\n     [200, 200, 'SUB', True],\n     [-24761, 200, 'SUB', True],\n     [-20747, 200, 'SUB', False],\n     [200, 19789, 'SUB', True]]],\n   [[-26761, False, False], [2768, False, False], [30368, True, True], 'halted']],\n  ['regression: scenario 2',\n   [False,\n    [[30000, -32768, 'ADD', True],\n     [4451, 31437, 'SUB', False],\n     [-1, 22093, 'MUL', False],\n     [-30000, -18488, 'SUB', False],\n     [30000, -28921, 'MUL', True],\n     [-200, 23349, 'ADD', True],\n     [-32768, 200, 'SUB', False]]],\n   [[-2768, False, False],\n    [-26986, False, False],\n    [-22093, False, False],\n    [-11512, False, False],\n    [1104, True, False],\n    [23149, False, False],\n    [32568, True, True],\n    'halted']]],\n [['regression: scenario 19',\n   [False,\n    [[5524, -20977, 'SUB', True],\n     [30000, 30000, 'ADD', False],\n     [8864, -30000, 'MUL', False],\n     [-32768, -11188, 'MUL', False],\n     [200, 32767, 'MUL', True]]],\n   [[26501, False, False], [-5536, True, True], 'halted']],\n  ['regression: scenario 11',\n   [False,\n    [[200, -200, 'SUB', False],\n     [-200, -200, 'SUB', False],\n     [-200, 30000, 'MUL', True],\n     [-14430, -32768, 'ADD', False]]],\n   [[400, False, False], [0, False, False], [29312, True, False], [18338, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 1',\n   [True,\n    [[160, 2, 'SUB', True], [200, 200, 'SUB', True], [222, 200, 'SUB', False], [200, -32768, 'ADD', True]]],\n   [[158, False, False], [0, False, False], [22, False, False], [-32568, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[30000, 1574, 'SUB', True],\n     [-783, -29319, 'SUB', True],\n     [2, 1803, 'SUB', False],\n     [200, 2, 'ADD', True],\n     [9942, 32767, 'MUL', True],\n     [-30000, -19084, 'MUL', True],\n     [-10106, -30460, 'ADD', False],\n     [2, 32767, 'ADD', True]]],\n   [[28426, False, False],\n    [28536, False, False],\n    [-1801, False, False],\n    [202, False, False],\n    [32767, True, False],\n    [32767, True, False],\n    [-32768, True, True],\n    'halted']]]]\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":"d5e1857f967c930b2b48e12794148d3f5fb304343b68dfd4600f8fd978fa34c0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clamp, ops):\n    trap = False\n    out = []\n    for a, b, op, clear in ops:\n        if op == 'ADD':\n            r = a + b\n        elif op == 'SUB':\n            r = a - b\n        else:\n            r = a * b\n        v = not (-32768 <= r <= 32767)\n        if v:\n            trap = True\n            if clamp:\n                r = 32767 if r > 0 else -32768\n            else:\n                r = r % 65536\n        if clear:\n            trap = False\n        out.append([r, v, trap])\n        if trap:\n            out.append('halted')\n            break\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-32768, -20192, 'SUB', True],\n     [12968, -30310, 'ADD', False],\n     [-31305, 2, 'SUB', False],\n     [11091, 200, 'MUL', True],\n     [10310, 200, 'SUB', False]]],\n   [[-12576, False, False],\n    [-17342, False, False],\n    [-31307, False, False],\n    [-10024, True, False],\n    [10110, False, False]]],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[27834, -6307, 'SUB', False],\n     [30000, -15473, 'SUB', False],\n     [-1, 1, 'MUL', False],\n     [-30000, -4507, 'SUB', True],\n     [-21177, 21481, 'MUL', False],\n     [31159, 1, 'SUB', False]]],\n   [[32767, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[18788, 200, 'SUB', True],\n     [20369, -23104, 'MUL', False],\n     [-32768, 10449, 'ADD', False],\n     [-17550, 18799, 'ADD', False],\n     [1, 32767, 'MUL', False]]],\n   [[18588, False, False], [8640, True, True], 'halted']],\n  ['regression: scenario 4',\n   [False,\n    [[30000, 1, 'ADD', True],\n     [-20338, 30000, 'ADD', True],\n     [18879, 1, 'SUB', True],\n     [27305, -32768, 'MUL', True],\n     [16107, -9800, 'MUL', False],\n     [3999, -32768, 'SUB', False],\n     [1, -21623, 'ADD', False]]],\n   [[30001, False, False],\n    [9662, False, False],\n    [18878, False, False],\n    [-32768, True, False],\n    [27624, True, True],\n    'halted']]],\n [['regression: scenario 4',\n   [False,\n    [[200, -21485, 'MUL', True],\n     [-200, -32768, 'SUB', True],\n     [15677, 32607, 'ADD', True],\n     [-10557, 26430, 'SUB', False],\n     [-200, 30000, 'SUB', True],\n     [-30000, 200, 'ADD', True],\n     [26687, -20358, 'ADD', False]]],\n   [[28376, True, False], [32568, False, False], [-17252, True, False], [28549, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-15041, -14459, 'SUB', False],\n     [13071, -30000, 'ADD', True],\n     [-17526, -1, 'MUL', True],\n     [-30000, 200, 'MUL', False]]],\n   [[-582, False, False], [-16929, False, False], [17526, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[-1048, 30000, 'ADD', False],\n     [2, -13120, 'SUB', False],\n     [29306, -32768, 'SUB', True],\n     [-9919, -24931, 'MUL', True]]],\n   [[28952, False, False], [13122, False, False], [32767, True, False], [32767, True, False]]],\n  ['control: scenario 3',\n   [False,\n    [[-10436, -32034, 'MUL', True],\n     [2, 22108, 'SUB', False],\n     [7659, 2, 'MUL', False],\n     [5339, 1, 'MUL', False]]],\n   [[7688, True, False], [-22106, False, False], [15318, False, False], [5339, False, False]]]],\n [['regression: scenario 2',\n   [False,\n    [[-200, -200, 'ADD', True],\n     [32767, 200, 'MUL', False],\n     [-9390, 1, 'MUL', False],\n     [-11169, -28064, 'ADD', True],\n     [22720, -1, 'ADD', False],\n     [-200, -1, 'ADD', False],\n     [-12859, 1, 'ADD', True]]],\n   [[-400, False, False], [-200, True, True], 'halted']],\n  ['regression: scenario 10',\n   [False,\n    [[32767, -28982, 'ADD', False],\n     [-30000, 200, 'MUL', False],\n     [-1, 2660, 'SUB', True],\n     [-200, -13460, 'MUL', False],\n     [1, -9677, 'MUL', True],\n     [-1, 14598, 'SUB', True],\n     [-32768, 1, 'ADD', False]]],\n   [[3785, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[15094, -24454, 'MUL', False],\n     [-30000, 24363, 'MUL', True],\n     [2, -14871, 'MUL', False],\n     [1, -26550, 'MUL', True],\n     [-1, -7090, 'SUB', False],\n     [32767, 1, 'MUL', True],\n     [-32768, 15967, 'ADD', False],\n     [21457, -28729, 'SUB', True]]],\n   [[-9924, True, True], 'halted']],\n  ['control: scenario 3',\n   [True,\n    [[200, 30000, 'ADD', True],\n     [11009, -200, 'SUB', True],\n     [-200, 1, 'MUL', False],\n     [-20841, 21280, 'ADD', True]]],\n   [[30200, False, False], [11209, False, False], [-200, False, False], [439, False, False]]]],\n [['regression: scenario 8',\n   [False,\n    [[200, -32768, 'MUL', True],\n     [30000, 32767, 'MUL', False],\n     [12166, 30000, 'MUL', True],\n     [-1, -23798, 'ADD', False],\n     [-1, 32767, 'SUB', True]]],\n   [[0, True, False], [-30000, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[-32768, 19187, 'MUL', True],\n     [-7301, -200, 'SUB', False],\n     [-32768, 30000, 'SUB', True],\n     [-9747, -24186, 'ADD', True],\n     [-1, -22920, 'SUB', True],\n     [-259, 22293, 'SUB', False],\n     [23494, -1, 'MUL', False],\n     [-32529, 24353, 'SUB', True]]],\n   [[-32768, True, False],\n    [-7101, False, False],\n    [2768, True, False],\n    [31603, True, False],\n    [22919, False, False],\n    [-22552, False, False],\n    [-23494, False, False],\n    [8654, True, False]]],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[-26759, 2, 'SUB', True],\n     [-30000, -32768, 'SUB', False],\n     [-3730, -31438, 'ADD', False],\n     [200, 200, 'SUB', True],\n     [-24761, 200, 'SUB', True],\n     [-20747, 200, 'SUB', False],\n     [200, 19789, 'SUB', True]]],\n   [[-26761, False, False], [2768, False, False], [30368, True, True], 'halted']],\n  ['regression: scenario 2',\n   [False,\n    [[30000, -32768, 'ADD', True],\n     [4451, 31437, 'SUB', False],\n     [-1, 22093, 'MUL', False],\n     [-30000, -18488, 'SUB', False],\n     [30000, -28921, 'MUL', True],\n     [-200, 23349, 'ADD', True],\n     [-32768, 200, 'SUB', False]]],\n   [[-2768, False, False],\n    [-26986, False, False],\n    [-22093, False, False],\n    [-11512, False, False],\n    [1104, True, False],\n    [23149, False, False],\n    [32568, True, True],\n    'halted']]],\n [['regression: scenario 19',\n   [False,\n    [[5524, -20977, 'SUB', True],\n     [30000, 30000, 'ADD', False],\n     [8864, -30000, 'MUL', False],\n     [-32768, -11188, 'MUL', False],\n     [200, 32767, 'MUL', True]]],\n   [[26501, False, False], [-5536, True, True], 'halted']],\n  ['regression: scenario 11',\n   [False,\n    [[200, -200, 'SUB', False],\n     [-200, -200, 'SUB', False],\n     [-200, 30000, 'MUL', True],\n     [-14430, -32768, 'ADD', False]]],\n   [[400, False, False], [0, False, False], [29312, True, False], [18338, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 1',\n   [True,\n    [[160, 2, 'SUB', True], [200, 200, 'SUB', True], [222, 200, 'SUB', False], [200, -32768, 'ADD', True]]],\n   [[158, False, False], [0, False, False], [22, False, False], [-32568, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[30000, 1574, 'SUB', True],\n     [-783, -29319, 'SUB', True],\n     [2, 1803, 'SUB', False],\n     [200, 2, 'ADD', True],\n     [9942, 32767, 'MUL', True],\n     [-30000, -19084, 'MUL', True],\n     [-10106, -30460, 'ADD', False],\n     [2, 32767, 'ADD', True]]],\n   [[28426, False, False],\n    [28536, False, False],\n    [-1801, False, False],\n    [202, False, False],\n    [32767, True, False],\n    [32767, True, False],\n    [-32768, True, True],\n    'halted']]]]\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":"2177112a1a5063edbad2c52a3896226f3cec114b9d7766230510d95374a3b545","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(clamp, ops):\n    trap = False\n    out = []\n    for a, b, op, clear in ops:\n        if op == 'ADD':\n            r = a + b\n        elif op == 'SUB':\n            r = a - b\n        else:\n            r = a * b\n        v = not (-32768 <= r <= 32767)\n        if v:\n            trap = True\n            if clamp:\n                r = 32767 if r > 0 else -32768\n            else:\n                r = (r + 32768) % 65536 - 32768\n        if clear:\n            trap = False\n        out.append([r, v, trap])\n        if trap:\n            out.append('halted')\n            break\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-32768, -20192, 'SUB', True],\n     [12968, -30310, 'ADD', False],\n     [-31305, 2, 'SUB', False],\n     [11091, 200, 'MUL', True],\n     [10310, 200, 'SUB', False]]],\n   [[-12576, False, False],\n    [-17342, False, False],\n    [-31307, False, False],\n    [-10024, True, False],\n    [10110, False, False]]],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[27834, -6307, 'SUB', False],\n     [30000, -15473, 'SUB', False],\n     [-1, 1, 'MUL', False],\n     [-30000, -4507, 'SUB', True],\n     [-21177, 21481, 'MUL', False],\n     [31159, 1, 'SUB', False]]],\n   [[32767, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[18788, 200, 'SUB', True],\n     [20369, -23104, 'MUL', False],\n     [-32768, 10449, 'ADD', False],\n     [-17550, 18799, 'ADD', False],\n     [1, 32767, 'MUL', False]]],\n   [[18588, False, False], [8640, True, True], 'halted']],\n  ['regression: scenario 4',\n   [False,\n    [[30000, 1, 'ADD', True],\n     [-20338, 30000, 'ADD', True],\n     [18879, 1, 'SUB', True],\n     [27305, -32768, 'MUL', True],\n     [16107, -9800, 'MUL', False],\n     [3999, -32768, 'SUB', False],\n     [1, -21623, 'ADD', False]]],\n   [[30001, False, False],\n    [9662, False, False],\n    [18878, False, False],\n    [-32768, True, False],\n    [27624, True, True],\n    'halted']]],\n [['regression: scenario 4',\n   [False,\n    [[200, -21485, 'MUL', True],\n     [-200, -32768, 'SUB', True],\n     [15677, 32607, 'ADD', True],\n     [-10557, 26430, 'SUB', False],\n     [-200, 30000, 'SUB', True],\n     [-30000, 200, 'ADD', True],\n     [26687, -20358, 'ADD', False]]],\n   [[28376, True, False], [32568, False, False], [-17252, True, False], [28549, True, True], 'halted']],\n  ['regression: scenario 1',\n   [False,\n    [[-15041, -14459, 'SUB', False],\n     [13071, -30000, 'ADD', True],\n     [-17526, -1, 'MUL', True],\n     [-30000, 200, 'MUL', False]]],\n   [[-582, False, False], [-16929, False, False], [17526, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[-1048, 30000, 'ADD', False],\n     [2, -13120, 'SUB', False],\n     [29306, -32768, 'SUB', True],\n     [-9919, -24931, 'MUL', True]]],\n   [[28952, False, False], [13122, False, False], [32767, True, False], [32767, True, False]]],\n  ['control: scenario 3',\n   [False,\n    [[-10436, -32034, 'MUL', True],\n     [2, 22108, 'SUB', False],\n     [7659, 2, 'MUL', False],\n     [5339, 1, 'MUL', False]]],\n   [[7688, True, False], [-22106, False, False], [15318, False, False], [5339, False, False]]]],\n [['regression: scenario 2',\n   [False,\n    [[-200, -200, 'ADD', True],\n     [32767, 200, 'MUL', False],\n     [-9390, 1, 'MUL', False],\n     [-11169, -28064, 'ADD', True],\n     [22720, -1, 'ADD', False],\n     [-200, -1, 'ADD', False],\n     [-12859, 1, 'ADD', True]]],\n   [[-400, False, False], [-200, True, True], 'halted']],\n  ['regression: scenario 10',\n   [False,\n    [[32767, -28982, 'ADD', False],\n     [-30000, 200, 'MUL', False],\n     [-1, 2660, 'SUB', True],\n     [-200, -13460, 'MUL', False],\n     [1, -9677, 'MUL', True],\n     [-1, 14598, 'SUB', True],\n     [-32768, 1, 'ADD', False]]],\n   [[3785, False, False], [29312, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[15094, -24454, 'MUL', False],\n     [-30000, 24363, 'MUL', True],\n     [2, -14871, 'MUL', False],\n     [1, -26550, 'MUL', True],\n     [-1, -7090, 'SUB', False],\n     [32767, 1, 'MUL', True],\n     [-32768, 15967, 'ADD', False],\n     [21457, -28729, 'SUB', True]]],\n   [[-9924, True, True], 'halted']],\n  ['control: scenario 3',\n   [True,\n    [[200, 30000, 'ADD', True],\n     [11009, -200, 'SUB', True],\n     [-200, 1, 'MUL', False],\n     [-20841, 21280, 'ADD', True]]],\n   [[30200, False, False], [11209, False, False], [-200, False, False], [439, False, False]]]],\n [['regression: scenario 8',\n   [False,\n    [[200, -32768, 'MUL', True],\n     [30000, 32767, 'MUL', False],\n     [12166, 30000, 'MUL', True],\n     [-1, -23798, 'ADD', False],\n     [-1, 32767, 'SUB', True]]],\n   [[0, True, False], [-30000, True, True], 'halted']],\n  ['regression: scenario 3',\n   [False,\n    [[-32768, 19187, 'MUL', True],\n     [-7301, -200, 'SUB', False],\n     [-32768, 30000, 'SUB', True],\n     [-9747, -24186, 'ADD', True],\n     [-1, -22920, 'SUB', True],\n     [-259, 22293, 'SUB', False],\n     [23494, -1, 'MUL', False],\n     [-32529, 24353, 'SUB', True]]],\n   [[-32768, True, False],\n    [-7101, False, False],\n    [2768, True, False],\n    [31603, True, False],\n    [22919, False, False],\n    [-22552, False, False],\n    [-23494, False, False],\n    [8654, True, False]]],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['regression: scenario 1',\n   [False,\n    [[-26759, 2, 'SUB', True],\n     [-30000, -32768, 'SUB', False],\n     [-3730, -31438, 'ADD', False],\n     [200, 200, 'SUB', True],\n     [-24761, 200, 'SUB', True],\n     [-20747, 200, 'SUB', False],\n     [200, 19789, 'SUB', True]]],\n   [[-26761, False, False], [2768, False, False], [30368, True, True], 'halted']],\n  ['regression: scenario 2',\n   [False,\n    [[30000, -32768, 'ADD', True],\n     [4451, 31437, 'SUB', False],\n     [-1, 22093, 'MUL', False],\n     [-30000, -18488, 'SUB', False],\n     [30000, -28921, 'MUL', True],\n     [-200, 23349, 'ADD', True],\n     [-32768, 200, 'SUB', False]]],\n   [[-2768, False, False],\n    [-26986, False, False],\n    [-22093, False, False],\n    [-11512, False, False],\n    [1104, True, False],\n    [23149, False, False],\n    [32568, True, True],\n    'halted']]],\n [['regression: scenario 19',\n   [False,\n    [[5524, -20977, 'SUB', True],\n     [30000, 30000, 'ADD', False],\n     [8864, -30000, 'MUL', False],\n     [-32768, -11188, 'MUL', False],\n     [200, 32767, 'MUL', True]]],\n   [[26501, False, False], [-5536, True, True], 'halted']],\n  ['regression: scenario 11',\n   [False,\n    [[200, -200, 'SUB', False],\n     [-200, -200, 'SUB', False],\n     [-200, 30000, 'MUL', True],\n     [-14430, -32768, 'ADD', False]]],\n   [[400, False, False], [0, False, False], [29312, True, False], [18338, True, True], 'halted']],\n  ['regression: wrap with cleared traps',\n   [False,\n    [[30000, 5000, 'ADD', True],\n     [-30000, 5000, 'SUB', True],\n     [200, 200, 'MUL', False],\n     [1, 1, 'ADD', False]]],\n   [[-30536, True, False], [30536, True, False], [-25536, True, True], 'halted']],\n  ['control: saturation both signs',\n   [True,\n    [[-2, -20000, 'MUL', True],\n     [-20000, 20000, 'SUB', True],\n     [32767, 0, 'ADD', False],\n     [1, 1, 'ADD', False]]],\n   [[32767, True, False], [-32768, True, False], [32767, False, False], [2, False, False]]],\n  ['control: exact limits',\n   [False, [[-32767, 1, 'SUB', False], [32766, 1, 'ADD', False], [3, 4, 'MUL', False]]],\n   [[-32768, False, False], [32767, False, False], [12, False, False]]],\n  ['control: overflow then clean ops',\n   [True, [[32767, 1, 'ADD', True], [5, 5, 'ADD', False], [7, 7, 'SUB', False]]],\n   [[32767, True, False], [10, False, False], [0, False, False]]],\n  ['control: scenario 1',\n   [True,\n    [[160, 2, 'SUB', True], [200, 200, 'SUB', True], [222, 200, 'SUB', False], [200, -32768, 'ADD', True]]],\n   [[158, False, False], [0, False, False], [22, False, False], [-32568, False, False]]],\n  ['control: scenario 2',\n   [True,\n    [[30000, 1574, 'SUB', True],\n     [-783, -29319, 'SUB', True],\n     [2, 1803, 'SUB', False],\n     [200, 2, 'ADD', True],\n     [9942, 32767, 'MUL', True],\n     [-30000, -19084, 'MUL', True],\n     [-10106, -30460, 'ADD', False],\n     [2, 32767, 'ADD', True]]],\n   [[28426, False, False],\n    [28536, False, False],\n    [-1801, False, False],\n    [202, False, False],\n    [32767, True, False],\n    [32767, True, False],\n    [-32768, True, True],\n    'halted']]]]\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-int-math-overflow-trap-wrap-formula","generated_at":"2026-09-29T14:51:44.506783+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":"Wrap with (r + 32768) % 65536 - 32768.","root_cause":"The wrap uses r % 65536, which is unsigned.","sha256":"5513aabdbaa6aa706ca2240f7159fbf81da6e2303124f13322594041facbdb9c","title":"INT overflow wraps as an unsigned 16-bit value · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.468,"exit_code":1,"observations":[{"actual":[[35000,true,false],[-35000,true,false],[40000,true,true],"halted"],"check":"regression: wrap with cleared traps","expected":[[-30536,true,false],[30536,true,false],[-25536,true,true],"halted"],"passed":false},{"actual":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[55512,true,false],[10110,false,false]],"check":"regression: scenario 1","expected":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[-10024,true,false],[10110,false,false]],"passed":false},{"actual":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"check":"control: saturation both signs","expected":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"passed":true},{"actual":[[-32768,false,false],[32767,false,false],[12,false,false]],"check":"control: exact limits","expected":[[-32768,false,false],[32767,false,false],[12,false,false]],"passed":true},{"actual":[[32767,true,false],[10,false,false],[0,false,false]],"check":"control: overflow then clean ops","expected":[[32767,true,false],[10,false,false],[0,false,false]],"passed":true},{"actual":[[32767,true,true],"halted"],"check":"control: scenario 2","expected":[[32767,true,true],"halted"],"passed":true},{"actual":[[18588,false,false],[-56896,true,true],"halted"],"check":"regression: scenario 3","expected":[[18588,false,false],[8640,true,true],"halted"],"passed":false},{"actual":[[30001,false,false],[9662,false,false],[18878,false,false],[-32768,true,false],[-37912,true,true],"halted"],"check":"regression: scenario 4","expected":[[30001,false,false],[9662,false,false],[18878,false,false],[-32768,true,false],[27624,true,true],"halted"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wrap with cleared traps\", \"actual\": [[35000, true, false], [-35000, true, false], [40000, true, true], \"halted\"], \"expected\": [[-30536, true, false], [30536, true, false], [-25536, true, true], \"halted\"], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [55512, true, false], [10110, false, false]], \"expected\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [-10024, true, false], [10110, false, false]], \"passed\": false}, {\"check\": \"control: saturation both signs\", \"actual\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"expected\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"passed\": true}, {\"check\": \"control: exact limits\", \"actual\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"expected\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"passed\": true}, {\"check\": \"control: overflow then clean ops\", \"actual\": [[32767, true, false], [10, false, false], [0, false, false]], \"expected\": [[32767, true, false], [10, false, false], [0, false, false]], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [[32767, true, true], \"halted\"], \"expected\": [[32767, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 3\", \"actual\": [[18588, false, false], [-56896, true, true], \"halted\"], \"expected\": [[18588, false, false], [8640, true, true], \"halted\"], \"passed\": false}, {\"check\": \"regression: scenario 4\", \"actual\": [[30001, false, false], [9662, false, false], [18878, false, false], [-32768, true, false], [-37912, true, true], \"halted\"], \"expected\": [[30001, false, false], [9662, false, false], [18878, false, false], [-32768, true, false], [27624, true, true], \"halted\"], \"passed\": false}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.433,"exit_code":1,"observations":[{"actual":[[35000,true,false],[30536,true,false],[40000,true,true],"halted"],"check":"regression: wrap with cleared traps","expected":[[-30536,true,false],[30536,true,false],[-25536,true,true],"halted"],"passed":false},{"actual":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[55512,true,false],[10110,false,false]],"check":"regression: scenario 1","expected":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[-10024,true,false],[10110,false,false]],"passed":false},{"actual":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"check":"control: saturation both signs","expected":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"passed":true},{"actual":[[-32768,false,false],[32767,false,false],[12,false,false]],"check":"control: exact limits","expected":[[-32768,false,false],[32767,false,false],[12,false,false]],"passed":true},{"actual":[[32767,true,false],[10,false,false],[0,false,false]],"check":"control: overflow then clean ops","expected":[[32767,true,false],[10,false,false],[0,false,false]],"passed":true},{"actual":[[32767,true,true],"halted"],"check":"control: scenario 2","expected":[[32767,true,true],"halted"],"passed":true},{"actual":[[18588,false,false],[8640,true,true],"halted"],"check":"regression: scenario 3","expected":[[18588,false,false],[8640,true,true],"halted"],"passed":true},{"actual":[[30001,false,false],[9662,false,false],[18878,false,false],[32768,true,false],[27624,true,true],"halted"],"check":"regression: scenario 4","expected":[[30001,false,false],[9662,false,false],[18878,false,false],[-32768,true,false],[27624,true,true],"halted"],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wrap with cleared traps\", \"actual\": [[35000, true, false], [30536, true, false], [40000, true, true], \"halted\"], \"expected\": [[-30536, true, false], [30536, true, false], [-25536, true, true], \"halted\"], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [55512, true, false], [10110, false, false]], \"expected\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [-10024, true, false], [10110, false, false]], \"passed\": false}, {\"check\": \"control: saturation both signs\", \"actual\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"expected\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"passed\": true}, {\"check\": \"control: exact limits\", \"actual\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"expected\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"passed\": true}, {\"check\": \"control: overflow then clean ops\", \"actual\": [[32767, true, false], [10, false, false], [0, false, false]], \"expected\": [[32767, true, false], [10, false, false], [0, false, false]], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [[32767, true, true], \"halted\"], \"expected\": [[32767, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 3\", \"actual\": [[18588, false, false], [8640, true, true], \"halted\"], \"expected\": [[18588, false, false], [8640, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 4\", \"actual\": [[30001, false, false], [9662, false, false], [18878, false, false], [32768, true, false], [27624, true, true], \"halted\"], \"expected\": [[30001, false, false], [9662, false, false], [18878, false, false], [-32768, true, false], [27624, true, true], \"halted\"], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.628,"exit_code":0,"observations":[{"actual":[[-30536,true,false],[30536,true,false],[-25536,true,true],"halted"],"check":"regression: wrap with cleared traps","expected":[[-30536,true,false],[30536,true,false],[-25536,true,true],"halted"],"passed":true},{"actual":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[-10024,true,false],[10110,false,false]],"check":"regression: scenario 1","expected":[[-12576,false,false],[-17342,false,false],[-31307,false,false],[-10024,true,false],[10110,false,false]],"passed":true},{"actual":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"check":"control: saturation both signs","expected":[[32767,true,false],[-32768,true,false],[32767,false,false],[2,false,false]],"passed":true},{"actual":[[-32768,false,false],[32767,false,false],[12,false,false]],"check":"control: exact limits","expected":[[-32768,false,false],[32767,false,false],[12,false,false]],"passed":true},{"actual":[[32767,true,false],[10,false,false],[0,false,false]],"check":"control: overflow then clean ops","expected":[[32767,true,false],[10,false,false],[0,false,false]],"passed":true},{"actual":[[32767,true,true],"halted"],"check":"control: scenario 2","expected":[[32767,true,true],"halted"],"passed":true},{"actual":[[18588,false,false],[8640,true,true],"halted"],"check":"regression: scenario 3","expected":[[18588,false,false],[8640,true,true],"halted"],"passed":true},{"actual":[[30001,false,false],[9662,false,false],[18878,false,false],[-32768,true,false],[27624,true,true],"halted"],"check":"regression: scenario 4","expected":[[30001,false,false],[9662,false,false],[18878,false,false],[-32768,true,false],[27624,true,true],"halted"],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: wrap with cleared traps\", \"actual\": [[-30536, true, false], [30536, true, false], [-25536, true, true], \"halted\"], \"expected\": [[-30536, true, false], [30536, true, false], [-25536, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 1\", \"actual\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [-10024, true, false], [10110, false, false]], \"expected\": [[-12576, false, false], [-17342, false, false], [-31307, false, false], [-10024, true, false], [10110, false, false]], \"passed\": true}, {\"check\": \"control: saturation both signs\", \"actual\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"expected\": [[32767, true, false], [-32768, true, false], [32767, false, false], [2, false, false]], \"passed\": true}, {\"check\": \"control: exact limits\", \"actual\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"expected\": [[-32768, false, false], [32767, false, false], [12, false, false]], \"passed\": true}, {\"check\": \"control: overflow then clean ops\", \"actual\": [[32767, true, false], [10, false, false], [0, false, false]], \"expected\": [[32767, true, false], [10, false, false], [0, false, false]], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [[32767, true, true], \"halted\"], \"expected\": [[32767, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 3\", \"actual\": [[18588, false, false], [8640, true, true], \"halted\"], \"expected\": [[18588, false, false], [8640, true, true], \"halted\"], \"passed\": true}, {\"check\": \"regression: scenario 4\", \"actual\": [[30001, false, false], [9662, false, false], [18878, false, false], [-32768, true, false], [27624, true, true], \"halted\"], \"expected\": [[30001, false, false], [9662, false, false], [18878, false, false], [-32768, true, false], [27624, true, true], \"halted\"], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}