{"abstract":"Every short call runs one minute longer than the configured minimum.","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":"Subtracting one from min_on allows stopping a minute early.","family":"w2-hvac-thermostat-control-compressor-anti-short-cycle-min-on-boundary","id":"FA-92396","implementations":{"attempt":{"sha256":"bf5a4f05a248545d21c4bca06dc127e389d63cd1bfd8f0c421781f93caa1bc63","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 - 1:\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: 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: 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: 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: scenario 2',\n   [5,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [True, True, True, False, False, False, True, True, False, False, False, False, False, True]],\n  ['control: scenario 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [True, True, True, True, False, False, False, False, True, False, False]],\n  ['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: 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   [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: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: 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 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  ['control: 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: 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 8',\n   [3,\n    4,\n    4,\n    [[False, True],\n     [True, False],\n     [True, True],\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     [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,\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    False,\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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 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 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 11',\n   [5,\n    5,\n    0,\n    [[True, False],\n     [True, True],\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     [True, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 5',\n   [3,\n    5,\n    2,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, 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   [False,\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    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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   [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 5',\n   [5,\n    3,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True]]],\n   [False,\n    False,\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    True,\n    True,\n    False,\n    False,\n    False]],\n  ['regression: scenario 9',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False]],\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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   [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":"0ea0a11d2339cc3a8e6127a005b93ea4ce908adfb3b6d54f24228f29f66d3021","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: 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: 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: 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: scenario 2',\n   [5,\n    3,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True]]],\n   [True, True, True, False, False, False, True, True, False, False, False, False, False, True]],\n  ['control: scenario 3',\n   [3,\n    4,\n    0,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [True, True, True, True, False, False, False, False, True, False, False]],\n  ['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: 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   [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: min on and off',\n   [3,\n    4,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, False],\n     [True, True]]],\n   [False, False, True, True, True, False, False, False, False, False, True]],\n  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['control: 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 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  ['control: 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: 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 8',\n   [3,\n    4,\n    4,\n    [[False, True],\n     [True, False],\n     [True, True],\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     [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,\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    False,\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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 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 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 11',\n   [5,\n    5,\n    0,\n    [[True, False],\n     [True, True],\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     [True, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True]]],\n   [False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 5',\n   [3,\n    5,\n    2,\n    [[False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, 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   [False,\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    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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   [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 5',\n   [5,\n    3,\n    2,\n    [[True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, False],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, False],\n     [True, True],\n     [True, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, False],\n     [False, True]]],\n   [False,\n    False,\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    True,\n    True,\n    False,\n    False,\n    False]],\n  ['regression: scenario 9',\n   [3,\n    4,\n    0,\n    [[False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, False],\n     [False, False],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [False, True],\n     [True, True],\n     [False, True],\n     [False, True],\n     [False, True]]],\n   [False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False]],\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  ['control: safety during min on',\n   [5,\n    3,\n    0,\n    [[True, True], [False, True], [False, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, True, True]],\n  ['control: safety then quick recall',\n   [2,\n    4,\n    0,\n    [[True, True], [True, True], [True, False], [True, True], [True, True], [True, True], [True, True]]],\n   [True, True, False, False, False, False, True]],\n  ['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   [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-min-on-boundary","generated_at":"2026-09-29T14:51:45.219620+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 minimum on test uses > instead of >=.","sha256":"4e9c8c9b794fe883cf74c1dbcd2d0bdfce320139b5f2c711620cb0f6be190e86","title":"Minimum on time holds the compressor one minute too long · 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.527,"exit_code":1,"observations":[{"actual":[false,false,true,true,false,false,false,false,true,false,false],"check":"regression: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":false},{"actual":[true,false,false,false,true,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":false},{"actual":[true,true,false,false,false,true,true],"check":"control: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"control: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":true},{"actual":[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":"control: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,false,false],"check":"control: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true},{"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, false, false, false, false, true, false, false], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: exact min on\", \"actual\": [true, false, false, false, true, true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"control: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: 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\": \"control: scenario 2\", \"actual\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, true, false, false], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": true}, {\"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.354,"exit_code":1,"observations":[{"actual":[false,false,true,true,true,true,true,true,true,false,false],"check":"regression: min on and off","expected":[false,false,true,true,true,false,false,false,false,false,true],"passed":false},{"actual":[true,true,true,true,true,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":false},{"actual":[true,true,false,false,false,true,true],"check":"control: safety during min on","expected":[true,true,false,false,false,true,true],"passed":true},{"actual":[true,true,false,false,false,false,true],"check":"control: safety then quick recall","expected":[true,true,false,false,false,false,true],"passed":true},{"actual":[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":"control: scenario 2","expected":[true,true,true,false,false,false,true,true,false,false,false,false,false,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,false,false],"check":"control: scenario 3","expected":[true,true,true,true,false,false,false,false,true,false,false],"passed":true},{"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, true, true, true, true, false, false], \"expected\": [false, false, true, true, true, false, false, false, false, false, true], \"passed\": false}, {\"check\": \"regression: exact min on\", \"actual\": [true, true, true, true, true, true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true, false, false, false, true, true], \"passed\": false}, {\"check\": \"control: safety during min on\", \"actual\": [true, true, false, false, false, true, true], \"expected\": [true, true, false, false, false, true, true], \"passed\": true}, {\"check\": \"control: safety then quick recall\", \"actual\": [true, true, false, false, false, false, true], \"expected\": [true, true, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: 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\": \"control: scenario 2\", \"actual\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"expected\": [true, true, true, false, false, false, true, true, false, false, false, false, false, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, true, true, false, false, false, false, true, false, false], \"expected\": [true, true, true, true, false, false, false, false, true, false, false], \"passed\": true}, {\"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."}}