{"abstract":"A compressor that ran longer than the off delay restarts immediately after stopping.","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":"Measuring from the stop but with a strict comparison adds an extra minute.","family":"w2-hvac-thermostat-control-compressor-anti-short-cycle-min-off-reference","id":"FA-92401","implementations":{"attempt":{"sha256":"cfa338680f430f1f6f239c41f20e0fc86b547fa43c52454e8bccd6c3a479fa2f","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: 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  ['regression: 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  ['regression: 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  ['regression: 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    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 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: 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: 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  ['regression: 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: 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  ['regression: 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 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 4',\n   [2,\n    4,\n    2,\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     [True, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, False]]],\n   [False, False, True, True, True, True, True, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [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    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]],\n [['regression: 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 3',\n   [2,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, 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   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['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  ['regression: 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 4',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, 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     [False, True],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False, False, False, False]]],\n [['regression: 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]],\n  ['regression: scenario 14',\n   [5,\n    5,\n    4,\n    [[False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [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    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[True, True],\n     [True, True],\n     [True, False],\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   [True, True, False, False, False, False, False, False, True, True, False, 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":"a4987050b771e6186ff5b02e7722b1d2b24a56924303abb99c2c002502d77132","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 - on_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: 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  ['regression: 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  ['regression: 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  ['regression: 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    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 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: 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: 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  ['regression: 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: 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  ['regression: 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 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 4',\n   [2,\n    4,\n    2,\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     [True, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, False]]],\n   [False, False, True, True, True, True, True, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [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    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]],\n [['regression: 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 3',\n   [2,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, 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   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['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  ['regression: 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 4',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, 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     [False, True],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False, False, False, False]]],\n [['regression: 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]],\n  ['regression: scenario 14',\n   [5,\n    5,\n    4,\n    [[False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [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    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[True, True],\n     [True, True],\n     [True, False],\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   [True, True, False, False, False, False, False, False, True, True, False, 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":"b0d78ba6884f4722ca800061e1b2b974f9b7226ca95657936173adba4d7943a7","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: 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  ['regression: 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  ['regression: 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  ['regression: 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    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 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False, False, False, False, False, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: 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: 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  ['regression: 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: 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  ['regression: 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 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [False, True]]],\n   [True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 4',\n   [2,\n    4,\n    2,\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     [True, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, False]]],\n   [False, False, True, True, True, True, True, False, False, False, False, False, False, False, False]]],\n [['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['control: scenario 4',\n   [5,\n    5,\n    4,\n    [[True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [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    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False]]],\n [['regression: 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 3',\n   [2,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, 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   [False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['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  ['regression: 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 4',\n   [2,\n    5,\n    4,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, 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     [False, True],\n     [False, True]]],\n   [False, False, False, False, True, True, True, False, False, False, False, False, False, False]]],\n [['regression: 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]],\n  ['regression: scenario 14',\n   [5,\n    5,\n    4,\n    [[False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [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    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: 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  ['regression: scenario 3',\n   [2,\n    5,\n    0,\n    [[True, True],\n     [True, True],\n     [True, False],\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   [True, True, False, False, False, False, False, False, True, True, False, 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-min-off-reference","generated_at":"2026-09-29T14:51:45.260337+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":"Measure minimum off time from the most recent stop.","root_cause":"The off-delay check subtracts the start time instead of the stop time.","sha256":"0997ec7e02d2d8cd155dbf975dac50c82810da2b327658f086b73505beb77913","title":"Minimum off time is measured from the last start · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":41.854,"exit_code":1,"observations":[{"actual":[false,false,true,true,true,false,false,false,false,false,true],"check":"regression: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"regression: safety during min on","expected":[true,true,false,false,false,true,true],"passed":false},{"actual":[true,true,false,false,false,false,false],"check":"regression: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":false},{"actual":[true,true,false,false,false,false,true,true,false,false,false,false],"check":"regression: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":false},{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"check":"control: 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":[true,true,true,false,false,false,false,true,false,false,false,false,false,true],"check":"regression: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":false},{"actual":[true,true,true,true,false,false,false,false,false,false,true],"check":"regression: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":false},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false],"check":"control: scenario 4","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: 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\": \"regression: safety during min on\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"regression: safety then quick recall\", \"actual\": [true, true, false, false, false, false, false], \"expected\": [true, true, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: exact min on\", \"actual\": [true, true, false, false, false, false, true, true, false, false, false, false], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"control: 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 2\", \"actual\": [true, true, true, false, false, false, false, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, false, false, true], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": false}, {\"check\": \"control: scenario 4\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.168,"exit_code":1,"observations":[{"actual":[false,false,true,true,true,false,true,true,true,false,true],"check":"regression: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":false},{"actual":[true,true,false,true,true,true,true],"check":"regression: safety during min on","expected":[true,true,false,false,false,true,true],"passed":false},{"actual":[true,true,false,false,true,true,true],"check":"regression: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":false},{"actual":[true,true,false,true,true,true,true,false,false,true,true,true],"check":"regression: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":false},{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"check":"control: 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":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"check":"regression: 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,true,true,true,true,false,true],"check":"regression: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":false},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false],"check":"control: scenario 4","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: min on and off\", \"actual\": [false, false, true, true, true, false, true, true, true, false, true], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: safety during min on\", \"actual\": [true, true, false, true, true, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"regression: safety then quick recall\", \"actual\": [true, true, false, false, true, true, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: exact min on\", \"actual\": [true, true, false, true, true, true, true, false, false, true, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"control: 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 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\": \"regression: scenario 3\", \"actual\": [true, true, true, true, false, true, true, true, true, false, true], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": false}, {\"check\": \"control: scenario 4\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.956,"exit_code":0,"observations":[{"actual":[false,false,true,true,true,false,false,false,false,false,true],"check":"regression: 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":"regression: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"regression: 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":"regression: exact min on","expected":[true,true,false,false,false,true,true,false,false,false,true,true],"passed":true},{"actual":[false,false,false,false,false,true,true,true,true,true,false,false,false,false,true,true,false,false,false,false,false,false],"check":"control: 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":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"check":"regression: 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":"regression: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false],"check":"control: scenario 4","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: 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\": \"regression: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"regression: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"regression: 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 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 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\": \"regression: 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}, {\"check\": \"control: scenario 4\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}