FAILURE MAP
← Case archive

FA-92591 / HVAC thermostat control / Open access

Circulation ignores fan minutes run for heating or cooling · case 01

The fan runs a full 20 extra minutes in hours that already had long cooling calls.

Verified by executionVariant 1 · 8 checks per implementationDownload source bundle ↓JSON ↗

ROOT CAUSE

Only minutes where circulation itself turned the fan on are counted.

VERIFIED REPAIR

Count every fan minute toward the hourly requirement.

Unsuccessful approach: Counting fan minutes only when no call is active still ignores fan time during calls.

Case contract

Thermostat G (blower) output per minute; samples are the equipment call per minute (None, heat or cool). Cooling runs the fan immediately and keeps it on 2 minutes after the call ends. Heating starts the fan only from the second minute of a heat call (heat exchanger warm-up) and, if the fan had started, keeps it on 3 minutes after the call. Fan mode on forces the fan on. Circulate mode ensures at least 20 fan minutes per clock hour (minutes 0-59, 60-119, ...), counting all fan minutes, by running the fan once the remaining minutes in the hour equal the remaining requirement. Return the fan state per minute.

Why this case matters

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.

1 / The failure

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(mode, samples):
    fan_after = 0
    heat_run = 0
    ran = 0
    out = []
    for minute, call in enumerate(samples):
        if minute % 60 == 0:
            ran = 0
        if call == 'cool':
            fan = True
            fan_after = 2
            heat_run = 0
        elif call == 'heat':
            heat_run += 1
            fan = heat_run > 1
            fan_after = 3 if fan else 0
        else:
            heat_run = 0
            fan = fan_after > 0
            if fan_after > 0:
                fan_after -= 1
        if mode == 'on':
            fan = True
        elif mode == 'circ' and not fan and 20 - ran >= 60 - minute % 60:
            fan = True
            ran += 1
        out.append(fan)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 1',
   ['circ',
    [None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 2',
   ['on', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [True, True, True, True, True, True, True, True, True, True, True, True]],
  ['control: scenario 3',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 4',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True]],
  ['regression: scenario 10',
   ['circ',
    ['heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None]],
   [False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 7',
   ['circ',
    [None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['regression: scenario 1',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'heat',
     'cool',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    True,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: scenario 2',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False]]],
 [['regression: scenario 51',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['regression: scenario 54',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['auto', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [False, False, False, False, False, False, False, False, False, False, False, False]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: circulate fills hour[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True]Failed
regression: scenario 1[False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False][False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False]Failed
control: cool and heat purge[True, True, True, True, False, False, True, True, True, True, True, False][True, True, True, True, False, False, True, True, True, True, True, False]Passed
control: heat right after cool[True, False, True, True, True, True, False][True, False, True, True, True, True, False]Passed
control: short heat call[False, False, False, False, True, True, True, True, False][False, False, False, False, True, True, True, True, False]Passed
control: scenario 2[True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 3[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 4[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed

SHA-256 / 6c7a89df79949706a666324fcfcac5796e8063ed0576fa229b79b1ff32b0e1b5

2 / The unsuccessful fix

Exit 1
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(mode, samples):
    fan_after = 0
    heat_run = 0
    ran = 0
    out = []
    for minute, call in enumerate(samples):
        if minute % 60 == 0:
            ran = 0
        if call == 'cool':
            fan = True
            fan_after = 2
            heat_run = 0
        elif call == 'heat':
            heat_run += 1
            fan = heat_run > 1
            fan_after = 3 if fan else 0
        else:
            heat_run = 0
            fan = fan_after > 0
            if fan_after > 0:
                fan_after -= 1
        if mode == 'on':
            fan = True
        elif mode == 'circ' and not fan and 20 - ran >= 60 - minute % 60:
            fan = True
        if fan and call is None:
            ran += 1
        out.append(fan)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 1',
   ['circ',
    [None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 2',
   ['on', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [True, True, True, True, True, True, True, True, True, True, True, True]],
  ['control: scenario 3',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 4',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True]],
  ['regression: scenario 10',
   ['circ',
    ['heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None]],
   [False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 7',
   ['circ',
    [None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['regression: scenario 1',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'heat',
     'cool',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    True,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: scenario 2',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False]]],
 [['regression: scenario 51',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['regression: scenario 54',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['auto', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [False, False, False, False, False, False, False, False, False, False, False, False]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: circulate fills hour[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True]Failed
regression: scenario 1[False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False][False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False]Failed
control: cool and heat purge[True, True, True, True, False, False, True, True, True, True, True, False][True, True, True, True, False, False, True, True, True, True, True, False]Passed
control: heat right after cool[True, False, True, True, True, True, False][True, False, True, True, True, True, False]Passed
control: short heat call[False, False, False, False, True, True, True, True, False][False, False, False, False, True, True, True, True, False]Passed
control: scenario 2[True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 3[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 4[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed

SHA-256 / 2475626bde7b98d26220a02dea0cfa4ee0afd446dabae345ec501019c83982ff

3 / The verified repair

Exit 0
"""Failure Map reference implementation. Python standard library only."""
import json

N = 1
observations = []
def solve(mode, samples):
    fan_after = 0
    heat_run = 0
    ran = 0
    out = []
    for minute, call in enumerate(samples):
        if minute % 60 == 0:
            ran = 0
        if call == 'cool':
            fan = True
            fan_after = 2
            heat_run = 0
        elif call == 'heat':
            heat_run += 1
            fan = heat_run > 1
            fan_after = 3 if fan else 0
        else:
            heat_run = 0
            fan = fan_after > 0
            if fan_after > 0:
                fan_after -= 1
        if mode == 'on':
            fan = True
        elif mode == 'circ' and not fan and 20 - ran >= 60 - minute % 60:
            fan = True
        if fan:
            ran += 1
        out.append(fan)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 1',
   ['circ',
    [None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 2',
   ['on', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [True, True, True, True, True, True, True, True, True, True, True, True]],
  ['control: scenario 3',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 4',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True]],
  ['regression: scenario 10',
   ['circ',
    ['heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None]],
   [False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    ['cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 7',
   ['circ',
    [None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['on',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None]],
   [True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]]],
 [['regression: scenario 6',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     'cool',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['regression: scenario 8',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['regression: scenario 1',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'heat',
     'cool',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    True,
    False,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['control: scenario 2',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False]]],
 [['regression: scenario 51',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False]],
  ['regression: scenario 54',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     None,
     None,
     None,
     None,
     None,
     'heat',
     'heat',
     'heat',
     'heat',
     'heat']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True]],
  ['control: cool and heat purge',
   ['auto', ['cool', 'cool', None, None, None, 'heat', 'heat', 'heat', None, None, None, None]],
   [True, True, True, True, False, False, True, True, True, True, True, False]],
  ['regression: circulate fills hour',
   ['circ',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None]],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: heat right after cool',
   ['auto', ['cool', 'heat', 'heat', None, None, None, None]],
   [True, False, True, True, True, True, False]],
  ['control: short heat call',
   ['auto', ['heat', None, None, 'heat', 'heat', None, None, None, None]],
   [False, False, False, False, True, True, True, True, False]],
  ['control: scenario 1',
   ['auto',
    [None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     None,
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool',
     'cool']],
   [False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    False,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True,
    True]],
  ['control: scenario 2',
   ['auto', [None, None, None, None, None, None, None, None, None, None, None, None]],
   [False, False, False, False, False, False, False, False, False, False, False, False]]]]
for label, args, expected in fixtures[N-1]:
    check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
Boundary fixtureActualExpectedOutcome
regression: circulate fills hour[False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True][False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed
regression: scenario 1[False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False][False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, True, True, True, True, True, True, True, True, True, True, True, False, False, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, False, False, False, False, False]Passed
control: cool and heat purge[True, True, True, True, False, False, True, True, True, True, True, False][True, True, True, True, False, False, True, True, True, True, True, False]Passed
control: heat right after cool[True, False, True, True, True, True, False][True, False, True, True, True, True, False]Passed
control: short heat call[False, False, False, False, True, True, True, True, False][False, False, False, False, True, True, True, True, False]Passed
control: scenario 2[True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 3[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed
control: scenario 4[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True][True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]Passed

SHA-256 / 00bef050cb876906310ee092d4549574d15f41e75e3cc451646380719566e390

Verification & scope

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.

Observations recorded using Python 3.12.14 at 2026-09-29T14:51:47.122595+00:00.

Case digest / 1d402bdd08434700d0a9ba502a03224fc38b2a19db8d966ca4716e6e5c77d64f