{"abstract":"A high-pressure or overload fault keeps the compressor running until its minimum run time expires.","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.","contract_signature":"min_on, min_off, startup_delay, calls","evaluation_group":"w2-hvac-thermostat-control-compressor-anti-short-cycle","failed_approach":"Acting on the safety fault only while demand is still present ignores faults after the call ends.","family":"w2-hvac-thermostat-control-compressor-anti-short-cycle-safety-overrides-min-on","id":"FA-92386","implementations":{"attempt":{"sha256":"fb0fe3ad1f47b3700f4055f2bc2b7fb1eb24153faef9352d6d893c12e7806034","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 and demand:\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: 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: 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  ['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 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 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: 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 7',\n   [2,\n    3,\n    2,\n    [[True, False],\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     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, 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    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  ['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  ['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 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 18',\n   [3,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True]]],\n   [False, False, True, False, False, False, False, True, True, True, 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  ['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  ['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  ['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: scenario 10',\n   [5,\n    3,\n    2,\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, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True]]],\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    False,\n    False,\n    False]],\n  ['regression: scenario 32',\n   [2,\n    4,\n    4,\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     [False, False],\n     [False, True],\n     [False, True],\n     [False, 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    True,\n    False,\n    False,\n    False,\n    False,\n    True,\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  ['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  ['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 31',\n   [2,\n    4,\n    2,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\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    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  ['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  ['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":"c9405c2cd138e26689f1a12758629c8a9dc225df74bbf16d5c7eb9299feea533","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 demand or not safety_ok) 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: 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: 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  ['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 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 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: 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 7',\n   [2,\n    3,\n    2,\n    [[True, False],\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     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [True, True],\n     [False, 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    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  ['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  ['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 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 18',\n   [3,\n    3,\n    0,\n    [[False, True],\n     [False, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True]]],\n   [False, False, True, False, False, False, False, True, True, True, 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  ['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  ['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  ['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: scenario 10',\n   [5,\n    3,\n    2,\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, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True]]],\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    False,\n    False,\n    False]],\n  ['regression: scenario 32',\n   [2,\n    4,\n    4,\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     [False, False],\n     [False, True],\n     [False, True],\n     [False, 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    True,\n    False,\n    False,\n    False,\n    False,\n    True,\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  ['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  ['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 31',\n   [2,\n    4,\n    2,\n    [[False, True],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, False],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False,\n    False,\n    False,\n    True,\n    False,\n    False,\n    False,\n    False,\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    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  ['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  ['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-safety-overrides-min-on","generated_at":"2026-09-29T14:51:45.175473+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.","root_cause":"The safety stop is folded into the normal stop test that is gated by minimum on time.","sha256":"829b82c00f03626b58335620a3fc277c65cb7fdbbef1133839255c320e2be15d","title":"Safety fault waits for the compressor minimum on time · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":41.246,"exit_code":1,"observations":[{"actual":[true,true,true,true,true,true,true],"check":"regression: safety during min on","expected":[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,true,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,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,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":"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":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: safety during min on\", \"actual\": [true, true, true, true, true, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, true, 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\": \"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 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\": \"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\": false}\n"},"broken":{"elapsed_ms":40.495,"exit_code":1,"observations":[{"actual":[true,true,true,true,true,true,true],"check":"regression: safety during min on","expected":[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,true,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,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,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,true,true,false,false,false,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,true,true,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: safety during min on\", \"actual\": [true, true, true, true, true, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"regression: scenario 1\", \"actual\": [false, false, false, false, false, true, true, true, true, true, false, false, false, false, true, true, true, 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\": \"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 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\": \"regression: scenario 2\", \"actual\": [true, true, true, true, true, false, false, false, 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, true, true, 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"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}