{"abstract":"The reported accumulated time keeps changing (and wraps) after the timer is done.","category":"PLC ladder logic scan cycles","checks":8,"contract":"Delay timer built on a 16-bit free-running clock register (ticks wrap from 65535 to 0). samples is a list of [enable, clock] read each scan. The first enabled scan captures the start tick; elapsed is (clock - start) modulo 65536. Done latches once elapsed >= preset and stays set while enabled even if the elapsed value later wraps. A disabled scan clears start and done. Return [done, elapsed capped at preset once done] per scan, [False, 0] when disabled.","evaluation_group":"w2-plc-ladder-logic-scan-cycles-free-running-clock-timer","failed_approach":"Capping with min(elapsed, preset) still drops after the elapsed value wraps.","family":"w2-plc-ladder-logic-scan-cycles-free-running-clock-timer-elapsed-cap","id":"FA-92266","implementations":{"attempt":{"sha256":"d965d42816b354248f69171e3e8c5e4d88aa6122d51d347b259ff167d81ea697","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(preset, samples):\n    start = None\n    done = False\n    out = []\n    for enable, clock in samples:\n        if not enable:\n            start = None\n            done = False\n            out.append([False, 0])\n            continue\n        if start is None:\n            start = clock\n        elapsed = (clock - start) & 0xFFFF\n        if elapsed >= preset:\n            done = True\n        out.append([done, min(elapsed, preset)])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [100,\n    [[True, 53593],\n     [True, 53635],\n     [True, 10212],\n     [False, 10250],\n     [True, 24553],\n     [True, 35364],\n     [True, 35501],\n     [True, 35591],\n     [True, 65279],\n     [True, 65379],\n     [True, 65509]]],\n   [[False, 0],\n    [False, 42],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['regression: scenario 2',\n   [100,\n    [[True, 17304],\n     [True, 20531],\n     [True, 27559],\n     [False, 57396],\n     [True, 19489],\n     [True, 46000],\n     [True, 46035],\n     [True, 46209],\n     [True, 5526]]],\n   [[False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['control: scenario 3',\n   [40000,\n    [[True, 42783],\n     [False, 4625],\n     [True, 4670],\n     [True, 8857],\n     [False, 15422],\n     [False, 15500],\n     [True, 15560],\n     [True, 27335],\n     [True, 27471]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 4187],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 11775],\n    [False, 11911]]],\n  ['regression: scenario 4',\n   [100,\n    [[True, 2607],\n     [True, 18576],\n     [True, 18609],\n     [True, 18619],\n     [True, 45272],\n     [True, 45282],\n     [True, 55824],\n     [False, 61503]]],\n   [[False, 0], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [False, 0]]]],\n [['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [1000,\n    [[False, 39404],\n     [False, 39599],\n     [True, 39752],\n     [True, 39914],\n     [False, 49270],\n     [True, 53547],\n     [True, 53700],\n     [True, 4426]]],\n   [[False, 0], [False, 0], [False, 0], [False, 162], [False, 0], [False, 0], [False, 153], [True, 1000]]],\n  ['regression: scenario 2',\n   [5,\n    [[True, 40525],\n     [True, 40666],\n     [True, 40725],\n     [True, 58227],\n     [True, 18319],\n     [False, 25775],\n     [True, 25797],\n     [True, 25799]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [False, 0], [False, 0], [False, 2]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 30258],\n     [True, 30296],\n     [True, 45510],\n     [True, 2343],\n     [True, 12538],\n     [True, 12596],\n     [False, 12635],\n     [True, 37410],\n     [True, 53676],\n     [True, 10497],\n     [True, 10628],\n     [False, 10824],\n     [True, 27527],\n     [True, 55148]]],\n   [[False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5]]],\n  ['control: scenario 4',\n   [65535,\n    [[True, 43066],\n     [True, 60153],\n     [False, 2292],\n     [True, 2392],\n     [True, 12076],\n     [False, 28626],\n     [False, 28693],\n     [False, 45850],\n     [True, 5636]]],\n   [[False, 0],\n    [False, 17087],\n    [False, 0],\n    [False, 0],\n    [False, 9684],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0]]]],\n [['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 2',\n   [40000,\n    [[True, 54821],\n     [True, 18035],\n     [True, 32212],\n     [True, 38340],\n     [True, 38521],\n     [True, 38565],\n     [True, 38691],\n     [True, 52834],\n     [True, 6573],\n     [False, 6717],\n     [True, 13602]]],\n   [[False, 0],\n    [False, 28750],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [False, 0],\n    [False, 0]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 1',\n   [100,\n    [[False, 22859],\n     [True, 23009],\n     [True, 46893],\n     [True, 47082],\n     [True, 47173],\n     [True, 47274],\n     [False, 47358],\n     [True, 47448],\n     [True, 54303],\n     [True, 54477],\n     [False, 54574]]],\n   [[False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 23870],\n     [True, 46782],\n     [True, 46917],\n     [True, 46976],\n     [True, 56255],\n     [True, 61627],\n     [True, 1767],\n     [True, 1874]]],\n   [[False, 0], [False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 4',\n   [5,\n    [[True, 25219],\n     [True, 25303],\n     [True, 25491],\n     [True, 33180],\n     [True, 33370],\n     [True, 34085],\n     [True, 35832],\n     [True, 46392],\n     [True, 48652],\n     [True, 48709],\n     [True, 6073],\n     [True, 6100]]],\n   [[False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5]]]],\n [['regression: scenario 2',\n   [1000,\n    [[False, 46148],\n     [True, 57365],\n     [False, 57416],\n     [True, 57439],\n     [True, 57613],\n     [True, 57776],\n     [True, 61872],\n     [True, 62038],\n     [True, 9532],\n     [True, 32841],\n     [True, 32973]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 174],\n    [False, 337],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [65535,\n    [[False, 3784],\n     [False, 8211],\n     [False, 33966],\n     [True, 50163],\n     [True, 63009],\n     [False, 63184],\n     [True, 63243],\n     [True, 63325]]],\n   [[False, 0], [False, 0], [False, 0], [False, 0], [False, 12846], [False, 0], [False, 0], [False, 82]]],\n  ['control: scenario 3',\n   [65535,\n    [[False, 15447],\n     [True, 18837],\n     [False, 18898],\n     [True, 19006],\n     [False, 33164],\n     [True, 33164],\n     [True, 41175],\n     [True, 53503],\n     [True, 53600],\n     [True, 6331],\n     [True, 35575],\n     [True, 35594],\n     [True, 35643]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 8011],\n    [False, 20339],\n    [False, 20436],\n    [False, 38703],\n    [False, 2411],\n    [False, 2430],\n    [False, 2479]]],\n  ['control: scenario 4',\n   [40000,\n    [[False, 63428],\n     [False, 10454],\n     [True, 36085],\n     [False, 36231],\n     [True, 36344],\n     [True, 36357],\n     [True, 36437],\n     [True, 36476],\n     [True, 59214],\n     [False, 59324],\n     [True, 23687],\n     [True, 45223],\n     [False, 61971]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 13],\n    [False, 93],\n    [False, 132],\n    [False, 22870],\n    [False, 0],\n    [False, 0],\n    [False, 21536],\n    [False, 0]]]],\n [['regression: scenario 3',\n   [1000,\n    [[True, 22897],\n     [True, 22914],\n     [True, 28312],\n     [True, 28374],\n     [True, 35057],\n     [True, 50246],\n     [True, 63704],\n     [True, 65227],\n     [True, 26677],\n     [True, 39163]]],\n   [[False, 0],\n    [False, 17],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [40000,\n    [[True, 14860],\n     [True, 43167],\n     [True, 43310],\n     [True, 43470],\n     [False, 65246],\n     [False, 2333],\n     [True, 20092],\n     [True, 45967],\n     [False, 64834],\n     [True, 20225],\n     [False, 20250],\n     [True, 21773],\n     [True, 26780]]],\n   [[False, 0],\n    [False, 28307],\n    [False, 28450],\n    [False, 28610],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 25875],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 5007]]],\n  ['regression: scenario 2',\n   [1000,\n    [[True, 51184],\n     [True, 56535],\n     [True, 13279],\n     [True, 24517],\n     [True, 24685],\n     [True, 32146],\n     [True, 59255],\n     [False, 21739],\n     [True, 21822],\n     [True, 43196]]],\n   [[False, 0],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [True, 1000]]],\n  ['regression: scenario 4',\n   [1000,\n    [[True, 38985],\n     [True, 39119],\n     [True, 46977],\n     [True, 47168],\n     [False, 6446],\n     [True, 33057],\n     [True, 33083],\n     [True, 33130],\n     [True, 49169],\n     [True, 49195],\n     [True, 49212],\n     [True, 12968],\n     [True, 13081]]],\n   [[False, 0],\n    [False, 134],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [False, 26],\n    [False, 73],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]]]]\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":"e21ddd737bd9696c748238e57b3487ca708b0fbfa8deffde2dd8e7d0b1797bee","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(preset, samples):\n    start = None\n    done = False\n    out = []\n    for enable, clock in samples:\n        if not enable:\n            start = None\n            done = False\n            out.append([False, 0])\n            continue\n        if start is None:\n            start = clock\n        elapsed = (clock - start) & 0xFFFF\n        if elapsed >= preset:\n            done = True\n        out.append([done, elapsed])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [100,\n    [[True, 53593],\n     [True, 53635],\n     [True, 10212],\n     [False, 10250],\n     [True, 24553],\n     [True, 35364],\n     [True, 35501],\n     [True, 35591],\n     [True, 65279],\n     [True, 65379],\n     [True, 65509]]],\n   [[False, 0],\n    [False, 42],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['regression: scenario 2',\n   [100,\n    [[True, 17304],\n     [True, 20531],\n     [True, 27559],\n     [False, 57396],\n     [True, 19489],\n     [True, 46000],\n     [True, 46035],\n     [True, 46209],\n     [True, 5526]]],\n   [[False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['control: scenario 3',\n   [40000,\n    [[True, 42783],\n     [False, 4625],\n     [True, 4670],\n     [True, 8857],\n     [False, 15422],\n     [False, 15500],\n     [True, 15560],\n     [True, 27335],\n     [True, 27471]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 4187],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 11775],\n    [False, 11911]]],\n  ['regression: scenario 4',\n   [100,\n    [[True, 2607],\n     [True, 18576],\n     [True, 18609],\n     [True, 18619],\n     [True, 45272],\n     [True, 45282],\n     [True, 55824],\n     [False, 61503]]],\n   [[False, 0], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [False, 0]]]],\n [['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [1000,\n    [[False, 39404],\n     [False, 39599],\n     [True, 39752],\n     [True, 39914],\n     [False, 49270],\n     [True, 53547],\n     [True, 53700],\n     [True, 4426]]],\n   [[False, 0], [False, 0], [False, 0], [False, 162], [False, 0], [False, 0], [False, 153], [True, 1000]]],\n  ['regression: scenario 2',\n   [5,\n    [[True, 40525],\n     [True, 40666],\n     [True, 40725],\n     [True, 58227],\n     [True, 18319],\n     [False, 25775],\n     [True, 25797],\n     [True, 25799]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [False, 0], [False, 0], [False, 2]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 30258],\n     [True, 30296],\n     [True, 45510],\n     [True, 2343],\n     [True, 12538],\n     [True, 12596],\n     [False, 12635],\n     [True, 37410],\n     [True, 53676],\n     [True, 10497],\n     [True, 10628],\n     [False, 10824],\n     [True, 27527],\n     [True, 55148]]],\n   [[False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5]]],\n  ['control: scenario 4',\n   [65535,\n    [[True, 43066],\n     [True, 60153],\n     [False, 2292],\n     [True, 2392],\n     [True, 12076],\n     [False, 28626],\n     [False, 28693],\n     [False, 45850],\n     [True, 5636]]],\n   [[False, 0],\n    [False, 17087],\n    [False, 0],\n    [False, 0],\n    [False, 9684],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0]]]],\n [['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 2',\n   [40000,\n    [[True, 54821],\n     [True, 18035],\n     [True, 32212],\n     [True, 38340],\n     [True, 38521],\n     [True, 38565],\n     [True, 38691],\n     [True, 52834],\n     [True, 6573],\n     [False, 6717],\n     [True, 13602]]],\n   [[False, 0],\n    [False, 28750],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [False, 0],\n    [False, 0]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 1',\n   [100,\n    [[False, 22859],\n     [True, 23009],\n     [True, 46893],\n     [True, 47082],\n     [True, 47173],\n     [True, 47274],\n     [False, 47358],\n     [True, 47448],\n     [True, 54303],\n     [True, 54477],\n     [False, 54574]]],\n   [[False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 23870],\n     [True, 46782],\n     [True, 46917],\n     [True, 46976],\n     [True, 56255],\n     [True, 61627],\n     [True, 1767],\n     [True, 1874]]],\n   [[False, 0], [False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 4',\n   [5,\n    [[True, 25219],\n     [True, 25303],\n     [True, 25491],\n     [True, 33180],\n     [True, 33370],\n     [True, 34085],\n     [True, 35832],\n     [True, 46392],\n     [True, 48652],\n     [True, 48709],\n     [True, 6073],\n     [True, 6100]]],\n   [[False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5]]]],\n [['regression: scenario 2',\n   [1000,\n    [[False, 46148],\n     [True, 57365],\n     [False, 57416],\n     [True, 57439],\n     [True, 57613],\n     [True, 57776],\n     [True, 61872],\n     [True, 62038],\n     [True, 9532],\n     [True, 32841],\n     [True, 32973]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 174],\n    [False, 337],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [65535,\n    [[False, 3784],\n     [False, 8211],\n     [False, 33966],\n     [True, 50163],\n     [True, 63009],\n     [False, 63184],\n     [True, 63243],\n     [True, 63325]]],\n   [[False, 0], [False, 0], [False, 0], [False, 0], [False, 12846], [False, 0], [False, 0], [False, 82]]],\n  ['control: scenario 3',\n   [65535,\n    [[False, 15447],\n     [True, 18837],\n     [False, 18898],\n     [True, 19006],\n     [False, 33164],\n     [True, 33164],\n     [True, 41175],\n     [True, 53503],\n     [True, 53600],\n     [True, 6331],\n     [True, 35575],\n     [True, 35594],\n     [True, 35643]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 8011],\n    [False, 20339],\n    [False, 20436],\n    [False, 38703],\n    [False, 2411],\n    [False, 2430],\n    [False, 2479]]],\n  ['control: scenario 4',\n   [40000,\n    [[False, 63428],\n     [False, 10454],\n     [True, 36085],\n     [False, 36231],\n     [True, 36344],\n     [True, 36357],\n     [True, 36437],\n     [True, 36476],\n     [True, 59214],\n     [False, 59324],\n     [True, 23687],\n     [True, 45223],\n     [False, 61971]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 13],\n    [False, 93],\n    [False, 132],\n    [False, 22870],\n    [False, 0],\n    [False, 0],\n    [False, 21536],\n    [False, 0]]]],\n [['regression: scenario 3',\n   [1000,\n    [[True, 22897],\n     [True, 22914],\n     [True, 28312],\n     [True, 28374],\n     [True, 35057],\n     [True, 50246],\n     [True, 63704],\n     [True, 65227],\n     [True, 26677],\n     [True, 39163]]],\n   [[False, 0],\n    [False, 17],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [40000,\n    [[True, 14860],\n     [True, 43167],\n     [True, 43310],\n     [True, 43470],\n     [False, 65246],\n     [False, 2333],\n     [True, 20092],\n     [True, 45967],\n     [False, 64834],\n     [True, 20225],\n     [False, 20250],\n     [True, 21773],\n     [True, 26780]]],\n   [[False, 0],\n    [False, 28307],\n    [False, 28450],\n    [False, 28610],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 25875],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 5007]]],\n  ['regression: scenario 2',\n   [1000,\n    [[True, 51184],\n     [True, 56535],\n     [True, 13279],\n     [True, 24517],\n     [True, 24685],\n     [True, 32146],\n     [True, 59255],\n     [False, 21739],\n     [True, 21822],\n     [True, 43196]]],\n   [[False, 0],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [True, 1000]]],\n  ['regression: scenario 4',\n   [1000,\n    [[True, 38985],\n     [True, 39119],\n     [True, 46977],\n     [True, 47168],\n     [False, 6446],\n     [True, 33057],\n     [True, 33083],\n     [True, 33130],\n     [True, 49169],\n     [True, 49195],\n     [True, 49212],\n     [True, 12968],\n     [True, 13081]]],\n   [[False, 0],\n    [False, 134],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [False, 26],\n    [False, 73],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]]]]\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":"9ce84f5c097a901916fd478f8deb7f75ac24f6011d02e8bb68edc401deb9d7e0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(preset, samples):\n    start = None\n    done = False\n    out = []\n    for enable, clock in samples:\n        if not enable:\n            start = None\n            done = False\n            out.append([False, 0])\n            continue\n        if start is None:\n            start = clock\n        elapsed = (clock - start) & 0xFFFF\n        if elapsed >= preset:\n            done = True\n        out.append([done, preset if done else elapsed])\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [100,\n    [[True, 53593],\n     [True, 53635],\n     [True, 10212],\n     [False, 10250],\n     [True, 24553],\n     [True, 35364],\n     [True, 35501],\n     [True, 35591],\n     [True, 65279],\n     [True, 65379],\n     [True, 65509]]],\n   [[False, 0],\n    [False, 42],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['regression: scenario 2',\n   [100,\n    [[True, 17304],\n     [True, 20531],\n     [True, 27559],\n     [False, 57396],\n     [True, 19489],\n     [True, 46000],\n     [True, 46035],\n     [True, 46209],\n     [True, 5526]]],\n   [[False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100]]],\n  ['control: scenario 3',\n   [40000,\n    [[True, 42783],\n     [False, 4625],\n     [True, 4670],\n     [True, 8857],\n     [False, 15422],\n     [False, 15500],\n     [True, 15560],\n     [True, 27335],\n     [True, 27471]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 4187],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 11775],\n    [False, 11911]]],\n  ['regression: scenario 4',\n   [100,\n    [[True, 2607],\n     [True, 18576],\n     [True, 18609],\n     [True, 18619],\n     [True, 45272],\n     [True, 45282],\n     [True, 55824],\n     [False, 61503]]],\n   [[False, 0], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [True, 100], [False, 0]]]],\n [['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 1',\n   [1000,\n    [[False, 39404],\n     [False, 39599],\n     [True, 39752],\n     [True, 39914],\n     [False, 49270],\n     [True, 53547],\n     [True, 53700],\n     [True, 4426]]],\n   [[False, 0], [False, 0], [False, 0], [False, 162], [False, 0], [False, 0], [False, 153], [True, 1000]]],\n  ['regression: scenario 2',\n   [5,\n    [[True, 40525],\n     [True, 40666],\n     [True, 40725],\n     [True, 58227],\n     [True, 18319],\n     [False, 25775],\n     [True, 25797],\n     [True, 25799]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [False, 0], [False, 0], [False, 2]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 30258],\n     [True, 30296],\n     [True, 45510],\n     [True, 2343],\n     [True, 12538],\n     [True, 12596],\n     [False, 12635],\n     [True, 37410],\n     [True, 53676],\n     [True, 10497],\n     [True, 10628],\n     [False, 10824],\n     [True, 27527],\n     [True, 55148]]],\n   [[False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [False, 0],\n    [False, 0],\n    [True, 5]]],\n  ['control: scenario 4',\n   [65535,\n    [[True, 43066],\n     [True, 60153],\n     [False, 2292],\n     [True, 2392],\n     [True, 12076],\n     [False, 28626],\n     [False, 28693],\n     [False, 45850],\n     [True, 5636]]],\n   [[False, 0],\n    [False, 17087],\n    [False, 0],\n    [False, 0],\n    [False, 9684],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0]]]],\n [['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['regression: scenario 2',\n   [40000,\n    [[True, 54821],\n     [True, 18035],\n     [True, 32212],\n     [True, 38340],\n     [True, 38521],\n     [True, 38565],\n     [True, 38691],\n     [True, 52834],\n     [True, 6573],\n     [False, 6717],\n     [True, 13602]]],\n   [[False, 0],\n    [False, 28750],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [True, 40000],\n    [False, 0],\n    [False, 0]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 1',\n   [100,\n    [[False, 22859],\n     [True, 23009],\n     [True, 46893],\n     [True, 47082],\n     [True, 47173],\n     [True, 47274],\n     [False, 47358],\n     [True, 47448],\n     [True, 54303],\n     [True, 54477],\n     [False, 54574]]],\n   [[False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [True, 100],\n    [False, 0],\n    [False, 0],\n    [True, 100],\n    [True, 100],\n    [False, 0]]],\n  ['regression: scenario 3',\n   [5,\n    [[False, 23870],\n     [True, 46782],\n     [True, 46917],\n     [True, 46976],\n     [True, 56255],\n     [True, 61627],\n     [True, 1767],\n     [True, 1874]]],\n   [[False, 0], [False, 0], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5], [True, 5]]],\n  ['regression: scenario 4',\n   [5,\n    [[True, 25219],\n     [True, 25303],\n     [True, 25491],\n     [True, 33180],\n     [True, 33370],\n     [True, 34085],\n     [True, 35832],\n     [True, 46392],\n     [True, 48652],\n     [True, 48709],\n     [True, 6073],\n     [True, 6100]]],\n   [[False, 0],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5],\n    [True, 5]]]],\n [['regression: scenario 2',\n   [1000,\n    [[False, 46148],\n     [True, 57365],\n     [False, 57416],\n     [True, 57439],\n     [True, 57613],\n     [True, 57776],\n     [True, 61872],\n     [True, 62038],\n     [True, 9532],\n     [True, 32841],\n     [True, 32973]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 174],\n    [False, 337],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [65535,\n    [[False, 3784],\n     [False, 8211],\n     [False, 33966],\n     [True, 50163],\n     [True, 63009],\n     [False, 63184],\n     [True, 63243],\n     [True, 63325]]],\n   [[False, 0], [False, 0], [False, 0], [False, 0], [False, 12846], [False, 0], [False, 0], [False, 82]]],\n  ['control: scenario 3',\n   [65535,\n    [[False, 15447],\n     [True, 18837],\n     [False, 18898],\n     [True, 19006],\n     [False, 33164],\n     [True, 33164],\n     [True, 41175],\n     [True, 53503],\n     [True, 53600],\n     [True, 6331],\n     [True, 35575],\n     [True, 35594],\n     [True, 35643]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 8011],\n    [False, 20339],\n    [False, 20436],\n    [False, 38703],\n    [False, 2411],\n    [False, 2430],\n    [False, 2479]]],\n  ['control: scenario 4',\n   [40000,\n    [[False, 63428],\n     [False, 10454],\n     [True, 36085],\n     [False, 36231],\n     [True, 36344],\n     [True, 36357],\n     [True, 36437],\n     [True, 36476],\n     [True, 59214],\n     [False, 59324],\n     [True, 23687],\n     [True, 45223],\n     [False, 61971]]],\n   [[False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 13],\n    [False, 93],\n    [False, 132],\n    [False, 22870],\n    [False, 0],\n    [False, 0],\n    [False, 21536],\n    [False, 0]]]],\n [['regression: scenario 3',\n   [1000,\n    [[True, 22897],\n     [True, 22914],\n     [True, 28312],\n     [True, 28374],\n     [True, 35057],\n     [True, 50246],\n     [True, 63704],\n     [True, 65227],\n     [True, 26677],\n     [True, 39163]]],\n   [[False, 0],\n    [False, 17],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]],\n  ['regression: long enable past a full wrap',\n   [1000, [[True, 100], [True, 30100], [True, 60100], [True, 24564], [True, 700]]],\n   [[False, 0], [True, 1000], [True, 1000], [True, 1000], [True, 1000]]],\n  ['control: clock wrap',\n   [100, [[True, 65500], [True, 65530], [True, 40], [True, 64], [False, 70]]],\n   [[False, 0], [False, 30], [False, 76], [True, 100], [False, 0]]],\n  ['regression: elapsed returns to zero',\n   [5, [[True, 10], [True, 20], [True, 10], [True, 12]]],\n   [[False, 0], [True, 5], [True, 5], [True, 5]]],\n  ['regression: enable after idle',\n   [50, [[False, 0], [False, 400], [True, 900], [True, 930], [True, 960]]],\n   [[False, 0], [False, 0], [False, 0], [False, 30], [True, 50]]],\n  ['control: scenario 1',\n   [40000,\n    [[True, 14860],\n     [True, 43167],\n     [True, 43310],\n     [True, 43470],\n     [False, 65246],\n     [False, 2333],\n     [True, 20092],\n     [True, 45967],\n     [False, 64834],\n     [True, 20225],\n     [False, 20250],\n     [True, 21773],\n     [True, 26780]]],\n   [[False, 0],\n    [False, 28307],\n    [False, 28450],\n    [False, 28610],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 25875],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 0],\n    [False, 5007]]],\n  ['regression: scenario 2',\n   [1000,\n    [[True, 51184],\n     [True, 56535],\n     [True, 13279],\n     [True, 24517],\n     [True, 24685],\n     [True, 32146],\n     [True, 59255],\n     [False, 21739],\n     [True, 21822],\n     [True, 43196]]],\n   [[False, 0],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [True, 1000]]],\n  ['regression: scenario 4',\n   [1000,\n    [[True, 38985],\n     [True, 39119],\n     [True, 46977],\n     [True, 47168],\n     [False, 6446],\n     [True, 33057],\n     [True, 33083],\n     [True, 33130],\n     [True, 49169],\n     [True, 49195],\n     [True, 49212],\n     [True, 12968],\n     [True, 13081]]],\n   [[False, 0],\n    [False, 134],\n    [True, 1000],\n    [True, 1000],\n    [False, 0],\n    [False, 0],\n    [False, 26],\n    [False, 73],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000],\n    [True, 1000]]]]]\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-free-running-clock-timer-elapsed-cap","generated_at":"2026-09-29T14:51:44.027287+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":"Report the preset once done.","root_cause":"The output reports the raw modular elapsed value instead of capping at preset once done.","sha256":"8bb2e99f3b04593a7cded4f59b085a5128df8d118813faa1145b0fdcfab5b3bb","title":"Free-running clock timer reports raw elapsed ticks after completion · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":39.175,"exit_code":1,"observations":[{"actual":[[false,0],[true,1000],[true,1000],[true,1000],[true,600]],"check":"regression: long enable past a full wrap","expected":[[false,0],[true,1000],[true,1000],[true,1000],[true,1000]],"passed":false},{"actual":[[false,0],[true,5],[true,0],[true,2]],"check":"regression: elapsed returns to zero","expected":[[false,0],[true,5],[true,5],[true,5]],"passed":false},{"actual":[[false,0],[false,30],[false,76],[true,100],[false,0]],"check":"control: clock wrap","expected":[[false,0],[false,30],[false,76],[true,100],[false,0]],"passed":true},{"actual":[[false,0],[false,0],[false,0],[false,30],[true,50]],"check":"regression: enable after idle","expected":[[false,0],[false,0],[false,0],[false,30],[true,50]],"passed":true},{"actual":[[false,0],[false,42],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100]],"check":"regression: scenario 1","expected":[[false,0],[false,42],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100]],"passed":true},{"actual":[[false,0],[true,100],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100]],"check":"regression: scenario 2","expected":[[false,0],[true,100],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100]],"passed":true},{"actual":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"check":"control: scenario 3","expected":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"passed":true},{"actual":[[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100],[false,0]],"check":"regression: scenario 4","expected":[[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100],[false,0]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: long enable past a full wrap\", \"actual\": [[false, 0], [true, 1000], [true, 1000], [true, 1000], [true, 600]], \"expected\": [[false, 0], [true, 1000], [true, 1000], [true, 1000], [true, 1000]], \"passed\": false}, {\"check\": \"regression: elapsed returns to zero\", \"actual\": [[false, 0], [true, 5], [true, 0], [true, 2]], \"expected\": [[false, 0], [true, 5], [true, 5], [true, 5]], \"passed\": false}, {\"check\": \"control: clock wrap\", \"actual\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"expected\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"passed\": true}, {\"check\": \"regression: enable after idle\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 50]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 50]], \"passed\": true}, {\"check\": \"regression: scenario 1\", \"actual\": [[false, 0], [false, 42], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100]], \"expected\": [[false, 0], [false, 42], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, 0], [true, 100], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100]], \"expected\": [[false, 0], [true, 100], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"passed\": true}, {\"check\": \"regression: scenario 4\", \"actual\": [[false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [false, 0]], \"expected\": [[false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [false, 0]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":40.55,"exit_code":1,"observations":[{"actual":[[false,0],[true,30000],[true,60000],[true,24464],[true,600]],"check":"regression: long enable past a full wrap","expected":[[false,0],[true,1000],[true,1000],[true,1000],[true,1000]],"passed":false},{"actual":[[false,0],[true,10],[true,0],[true,2]],"check":"regression: elapsed returns to zero","expected":[[false,0],[true,5],[true,5],[true,5]],"passed":false},{"actual":[[false,0],[false,30],[false,76],[true,100],[false,0]],"check":"control: clock wrap","expected":[[false,0],[false,30],[false,76],[true,100],[false,0]],"passed":true},{"actual":[[false,0],[false,0],[false,0],[false,30],[true,60]],"check":"regression: enable after idle","expected":[[false,0],[false,0],[false,0],[false,30],[true,50]],"passed":false},{"actual":[[false,0],[false,42],[true,22155],[false,0],[false,0],[true,10811],[true,10948],[true,11038],[true,40726],[true,40826],[true,40956]],"check":"regression: scenario 1","expected":[[false,0],[false,42],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100]],"passed":false},{"actual":[[false,0],[true,3227],[true,10255],[false,0],[false,0],[true,26511],[true,26546],[true,26720],[true,51573]],"check":"regression: scenario 2","expected":[[false,0],[true,100],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100]],"passed":false},{"actual":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"check":"control: scenario 3","expected":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"passed":true},{"actual":[[false,0],[true,15969],[true,16002],[true,16012],[true,42665],[true,42675],[true,53217],[false,0]],"check":"regression: scenario 4","expected":[[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100],[false,0]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: long enable past a full wrap\", \"actual\": [[false, 0], [true, 30000], [true, 60000], [true, 24464], [true, 600]], \"expected\": [[false, 0], [true, 1000], [true, 1000], [true, 1000], [true, 1000]], \"passed\": false}, {\"check\": \"regression: elapsed returns to zero\", \"actual\": [[false, 0], [true, 10], [true, 0], [true, 2]], \"expected\": [[false, 0], [true, 5], [true, 5], [true, 5]], \"passed\": false}, {\"check\": \"control: clock wrap\", \"actual\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"expected\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"passed\": true}, {\"check\": \"regression: enable after idle\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 60]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 50]], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [[false, 0], [false, 42], [true, 22155], [false, 0], [false, 0], [true, 10811], [true, 10948], [true, 11038], [true, 40726], [true, 40826], [true, 40956]], \"expected\": [[false, 0], [false, 42], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": false}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, 0], [true, 3227], [true, 10255], [false, 0], [false, 0], [true, 26511], [true, 26546], [true, 26720], [true, 51573]], \"expected\": [[false, 0], [true, 100], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": false}, {\"check\": \"control: scenario 3\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"passed\": true}, {\"check\": \"regression: scenario 4\", \"actual\": [[false, 0], [true, 15969], [true, 16002], [true, 16012], [true, 42665], [true, 42675], [true, 53217], [false, 0]], \"expected\": [[false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [false, 0]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":39.479,"exit_code":0,"observations":[{"actual":[[false,0],[true,1000],[true,1000],[true,1000],[true,1000]],"check":"regression: long enable past a full wrap","expected":[[false,0],[true,1000],[true,1000],[true,1000],[true,1000]],"passed":true},{"actual":[[false,0],[true,5],[true,5],[true,5]],"check":"regression: elapsed returns to zero","expected":[[false,0],[true,5],[true,5],[true,5]],"passed":true},{"actual":[[false,0],[false,30],[false,76],[true,100],[false,0]],"check":"control: clock wrap","expected":[[false,0],[false,30],[false,76],[true,100],[false,0]],"passed":true},{"actual":[[false,0],[false,0],[false,0],[false,30],[true,50]],"check":"regression: enable after idle","expected":[[false,0],[false,0],[false,0],[false,30],[true,50]],"passed":true},{"actual":[[false,0],[false,42],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100]],"check":"regression: scenario 1","expected":[[false,0],[false,42],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100]],"passed":true},{"actual":[[false,0],[true,100],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100]],"check":"regression: scenario 2","expected":[[false,0],[true,100],[true,100],[false,0],[false,0],[true,100],[true,100],[true,100],[true,100]],"passed":true},{"actual":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"check":"control: scenario 3","expected":[[false,0],[false,0],[false,0],[false,4187],[false,0],[false,0],[false,0],[false,11775],[false,11911]],"passed":true},{"actual":[[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100],[false,0]],"check":"regression: scenario 4","expected":[[false,0],[true,100],[true,100],[true,100],[true,100],[true,100],[true,100],[false,0]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: long enable past a full wrap\", \"actual\": [[false, 0], [true, 1000], [true, 1000], [true, 1000], [true, 1000]], \"expected\": [[false, 0], [true, 1000], [true, 1000], [true, 1000], [true, 1000]], \"passed\": true}, {\"check\": \"regression: elapsed returns to zero\", \"actual\": [[false, 0], [true, 5], [true, 5], [true, 5]], \"expected\": [[false, 0], [true, 5], [true, 5], [true, 5]], \"passed\": true}, {\"check\": \"control: clock wrap\", \"actual\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"expected\": [[false, 0], [false, 30], [false, 76], [true, 100], [false, 0]], \"passed\": true}, {\"check\": \"regression: enable after idle\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 50]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 30], [true, 50]], \"passed\": true}, {\"check\": \"regression: scenario 1\", \"actual\": [[false, 0], [false, 42], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100]], \"expected\": [[false, 0], [false, 42], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [[false, 0], [true, 100], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100]], \"expected\": [[false, 0], [true, 100], [true, 100], [false, 0], [false, 0], [true, 100], [true, 100], [true, 100], [true, 100]], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"expected\": [[false, 0], [false, 0], [false, 0], [false, 4187], [false, 0], [false, 0], [false, 0], [false, 11775], [false, 11911]], \"passed\": true}, {\"check\": \"regression: scenario 4\", \"actual\": [[false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [false, 0]], \"expected\": [[false, 0], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [true, 100], [false, 0]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}