FA-92766 / HVAC thermostat control / Open access
Optimal start drops back to setback as the space warms · case 01
The setpoint oscillates between occupied and setback during recovery.
ROOT CAUSE
The recovery decision is recomputed every minute instead of latched.
VERIFIED REPAIR
Latch recovery once it starts.
Unsuccessful approach: Releasing recovery only once the space reaches the occupied setpoint still returns to setback before occupancy.
Case contract
Optimal start for a heating setback, sampled per minute from minute 0; rate is the recovery rate in tenths F per hour. While not recovering, required minutes = ceil(max(0, occ_sp - temp) * 60 / rate); recovery starts (and latches) when minutes left until occupancy <= required, but never more than 180 minutes early, and in any case at occupancy. Return the active setpoint 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(occ_minute, occ_sp, unocc_sp, rate, temps):
recovering = False
out = []
for minute, temp in enumerate(temps):
left = occ_minute - minute
need = occ_sp - temp
recovering = False
if not recovering:
required = -(-max(0, need) * 60 // rate)
if left <= 0 or (left <= required and left <= 180):
recovering = True
out.append(occ_sp if recovering else unocc_sp)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
30,
[604,
604,
605,
605,
605,
607,
609,
611,
611,
611,
612,
612,
614,
615,
617,
619,
620,
620,
620,
620,
621,
621,
623,
623,
623,
623,
624,
625,
626,
626,
628,
629,
630,
630,
631,
632,
633,
633,
633,
635,
636,
638,
640,
640,
640,
641,
643,
643,
645,
646,
646,
646,
648,
648,
648,
648,
648,
648,
648,
650,
651,
651,
651,
652]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
240,
[603,
603,
605,
606,
606,
607,
607,
608,
608,
608,
608,
608,
608,
608,
608,
608,
610,
611,
612,
613,
615,
615,
615,
617,
617,
619,
619,
620,
620,
620,
622,
624,
624,
624,
625,
625,
625,
626,
626,
628,
630,
631,
632,
634,
636,
638,
638,
638,
638,
639,
640,
642,
644,
645,
645,
646,
646,
647,
648,
650,
652,
654,
656,
656,
656,
657,
659,
659]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[45,
700,
600,
120,
[619,
619,
619,
620,
620,
620,
620,
620,
620,
620,
620,
622,
622,
622,
623,
623,
625,
627,
627,
628,
629,
629,
629,
629,
630,
631,
631,
631,
632,
633,
635,
635,
636,
636,
638,
639,
640,
640,
641,
641,
641,
641,
643,
643,
643,
643,
643,
643,
644,
646,
646,
646,
648]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: scenario 12',
[30,
700,
600,
60,
[679,
680,
682,
682,
682,
682,
682,
682,
683,
685,
687,
689,
690,
692,
692,
692,
692,
692,
692,
694,
695,
696,
696,
696,
696,
696,
696,
698,
698,
699,
699,
699,
699,
699,
700,
701,
701,
701]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 15',
[45,
700,
600,
30,
[677,
677,
679,
680,
681,
681,
681,
681,
683,
683,
683,
684,
686,
686,
686,
688,
688,
689,
691,
693,
693,
693,
693,
693,
694,
695,
695,
696,
696,
696,
697,
699,
700,
700,
700,
700,
701,
703,
704,
706,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
240,
[689,
689,
689,
689,
690,
692,
693,
695,
696,
697,
697,
699,
700,
702,
703,
703,
703,
703,
704,
704,
706,
707,
707,
708,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 59',
[60,
700,
600,
30,
[663,
663,
665,
666,
668,
669,
671,
671,
672,
672,
672,
674,
676,
678,
678,
679,
679,
679,
680,
680,
680,
680,
680,
680,
680,
682,
683,
684,
685,
685,
686,
687,
689,
689,
689,
690,
691,
691,
692,
692,
692,
693,
693,
694,
695,
695,
695,
696,
698,
700,
702,
704,
705,
706,
706,
706,
706,
706,
706,
706,
708,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[45,
700,
600,
90,
[624,
624,
626,
627,
627,
628,
628,
628,
630,
632,
633,
635,
636,
638,
638,
638,
640,
640,
640,
640,
641,
642,
642,
644,
644,
644,
646,
646,
647,
647,
649,
651,
652,
653,
655,
655,
656,
656,
657,
657,
657,
659,
660,
662,
662,
663,
663,
663,
664]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[652,
652,
652,
652,
654,
656,
658,
658,
658,
659,
659,
661,
661,
661,
663,
664,
664,
664,
665,
665,
667,
668,
668,
668,
669,
671,
671,
671,
671,
671,
671,
671,
671,
671,
672,
673,
673,
673,
675,
677,
677,
678,
678,
678,
679,
681,
682,
684,
684,
686,
686,
688,
689,
690,
690,
690,
691,
691,
691,
692,
692,
692,
693,
694]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
60,
[658,
660,
660,
661,
661,
661,
661,
663,
663,
663,
663,
665,
665,
665,
666,
666,
667,
669,
669,
669,
670,
670,
671,
671,
672,
672,
672,
672,
672,
672,
672,
674,
674,
674,
674,
674,
674,
676,
676,
676,
678,
679,
681,
681,
681,
681,
681,
681,
683,
683,
683,
683,
683,
685,
686,
687,
687,
687,
689,
691,
692,
694,
694,
694,
694,
696,
696,
696,
698,
699,
701,
702,
702,
703,
703,
703,
704,
706,
707,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[673,
674,
675,
676,
678,
680,
682,
684,
684,
684,
686,
687,
688,
690,
692,
693,
694,
694,
694,
695,
696,
696,
696,
696,
698,
699,
699,
701,
701,
701,
702,
704,
706,
708,
708,
708,
708,
708,
709,
709,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[200,
700,
600,
120,
[616,
618,
620,
620,
620,
621,
622,
622,
623,
624,
625,
626,
626,
626,
626,
628,
629,
631,
631,
632,
632,
634,
634,
634,
634,
636,
636,
637,
639,
639,
640,
641,
641,
641,
641,
641,
642,
642,
642,
642,
642,
644,
644,
645,
645,
645,
645,
647,
648,
649,
649,
650,
651,
653,
655,
657,
657,
658,
658,
659,
659,
659,
660,
660,
660,
661,
661,
661,
661,
661,
662,
663,
664,
664,
665,
665,
666,
666,
666,
668,
669,
669,
669,
669,
671,
671,
671,
672,
672,
674,
674,
676,
676,
676,
676,
676,
676,
678,
678,
679,
679,
681,
681,
683,
683,
683,
685,
686,
687,
687,
688,
689,
691,
692,
694,
695,
697,
697,
698,
698,
698,
698,
700,
700,
701,
702,
702,
702,
703,
703,
703,
703,
705,
707,
707,
707,
707,
708,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 32',
[60,
700,
600,
30,
[664,
664,
666,
666,
666,
666,
666,
668,
670,
671,
671,
672,
673,
674,
674,
676,
677,
677,
678,
678,
678,
678,
679,
679,
679,
679,
681,
682,
683,
684,
685,
686,
687,
688,
689,
689,
691,
692,
692,
692,
692,
693,
693,
695,
695,
695,
695,
695,
695,
697,
697,
697,
698,
699,
699,
701,
702,
702,
702,
702,
704,
704,
705,
705,
705,
707]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
120,
[674,
676,
677,
677,
678,
678,
679,
679,
681,
682,
684,
686,
687,
687,
687,
687,
687,
689,
690,
692,
694,
696,
697,
697,
697,
698,
700,
700,
702,
702,
703,
703,
704,
705,
707,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[690,
692,
694,
695,
697,
697,
697,
697,
697,
697,
698,
699,
699,
699,
699,
700,
700,
700,
700,
702,
704,
705,
705,
705,
706,
706,
707,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: warming before occupancy | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Failed |
| control: steady recovery | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: fractional minutes | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit boundary | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: scenario 1 | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 2 | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 3 | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
SHA-256 / 721a45792cbee30d390960a1b20b5ec1f72521c6a3e98a279eb7011ab07683a0
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(occ_minute, occ_sp, unocc_sp, rate, temps):
recovering = False
out = []
for minute, temp in enumerate(temps):
left = occ_minute - minute
need = occ_sp - temp
if recovering and temp >= occ_sp:
recovering = False
if not recovering:
required = -(-max(0, need) * 60 // rate)
if left <= 0 or (left <= required and left <= 180):
recovering = True
out.append(occ_sp if recovering else unocc_sp)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
30,
[604,
604,
605,
605,
605,
607,
609,
611,
611,
611,
612,
612,
614,
615,
617,
619,
620,
620,
620,
620,
621,
621,
623,
623,
623,
623,
624,
625,
626,
626,
628,
629,
630,
630,
631,
632,
633,
633,
633,
635,
636,
638,
640,
640,
640,
641,
643,
643,
645,
646,
646,
646,
648,
648,
648,
648,
648,
648,
648,
650,
651,
651,
651,
652]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
240,
[603,
603,
605,
606,
606,
607,
607,
608,
608,
608,
608,
608,
608,
608,
608,
608,
610,
611,
612,
613,
615,
615,
615,
617,
617,
619,
619,
620,
620,
620,
622,
624,
624,
624,
625,
625,
625,
626,
626,
628,
630,
631,
632,
634,
636,
638,
638,
638,
638,
639,
640,
642,
644,
645,
645,
646,
646,
647,
648,
650,
652,
654,
656,
656,
656,
657,
659,
659]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[45,
700,
600,
120,
[619,
619,
619,
620,
620,
620,
620,
620,
620,
620,
620,
622,
622,
622,
623,
623,
625,
627,
627,
628,
629,
629,
629,
629,
630,
631,
631,
631,
632,
633,
635,
635,
636,
636,
638,
639,
640,
640,
641,
641,
641,
641,
643,
643,
643,
643,
643,
643,
644,
646,
646,
646,
648]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: scenario 12',
[30,
700,
600,
60,
[679,
680,
682,
682,
682,
682,
682,
682,
683,
685,
687,
689,
690,
692,
692,
692,
692,
692,
692,
694,
695,
696,
696,
696,
696,
696,
696,
698,
698,
699,
699,
699,
699,
699,
700,
701,
701,
701]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 15',
[45,
700,
600,
30,
[677,
677,
679,
680,
681,
681,
681,
681,
683,
683,
683,
684,
686,
686,
686,
688,
688,
689,
691,
693,
693,
693,
693,
693,
694,
695,
695,
696,
696,
696,
697,
699,
700,
700,
700,
700,
701,
703,
704,
706,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
240,
[689,
689,
689,
689,
690,
692,
693,
695,
696,
697,
697,
699,
700,
702,
703,
703,
703,
703,
704,
704,
706,
707,
707,
708,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 59',
[60,
700,
600,
30,
[663,
663,
665,
666,
668,
669,
671,
671,
672,
672,
672,
674,
676,
678,
678,
679,
679,
679,
680,
680,
680,
680,
680,
680,
680,
682,
683,
684,
685,
685,
686,
687,
689,
689,
689,
690,
691,
691,
692,
692,
692,
693,
693,
694,
695,
695,
695,
696,
698,
700,
702,
704,
705,
706,
706,
706,
706,
706,
706,
706,
708,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[45,
700,
600,
90,
[624,
624,
626,
627,
627,
628,
628,
628,
630,
632,
633,
635,
636,
638,
638,
638,
640,
640,
640,
640,
641,
642,
642,
644,
644,
644,
646,
646,
647,
647,
649,
651,
652,
653,
655,
655,
656,
656,
657,
657,
657,
659,
660,
662,
662,
663,
663,
663,
664]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[652,
652,
652,
652,
654,
656,
658,
658,
658,
659,
659,
661,
661,
661,
663,
664,
664,
664,
665,
665,
667,
668,
668,
668,
669,
671,
671,
671,
671,
671,
671,
671,
671,
671,
672,
673,
673,
673,
675,
677,
677,
678,
678,
678,
679,
681,
682,
684,
684,
686,
686,
688,
689,
690,
690,
690,
691,
691,
691,
692,
692,
692,
693,
694]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
60,
[658,
660,
660,
661,
661,
661,
661,
663,
663,
663,
663,
665,
665,
665,
666,
666,
667,
669,
669,
669,
670,
670,
671,
671,
672,
672,
672,
672,
672,
672,
672,
674,
674,
674,
674,
674,
674,
676,
676,
676,
678,
679,
681,
681,
681,
681,
681,
681,
683,
683,
683,
683,
683,
685,
686,
687,
687,
687,
689,
691,
692,
694,
694,
694,
694,
696,
696,
696,
698,
699,
701,
702,
702,
703,
703,
703,
704,
706,
707,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[673,
674,
675,
676,
678,
680,
682,
684,
684,
684,
686,
687,
688,
690,
692,
693,
694,
694,
694,
695,
696,
696,
696,
696,
698,
699,
699,
701,
701,
701,
702,
704,
706,
708,
708,
708,
708,
708,
709,
709,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[200,
700,
600,
120,
[616,
618,
620,
620,
620,
621,
622,
622,
623,
624,
625,
626,
626,
626,
626,
628,
629,
631,
631,
632,
632,
634,
634,
634,
634,
636,
636,
637,
639,
639,
640,
641,
641,
641,
641,
641,
642,
642,
642,
642,
642,
644,
644,
645,
645,
645,
645,
647,
648,
649,
649,
650,
651,
653,
655,
657,
657,
658,
658,
659,
659,
659,
660,
660,
660,
661,
661,
661,
661,
661,
662,
663,
664,
664,
665,
665,
666,
666,
666,
668,
669,
669,
669,
669,
671,
671,
671,
672,
672,
674,
674,
676,
676,
676,
676,
676,
676,
678,
678,
679,
679,
681,
681,
683,
683,
683,
685,
686,
687,
687,
688,
689,
691,
692,
694,
695,
697,
697,
698,
698,
698,
698,
700,
700,
701,
702,
702,
702,
703,
703,
703,
703,
705,
707,
707,
707,
707,
708,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 32',
[60,
700,
600,
30,
[664,
664,
666,
666,
666,
666,
666,
668,
670,
671,
671,
672,
673,
674,
674,
676,
677,
677,
678,
678,
678,
678,
679,
679,
679,
679,
681,
682,
683,
684,
685,
686,
687,
688,
689,
689,
691,
692,
692,
692,
692,
693,
693,
695,
695,
695,
695,
695,
695,
697,
697,
697,
698,
699,
699,
701,
702,
702,
702,
702,
704,
704,
705,
705,
705,
707]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
120,
[674,
676,
677,
677,
678,
678,
679,
679,
681,
682,
684,
686,
687,
687,
687,
687,
687,
689,
690,
692,
694,
696,
697,
697,
697,
698,
700,
700,
702,
702,
703,
703,
704,
705,
707,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[690,
692,
694,
695,
697,
697,
697,
697,
697,
697,
698,
699,
699,
699,
699,
700,
700,
700,
700,
702,
704,
705,
705,
705,
706,
706,
707,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: warming before occupancy | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Failed |
| control: steady recovery | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: fractional minutes | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit boundary | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: scenario 1 | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 2 | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 3 | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
SHA-256 / 112b52e37fb88d1239911a5ca72df3a470a917c118cd30431997ad725ab4d776
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(occ_minute, occ_sp, unocc_sp, rate, temps):
recovering = False
out = []
for minute, temp in enumerate(temps):
left = occ_minute - minute
need = occ_sp - temp
if not recovering:
required = -(-max(0, need) * 60 // rate)
if left <= 0 or (left <= required and left <= 180):
recovering = True
out.append(occ_sp if recovering else unocc_sp)
return out
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
30,
[604,
604,
605,
605,
605,
607,
609,
611,
611,
611,
612,
612,
614,
615,
617,
619,
620,
620,
620,
620,
621,
621,
623,
623,
623,
623,
624,
625,
626,
626,
628,
629,
630,
630,
631,
632,
633,
633,
633,
635,
636,
638,
640,
640,
640,
641,
643,
643,
645,
646,
646,
646,
648,
648,
648,
648,
648,
648,
648,
650,
651,
651,
651,
652]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
240,
[603,
603,
605,
606,
606,
607,
607,
608,
608,
608,
608,
608,
608,
608,
608,
608,
610,
611,
612,
613,
615,
615,
615,
617,
617,
619,
619,
620,
620,
620,
622,
624,
624,
624,
625,
625,
625,
626,
626,
628,
630,
631,
632,
634,
636,
638,
638,
638,
638,
639,
640,
642,
644,
645,
645,
646,
646,
647,
648,
650,
652,
654,
656,
656,
656,
657,
659,
659]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[45,
700,
600,
120,
[619,
619,
619,
620,
620,
620,
620,
620,
620,
620,
620,
622,
622,
622,
623,
623,
625,
627,
627,
628,
629,
629,
629,
629,
630,
631,
631,
631,
632,
633,
635,
635,
636,
636,
638,
639,
640,
640,
641,
641,
641,
641,
643,
643,
643,
643,
643,
643,
644,
646,
646,
646,
648]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: scenario 12',
[30,
700,
600,
60,
[679,
680,
682,
682,
682,
682,
682,
682,
683,
685,
687,
689,
690,
692,
692,
692,
692,
692,
692,
694,
695,
696,
696,
696,
696,
696,
696,
698,
698,
699,
699,
699,
699,
699,
700,
701,
701,
701]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 15',
[45,
700,
600,
30,
[677,
677,
679,
680,
681,
681,
681,
681,
683,
683,
683,
684,
686,
686,
686,
688,
688,
689,
691,
693,
693,
693,
693,
693,
694,
695,
695,
696,
696,
696,
697,
699,
700,
700,
700,
700,
701,
703,
704,
706,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[60,
700,
600,
240,
[689,
689,
689,
689,
690,
692,
693,
695,
696,
697,
697,
699,
700,
702,
703,
703,
703,
703,
704,
704,
706,
707,
707,
708,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 59',
[60,
700,
600,
30,
[663,
663,
665,
666,
668,
669,
671,
671,
672,
672,
672,
674,
676,
678,
678,
679,
679,
679,
680,
680,
680,
680,
680,
680,
680,
682,
683,
684,
685,
685,
686,
687,
689,
689,
689,
690,
691,
691,
692,
692,
692,
693,
693,
694,
695,
695,
695,
696,
698,
700,
702,
704,
705,
706,
706,
706,
706,
706,
706,
706,
708,
710,
710,
710]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[45,
700,
600,
90,
[624,
624,
626,
627,
627,
628,
628,
628,
630,
632,
633,
635,
636,
638,
638,
638,
640,
640,
640,
640,
641,
642,
642,
644,
644,
644,
646,
646,
647,
647,
649,
651,
652,
653,
655,
655,
656,
656,
657,
657,
657,
659,
660,
662,
662,
663,
663,
663,
664]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[652,
652,
652,
652,
654,
656,
658,
658,
658,
659,
659,
661,
661,
661,
663,
664,
664,
664,
665,
665,
667,
668,
668,
668,
669,
671,
671,
671,
671,
671,
671,
671,
671,
671,
672,
673,
673,
673,
675,
677,
677,
678,
678,
678,
679,
681,
682,
684,
684,
686,
686,
688,
689,
690,
690,
690,
691,
691,
691,
692,
692,
692,
693,
694]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
60,
[658,
660,
660,
661,
661,
661,
661,
663,
663,
663,
663,
665,
665,
665,
666,
666,
667,
669,
669,
669,
670,
670,
671,
671,
672,
672,
672,
672,
672,
672,
672,
674,
674,
674,
674,
674,
674,
676,
676,
676,
678,
679,
681,
681,
681,
681,
681,
681,
683,
683,
683,
683,
683,
685,
686,
687,
687,
687,
689,
691,
692,
694,
694,
694,
694,
696,
696,
696,
698,
699,
701,
702,
702,
703,
703,
703,
704,
706,
707,
707,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[673,
674,
675,
676,
678,
680,
682,
684,
684,
684,
686,
687,
688,
690,
692,
693,
694,
694,
694,
695,
696,
696,
696,
696,
698,
699,
699,
701,
701,
701,
702,
704,
706,
708,
708,
708,
708,
708,
709,
709,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: scenario 3',
[200,
700,
600,
120,
[616,
618,
620,
620,
620,
621,
622,
622,
623,
624,
625,
626,
626,
626,
626,
628,
629,
631,
631,
632,
632,
634,
634,
634,
634,
636,
636,
637,
639,
639,
640,
641,
641,
641,
641,
641,
642,
642,
642,
642,
642,
644,
644,
645,
645,
645,
645,
647,
648,
649,
649,
650,
651,
653,
655,
657,
657,
658,
658,
659,
659,
659,
660,
660,
660,
661,
661,
661,
661,
661,
662,
663,
664,
664,
665,
665,
666,
666,
666,
668,
669,
669,
669,
669,
671,
671,
671,
672,
672,
674,
674,
676,
676,
676,
676,
676,
676,
678,
678,
679,
679,
681,
681,
683,
683,
683,
685,
686,
687,
687,
688,
689,
691,
692,
694,
695,
697,
697,
698,
698,
698,
698,
700,
700,
701,
702,
702,
702,
703,
703,
703,
703,
705,
707,
707,
707,
707,
708,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700]]],
[['regression: warming before occupancy',
[40,
700,
600,
60,
[680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
680,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['regression: scenario 32',
[60,
700,
600,
30,
[664,
664,
666,
666,
666,
666,
666,
668,
670,
671,
671,
672,
673,
674,
674,
676,
677,
677,
678,
678,
678,
678,
679,
679,
679,
679,
681,
682,
683,
684,
685,
686,
687,
688,
689,
689,
691,
692,
692,
692,
692,
693,
693,
695,
695,
695,
695,
695,
695,
697,
697,
697,
698,
699,
699,
701,
702,
702,
702,
702,
704,
704,
705,
705,
705,
707]],
[700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: steady recovery',
[30,
700,
600,
120,
[650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650,
650]],
[600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit',
[200,
700,
600,
30,
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: fractional minutes',
[60,
700,
600,
90,
[655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655,
655]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700,
700]],
['control: lead limit boundary',
[200,
700,
600,
30,
[610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610,
610]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]],
['control: scenario 1',
[200,
700,
600,
120,
[674,
676,
677,
677,
678,
678,
679,
679,
681,
682,
684,
686,
687,
687,
687,
687,
687,
689,
690,
692,
694,
696,
697,
697,
697,
698,
700,
700,
702,
702,
703,
703,
704,
705,
707,
709,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700]],
['control: scenario 2',
[60,
700,
600,
30,
[690,
692,
694,
695,
697,
697,
697,
697,
697,
697,
698,
699,
699,
699,
699,
700,
700,
700,
700,
702,
704,
705,
705,
705,
706,
706,
707,
709,
709,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710,
710]],
[600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
600,
700,
700,
700,
700,
700]]]]
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 fixture | Actual | Expected | Outcome |
|---|---|---|---|
| regression: warming before occupancy | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: steady recovery | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: fractional minutes | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: lead limit boundary | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700] | Passed |
| control: scenario 1 | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 2 | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
| control: scenario 3 | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | [600, 600, 600, 600, 600, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700, 700] | Passed |
SHA-256 / cbf15d867425ed306ce3f9be1592c50880b5ad453c25da9e3a2aac4127899795
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:49.039062+00:00.
Case digest / 56383af897ce5f493f97862d17ed91c7f40f8f9aec707d4b839004f463fa4093