FAILURE MAP
← Case archive

FA-92701 / HVAC thermostat control / Open access

Manual reset leaves the trip history in place · case 01

After a hard-lockout reset the next single trip hard-locks the unit again.

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

ROOT CAUSE

Reset clears the state but not the trip history.

VERIFIED REPAIR

Reset clears the trip history along with the lockout.

Unsuccessful approach: Pruning only expired trips on reset still keeps the recent ones.

Case contract

Compressor pressure-switch lockout per minute; samples are [call, hp_ok, lp_ok] where call may also be "reset". While running, an open high-pressure switch trips at once; the low-pressure switch is ignored for the first 2 minutes after start. A trip enters a 5-minute soft lockout, after which the unit retries automatically if still called. The third trip within a sliding 60-minute window (trips older than 60 minutes are forgotten) causes a hard lockout that only reset clears; reset also clears the trip history. Return run, idle, soft or hard 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(samples):
    state = 'idle'
    trips = []
    start_at = None
    soft_until = None
    out = []
    for minute, (call, hp_ok, lp_ok) in enumerate(samples):
        if call == 'reset':
            state = 'idle'
            out.append(state)
            continue
        if state == 'soft' and minute >= soft_until:
            state = 'idle'
        if state == 'run':
            lp_fault = not lp_ok and minute - start_at >= 2
            if not hp_ok or lp_fault:
                trips = [t for t in trips if minute - t < 60] + [minute]
                if len(trips) >= 3:
                    state = 'hard'
                else:
                    state = 'soft'
                    soft_until = minute + 5
            elif not call:
                state = 'idle'
        if state == 'idle' and call:
            state = 'run'
            start_at = minute
        out.append(state)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: trip late in long run',
   [[[True, 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, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']]],
 [['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['regression: scenario 4',
   [[[True, True, True],
     [True, True, True],
     [False, True, True],
     [True, False, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [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],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True]]],
   ['run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, False, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False]]],
   ['run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['regression: scenario 3',
   [[[True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [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, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, 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],
     [True, False, True],
     [False, True, True],
     ['reset', True, False],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, False]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     ['reset', True, False],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, False],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, 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],
     [True, True, False],
     [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]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run']],
  ['regression: scenario 5',
   [[[True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [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],
     [False, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 6',
   [[[True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [False, 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, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     ['reset', 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, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True]]],
   ['run',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'idle',
    'run']],
  ['regression: scenario 9',
   [[[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, 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],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [False, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]]]
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: three trips hard lockout['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'hard', 'hard']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'soft', 'soft']Failed
regression: reset during hard with recent trips['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft']Failed
control: low pressure bypass and retry['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']Passed
control: high pressure during suction dip['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed
control: high pressure at start['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']Passed
control: trip exactly an hour old['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']Passed
control: old trips expire['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']Passed
control: trip late in long run['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed

SHA-256 / 4137d6d834b7b2419d0d5f181c7877a26187261cf371e68a2b5e043d37215345

2 / The unsuccessful fix

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

N = 1
observations = []
def solve(samples):
    state = 'idle'
    trips = []
    start_at = None
    soft_until = None
    out = []
    for minute, (call, hp_ok, lp_ok) in enumerate(samples):
        if call == 'reset':
            state = 'idle'
            trips = [t for t in trips if minute - t < 60]
            out.append(state)
            continue
        if state == 'soft' and minute >= soft_until:
            state = 'idle'
        if state == 'run':
            lp_fault = not lp_ok and minute - start_at >= 2
            if not hp_ok or lp_fault:
                trips = [t for t in trips if minute - t < 60] + [minute]
                if len(trips) >= 3:
                    state = 'hard'
                else:
                    state = 'soft'
                    soft_until = minute + 5
            elif not call:
                state = 'idle'
        if state == 'idle' and call:
            state = 'run'
            start_at = minute
        out.append(state)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: trip late in long run',
   [[[True, 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, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']]],
 [['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['regression: scenario 4',
   [[[True, True, True],
     [True, True, True],
     [False, True, True],
     [True, False, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [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],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True]]],
   ['run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, False, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False]]],
   ['run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['regression: scenario 3',
   [[[True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [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, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, 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],
     [True, False, True],
     [False, True, True],
     ['reset', True, False],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, False]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     ['reset', True, False],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, False],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, 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],
     [True, True, False],
     [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]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run']],
  ['regression: scenario 5',
   [[[True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [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],
     [False, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 6',
   [[[True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [False, 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, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     ['reset', 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, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True]]],
   ['run',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'idle',
    'run']],
  ['regression: scenario 9',
   [[[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, 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],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [False, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]]]
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: three trips hard lockout['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'hard', 'hard']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'soft', 'soft']Failed
regression: reset during hard with recent trips['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard', 'hard']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft']Failed
control: low pressure bypass and retry['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']Passed
control: high pressure during suction dip['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed
control: high pressure at start['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']Passed
control: trip exactly an hour old['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']Passed
control: old trips expire['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']Passed
control: trip late in long run['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed

SHA-256 / 64975e8fab541c187489fcaadca1bafb3e4304f79c65df6522d9eefdeb387551

3 / The verified repair

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

N = 1
observations = []
def solve(samples):
    state = 'idle'
    trips = []
    start_at = None
    soft_until = None
    out = []
    for minute, (call, hp_ok, lp_ok) in enumerate(samples):
        if call == 'reset':
            state = 'idle'
            trips = []
            out.append(state)
            continue
        if state == 'soft' and minute >= soft_until:
            state = 'idle'
        if state == 'run':
            lp_fault = not lp_ok and minute - start_at >= 2
            if not hp_ok or lp_fault:
                trips = [t for t in trips if minute - t < 60] + [minute]
                if len(trips) >= 3:
                    state = 'hard'
                else:
                    state = 'soft'
                    soft_until = minute + 5
            elif not call:
                state = 'idle'
        if state == 'idle' and call:
            state = 'run'
            start_at = minute
        out.append(state)
    return out
def check(label, actual, expected):
    observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']],
  ['control: trip late in long run',
   [[[True, 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, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']]],
 [['regression: reset during hard with recent trips',
   [[[True, True, True],
     [True, False, 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, False, True],
     ['reset', 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, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft']],
  ['regression: scenario 4',
   [[[True, True, True],
     [True, True, True],
     [False, True, True],
     [True, False, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [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],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True]]],
   ['run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, False, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, False],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False]]],
   ['run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'idle',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard']],
  ['regression: scenario 3',
   [[[True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [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, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, 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],
     [True, False, True],
     [False, True, True],
     ['reset', True, False],
     [True, True, True],
     [False, True, True],
     [True, True, False],
     [True, True, False]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 2',
   [[[True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     ['reset', True, False],
     [True, True, True],
     [True, False, True],
     [False, 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],
     [False, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, False],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [False, 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],
     [True, True, False],
     [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]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run']],
  ['regression: scenario 5',
   [[[True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [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],
     [False, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'idle',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]],
 [['regression: scenario 6',
   [[[True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [False, 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, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, False],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     ['reset', 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, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [False, True, True],
     [True, True, True]]],
   ['run',
    'idle',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'hard',
    'idle',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'idle',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'idle',
    'run',
    'idle',
    'run']],
  ['regression: scenario 9',
   [[[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, 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],
     ['reset', True, True],
     [True, True, True],
     [True, True, True],
     [False, True, False],
     [True, True, True],
     [True, True, True],
     [True, False, True],
     [True, True, False],
     [True, True, True],
     [False, False, True],
     [True, True, True],
     [True, True, False],
     [True, True, True],
     [False, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'idle',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run']],
  ['control: low pressure bypass and retry',
   [[[True, True, True],
     [True, True, False],
     [True, True, 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, False],
     [True, True, False],
     [True, True, False],
     [True, True, True]]],
   ['run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft']],
  ['regression: three trips hard lockout',
   [[[True, True, True],
     [True, False, 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, False, True],
     [True, True, True],
     ['reset', True, True],
     [True, True, True],
     [True, False, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'hard',
    'hard',
    'idle',
    'run',
    'soft',
    'soft']],
  ['control: high pressure during suction dip',
   [[[True, True, True],
     [True, False, False],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']],
  ['control: high pressure at start',
   [[[True, True, True],
     [True, False, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True]]],
   ['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']],
  ['control: trip exactly an hour old',
   [[[True, True, True],
     [True, False, 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, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft',
    'soft']],
  ['control: old trips expire',
   [[[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, 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],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, True, True],
     [True, 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, True],
     [True, True, True]]],
   ['run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'soft',
    'soft',
    'soft',
    'soft',
    'soft',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'run',
    'soft',
    'soft']]]]
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: three trips hard lockout['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'hard', 'idle', 'run', 'soft', 'soft']Passed
regression: reset during hard with recent trips['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'hard', 'idle', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft']Passed
control: low pressure bypass and retry['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']['run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft']Passed
control: high pressure during suction dip['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed
control: high pressure at start['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run']Passed
control: trip exactly an hour old['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft']Passed
control: old trips expire['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']['run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft']Passed
control: trip late in long run['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']['run', 'run', 'run', 'run', 'run', 'run', 'run', 'run', 'soft', 'soft', 'soft', 'soft', 'soft', 'run', 'run', 'run']Passed

SHA-256 / a777bb04fef28ca94a43219fe9a6a9d0f2a651b5a3d2a20ff067b234d486b469

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:48.361859+00:00.

Case digest / e573a98ffac019d66b8d923a0989019a72e8b03df1c341d3773803fc9ff04bf2