{"abstract":"After the first cycle the compressor may stop right after starting because its start time is stale.","category":"HVAC thermostat control","checks":8,"contract":"Compressor protection sampled per minute; calls is a list of [demand, safety_ok]. After power-up the compressor may not start before minute startup_delay. Once started it runs at least min_on minutes even if demand ends; after stopping it stays off at least min_off minutes. A safety fault stops it immediately regardless of minimum on time, and that stop also starts the minimum off time; it cannot start while the safety is faulted. Return the compressor state per minute.","evaluation_group":"w2-hvac-thermostat-control-compressor-anti-short-cycle","failed_approach":"Using the previous stop time as the start time still shortens the minimum run.","family":"w2-hvac-thermostat-control-compressor-anti-short-cycle-restart-timestamp","id":"FA-92411","implementations":{"attempt":{"sha256":"ed6d84c5854bdf6588842a825f27c2600a0ea3bfc48ffe2ad6049dd050cdc89e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_on, min_off, startup_delay, calls):\n    running = False\n    on_at = None\n    off_at = None\n    out = []\n    for minute, (demand, safety_ok) in enumerate(calls):\n        if running:\n            if not safety_ok:\n                running = False\n                off_at = minute\n            elif not demand and minute - on_at >= min_on:\n                running = False\n                off_at = minute\n        elif demand and safety_ok and minute >= startup_delay:\n            if off_at is None or minute - off_at >= min_off:\n                running = True\n                on_at = off_at if off_at is not None else minute\n        out.append(running)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: scenario 1',\n   [3,\n    3,\n    4,\n    [[False, False],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 7',\n   [5,\n    3,\n    4,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 2',\n   [5,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [True, True, True, False, False, False, True, True, False, False, False, False, False, True]],\n  ['control: scenario 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [True, True, True, True, False, False, False, False, True, False, False]]],\n [['regression: scenario 6',\n   [2,\n    3,\n    0,\n    [[True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True]]],\n   [False, False, False, False, False, True, False, False, False, False, False, True, True]],\n  ['regression: scenario 9',\n   [3,\n    3,\n    2,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [5,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False, False, False, False, False, True, True, True, True, True, True, True]],\n  ['control: scenario 2',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, True, True, True, False, False, False, False, False, False]]],\n [['regression: scenario 11',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 13',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [2,\n    5,\n    2,\n    [[True, False],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 29',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 37',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True]]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [5,\n    4,\n    2,\n    [[False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 15',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 16',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, True, True, True, False, False, False, False, True, True, True, True, True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"201ef969117f3edad88bd0a6943042d88999d36b1857fad72eb82d6a7079b972","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_on, min_off, startup_delay, calls):\n    running = False\n    on_at = None\n    off_at = None\n    out = []\n    for minute, (demand, safety_ok) in enumerate(calls):\n        if running:\n            if not safety_ok:\n                running = False\n                off_at = minute\n            elif not demand and minute - on_at >= min_on:\n                running = False\n                off_at = minute\n        elif demand and safety_ok and minute >= startup_delay:\n            if off_at is None or minute - off_at >= min_off:\n                running = True\n                if on_at is None:\n                    on_at = minute\n        out.append(running)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: scenario 1',\n   [3,\n    3,\n    4,\n    [[False, False],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 7',\n   [5,\n    3,\n    4,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 2',\n   [5,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [True, True, True, False, False, False, True, True, False, False, False, False, False, True]],\n  ['control: scenario 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [True, True, True, True, False, False, False, False, True, False, False]]],\n [['regression: scenario 6',\n   [2,\n    3,\n    0,\n    [[True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True]]],\n   [False, False, False, False, False, True, False, False, False, False, False, True, True]],\n  ['regression: scenario 9',\n   [3,\n    3,\n    2,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [5,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False, False, False, False, False, True, True, True, True, True, True, True]],\n  ['control: scenario 2',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, True, True, True, False, False, False, False, False, False]]],\n [['regression: scenario 11',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 13',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [2,\n    5,\n    2,\n    [[True, False],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 29',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 37',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True]]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [5,\n    4,\n    2,\n    [[False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 15',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 16',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, True, True, True, False, False, False, False, True, True, True, True, True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"df4440aafb329eefef0e3824bd184b0635f5d1c7d922993ee268047c0d472a59","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(min_on, min_off, startup_delay, calls):\n    running = False\n    on_at = None\n    off_at = None\n    out = []\n    for minute, (demand, safety_ok) in enumerate(calls):\n        if running:\n            if not safety_ok:\n                running = False\n                off_at = minute\n            elif not demand and minute - on_at >= min_on:\n                running = False\n                off_at = minute\n        elif demand and safety_ok and minute >= startup_delay:\n            if off_at is None or minute - off_at >= min_off:\n                running = True\n                on_at = minute\n        out.append(running)\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: scenario 1',\n   [3,\n    3,\n    4,\n    [[False, False],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 7',\n   [5,\n    3,\n    4,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 2',\n   [5,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [True, True, True, False, False, False, True, True, False, False, False, False, False, True]],\n  ['control: scenario 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [True, True, True, True, False, False, False, False, True, False, False]]],\n [['regression: scenario 6',\n   [2,\n    3,\n    0,\n    [[True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True]]],\n   [False, False, False, False, False, True, False, False, False, False, False, True, True]],\n  ['regression: scenario 9',\n   [3,\n    3,\n    2,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [5,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False, False, False, False, False, True, True, True, True, True, True, True]],\n  ['control: scenario 2',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, True, True, True, False, False, False, False, False, False]]],\n [['regression: scenario 11',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 13',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [2,\n    5,\n    2,\n    [[True, False],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 29',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['regression: scenario 37',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True]]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['regression: scenario 1',\n   [5,\n    4,\n    2,\n    [[False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 15',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, False]]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 16',\n   [2,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, True, True, True, False, False, False, False, True, True, True, True, True]],\n  ['control: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: exact min on',\n   [2,\n    3,\n    0,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [True, True, False, False, False, True, True, False, False, False, True, True]],\n  ['control: scenario 1',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False]],\n  ['control: scenario 2',\n   [2,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True]]],\n   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model of one thermostat or HVAC controller decision evaluated per sample. Temperatures are integer tenths of a degree Fahrenheit unless stated otherwise. The contract is a stipulated toy convention, not a claim of conformance to any manufacturer, ASHRAE guideline or code. 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-hvac-thermostat-control-compressor-anti-short-cycle-restart-timestamp","generated_at":"2026-09-29T14:51:45.554989+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Residential and light-commercial thermostats make these decisions sample by sample; each defect changes equipment calls in a way that shows up as short cycling, comfort complaints or equipment stress.","repair":"Record the start time on every start.","root_cause":"The start time is only recorded on the first start.","sha256":"e907d24c2b84e623e552ca72e0eabeb3c17bbe792ab45143dc844714d62e6805","title":"Minimum on time is measured from the first ever start · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":40.803,"exit_code":1,"observations":[{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false],"check":"regression: scenario 1","expected":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"passed":false},{"actual":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,false],"check":"regression: scenario 7","expected":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false],"passed":false},{"actual":[false,false,true,true,true,false,false,false,false,false,true],"check":"control: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true],"check":"control: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"control: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true,false,false,false,true,true],"check":"control: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"check":"control: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,false,false],"check":"control: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: scenario 1\", \"actual\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, false, false, false, false, false, false], \"passed\": false}, {\"check\": \"regression: scenario 7\", \"actual\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, false, false, false, false], \"expected\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, false], \"passed\": false}, {\"check\": \"control: min on and off\", \"actual\": [false, false, true, true, true, false, false, false, false, false, true], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: exact min on\", \"actual\": [true, true, false, false, false, true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, true, false, false], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":43.202,"exit_code":1,"observations":[{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,false,false,false,false,false,false,false],"check":"regression: scenario 1","expected":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"passed":false},{"actual":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,false,false,false,false],"check":"regression: scenario 7","expected":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false],"passed":false},{"actual":[false,false,true,true,true,false,false,false,false,false,true],"check":"control: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true],"check":"control: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"control: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true,false,false,false,true,true],"check":"control: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"check":"control: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,false,false],"check":"control: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: scenario 1\", \"actual\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, false, false, false, false, false, false], \"passed\": false}, {\"check\": \"regression: scenario 7\", \"actual\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, false, false, false, false], \"expected\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, false], \"passed\": false}, {\"check\": \"control: min on and off\", \"actual\": [false, false, true, true, true, false, false, false, false, false, true], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: exact min on\", \"actual\": [true, true, false, false, false, true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, true, false, false], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":40.104,"exit_code":0,"observations":[{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"check":"regression: scenario 1","expected":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"passed":true},{"actual":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false],"check":"regression: scenario 7","expected":[false,false,false,false,true,true,true,true,true,true,false,false,false,true,true,true,true,true,true,false],"passed":true},{"actual":[false,false,true,true,true,false,false,false,false,false,true],"check":"control: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true],"check":"control: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"control: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,true,true,false,false,false,true,true],"check":"control: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"check":"control: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,false,false],"check":"control: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: scenario 1\", \"actual\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, false, false, false, false, false, false], \"passed\": true}, {\"check\": \"regression: scenario 7\", \"actual\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, false], \"expected\": [false, false, false, false, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, false], \"passed\": true}, {\"check\": \"control: min on and off\", \"actual\": [false, false, true, true, true, false, false, false, false, false, true], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: exact min on\", \"actual\": [true, true, false, false, false, true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: scenario 2\", \"actual\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, true, false, false], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}