{"abstract":"Small errors produce one-minute burns that never let the heat exchanger reach temperature.","category":"HVAC thermostat control","checks":8,"contract":"Time-proportioning heating thermostat with a cycles-per-hour setting, sampled per minute. The cycle length is 60 // cph minutes. At each cycle start the error (setpoint - temp) is clamped to 0..band and the on time is error/band of the cycle rounded half up; an on time of 1 minute is extended to the 2-minute minimum, and an off time of 1 minute is eliminated (full on). The output is on for the first on-time minutes of the cycle. Return the heat output per minute.","evaluation_group":"w2-hvac-thermostat-control-cycle-rate-time-proportioning","failed_approach":"Dropping the short burn entirely never heats on small errors.","family":"w2-hvac-thermostat-control-cycle-rate-time-proportioning-minimum-on-time","id":"FA-92736","implementations":{"attempt":{"sha256":"3105a275b82c57d47920962353334cfa83702dab870aae33d2ea5c417f233949","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cph, band, setpoint, temps):\n    period = 60 // cph\n    out = []\n    on_left = 0\n    for minute, temp in enumerate(temps):\n        if minute % period == 0:\n            err = setpoint - temp\n            num = max(0, min(err, band)) * period\n            on = (2 * num + band) // (2 * band)\n            if 0 < on < 2:\n                on = 0\n            if 0 < period - on < 2:\n                on = period\n            on_left = on\n        out.append(on_left > 0)\n        if on_left > 0:\n            on_left -= 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [6,\n    30,\n    700,\n    [697,\n     695,\n     691,\n     695,\n     691,\n     692,\n     693,\n     692,\n     690,\n     690,\n     690,\n     687,\n     684,\n     683,\n     687,\n     688,\n     688,\n     691,\n     690,\n     692,\n     693,\n     689,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [4,\n    10,\n    700,\n    [673,\n     669,\n     665,\n     669,\n     667,\n     665,\n     664,\n     662,\n     659,\n     662,\n     661,\n     659,\n     660,\n     656,\n     659,\n     660,\n     656,\n     652,\n     654,\n     652,\n     656,\n     657,\n     653,\n     653,\n     653,\n     653,\n     654,\n     653,\n     650,\n     650,\n     650,\n     650,\n     651,\n     654,\n     651,\n     650,\n     650,\n     650,\n     650]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [7,\n    30,\n    700,\n    [693,\n     691,\n     695,\n     691,\n     695,\n     698,\n     697,\n     700,\n     702,\n     704,\n     706,\n     708,\n     709,\n     707,\n     706,\n     702,\n     702,\n     701,\n     698,\n     701,\n     700,\n     704,\n     703,\n     702,\n     702,\n     699,\n     695,\n     694,\n     696,\n     699,\n     696,\n     692,\n     694,\n     693,\n     694,\n     697,\n     700]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False]],\n  ['control: scenario 4',\n   [4,\n    10,\n    700,\n    [680,\n     684,\n     685,\n     683,\n     684,\n     685,\n     686,\n     682,\n     681,\n     679,\n     677,\n     681,\n     680,\n     681,\n     677,\n     681,\n     680,\n     682,\n     682,\n     678,\n     677,\n     673,\n     672,\n     676,\n     673,\n     670,\n     669,\n     665,\n     662]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 8',\n   [9,\n    30,\n    700,\n    [687,\n     691,\n     690,\n     688,\n     689,\n     690,\n     693,\n     696,\n     700,\n     697,\n     701,\n     705,\n     704,\n     703,\n     702,\n     698,\n     702,\n     699,\n     703,\n     700,\n     697,\n     694,\n     698,\n     695,\n     698,\n     701,\n     698,\n     696]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 14',\n   [9,\n    10,\n    700,\n    [699,\n     703,\n     700,\n     700,\n     703,\n     707,\n     706,\n     710,\n     714,\n     715,\n     715,\n     715,\n     715,\n     712,\n     713,\n     712,\n     715,\n     715,\n     715,\n     712,\n     710,\n     706,\n     706,\n     706,\n     703,\n     705,\n     703,\n     706,\n     709,\n     705,\n     707,\n     705]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    30,\n    700,\n    [690,\n     689,\n     690,\n     691,\n     689,\n     685,\n     682,\n     686,\n     682,\n     680,\n     684,\n     687,\n     690,\n     693,\n     692,\n     689,\n     688,\n     685,\n     683,\n     685,\n     687,\n     683,\n     684,\n     688,\n     691,\n     689,\n     686,\n     683,\n     679,\n     679,\n     682,\n     680,\n     680,\n     684]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 2',\n   [6,\n    10,\n    700,\n    [686,\n     687,\n     685,\n     682,\n     682,\n     678,\n     681,\n     677,\n     676,\n     673,\n     674,\n     676,\n     672,\n     670,\n     669,\n     673,\n     674,\n     676,\n     675,\n     673,\n     675,\n     672,\n     673,\n     674,\n     670,\n     672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 3',\n   [7,\n    30,\n    700,\n    [701,\n     704,\n     708,\n     708,\n     709,\n     711,\n     707,\n     709,\n     710,\n     706,\n     707,\n     703,\n     701,\n     697,\n     697,\n     698,\n     698,\n     701,\n     700,\n     699,\n     699,\n     695,\n     696,\n     700,\n     698,\n     701,\n     700]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: scenario 17',\n   [9,\n    10,\n    700,\n    [699,\n     695,\n     691,\n     688,\n     691,\n     690,\n     694,\n     696,\n     693,\n     691,\n     688,\n     686,\n     687,\n     691,\n     687,\n     686,\n     683,\n     680,\n     679,\n     681,\n     678,\n     678,\n     679,\n     680,\n     681,\n     683,\n     681,\n     683,\n     683,\n     687]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [7,\n    20,\n    700,\n    [688,\n     691,\n     689,\n     691,\n     692,\n     691,\n     687,\n     691,\n     692,\n     691,\n     695,\n     695,\n     692,\n     689,\n     688,\n     684,\n     682,\n     681,\n     679,\n     678,\n     682,\n     682,\n     680,\n     682,\n     686,\n     689,\n     687,\n     687,\n     690,\n     686,\n     687,\n     691]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [9,\n    20,\n    700,\n    [702,\n     703,\n     707,\n     703,\n     700,\n     697,\n     699,\n     698,\n     696,\n     693,\n     696,\n     695,\n     694,\n     690,\n     692,\n     695,\n     697,\n     700,\n     698,\n     699,\n     701,\n     704,\n     708,\n     712,\n     710,\n     709,\n     713,\n     709,\n     710,\n     714,\n     711,\n     711,\n     707,\n     706,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 12',\n   [5,\n    30,\n    700,\n    [698,\n     698,\n     701,\n     703,\n     706,\n     703,\n     704,\n     701,\n     702,\n     698,\n     698,\n     694,\n     698,\n     699,\n     701,\n     701,\n     700,\n     697,\n     693,\n     692,\n     692,\n     690,\n     688,\n     690,\n     691,\n     691,\n     693]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 14',\n   [5,\n    20,\n    700,\n    [696,\n     695,\n     692,\n     694,\n     695,\n     696,\n     694,\n     693,\n     690,\n     692,\n     693,\n     693,\n     697,\n     697,\n     701,\n     704,\n     705,\n     704,\n     708,\n     712,\n     713,\n     713,\n     715,\n     712,\n     712,\n     710,\n     707,\n     709,\n     705,\n     701,\n     698,\n     695,\n     697,\n     701,\n     699,\n     700,\n     699]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    10,\n    700,\n    [702,\n     699,\n     703,\n     707,\n     704,\n     708,\n     705,\n     701,\n     698,\n     700,\n     703,\n     703,\n     700,\n     697,\n     696,\n     697,\n     697,\n     701,\n     703,\n     703,\n     704,\n     705,\n     708,\n     704,\n     706,\n     705,\n     702,\n     706,\n     707,\n     704,\n     708,\n     707,\n     703,\n     706,\n     707,\n     703,\n     703,\n     706,\n     707,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    20,\n    700,\n    [682, 683, 684, 687, 687, 686, 682, 683, 680, 676, 680, 683, 679, 675, 674, 671, 671, 672, 670, 672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]]],\n [['regression: scenario 31',\n   [8,\n    10,\n    700,\n    [699,\n     697,\n     700,\n     696,\n     699,\n     695,\n     692,\n     694,\n     698,\n     699,\n     696,\n     700,\n     701,\n     701,\n     698,\n     698,\n     700,\n     704,\n     702,\n     698,\n     695,\n     697,\n     701,\n     697,\n     696,\n     698,\n     696,\n     696,\n     696,\n     693,\n     695,\n     693,\n     695,\n     691,\n     689,\n     688,\n     690,\n     692,\n     691,\n     688]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [5,\n    10,\n    700,\n    [698,\n     700,\n     702,\n     701,\n     700,\n     700,\n     699,\n     697,\n     694,\n     696,\n     698,\n     694,\n     697,\n     697,\n     694,\n     698,\n     700,\n     698,\n     699,\n     700,\n     703,\n     707,\n     708,\n     706,\n     708,\n     712,\n     710,\n     706,\n     702,\n     700,\n     696,\n     696,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    10,\n    700,\n    [669,\n     665,\n     665,\n     665,\n     666,\n     665,\n     663,\n     665,\n     667,\n     665,\n     667,\n     663,\n     663,\n     667,\n     667,\n     668,\n     664,\n     664,\n     664,\n     663,\n     661,\n     661,\n     661,\n     664,\n     666,\n     664,\n     668]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [4,\n    30,\n    700,\n    [693,\n     696,\n     695,\n     696,\n     695,\n     694,\n     690,\n     686,\n     682,\n     681,\n     683,\n     685,\n     681,\n     677,\n     673,\n     671,\n     674,\n     672,\n     668,\n     671,\n     668,\n     668,\n     672,\n     672,\n     674,\n     677,\n     680,\n     676,\n     673,\n     675,\n     677,\n     673,\n     671,\n     670,\n     672,\n     668,\n     666]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"4d67701bed53b781af80d4e4213d0d68424c1872cc3fd3e6cc0456c7efdfb82e","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cph, band, setpoint, temps):\n    period = 60 // cph\n    out = []\n    on_left = 0\n    for minute, temp in enumerate(temps):\n        if minute % period == 0:\n            err = setpoint - temp\n            num = max(0, min(err, band)) * period\n            on = (2 * num + band) // (2 * band)\n            if 0 < period - on < 2:\n                on = period\n            on_left = on\n        out.append(on_left > 0)\n        if on_left > 0:\n            on_left -= 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [6,\n    30,\n    700,\n    [697,\n     695,\n     691,\n     695,\n     691,\n     692,\n     693,\n     692,\n     690,\n     690,\n     690,\n     687,\n     684,\n     683,\n     687,\n     688,\n     688,\n     691,\n     690,\n     692,\n     693,\n     689,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [4,\n    10,\n    700,\n    [673,\n     669,\n     665,\n     669,\n     667,\n     665,\n     664,\n     662,\n     659,\n     662,\n     661,\n     659,\n     660,\n     656,\n     659,\n     660,\n     656,\n     652,\n     654,\n     652,\n     656,\n     657,\n     653,\n     653,\n     653,\n     653,\n     654,\n     653,\n     650,\n     650,\n     650,\n     650,\n     651,\n     654,\n     651,\n     650,\n     650,\n     650,\n     650]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [7,\n    30,\n    700,\n    [693,\n     691,\n     695,\n     691,\n     695,\n     698,\n     697,\n     700,\n     702,\n     704,\n     706,\n     708,\n     709,\n     707,\n     706,\n     702,\n     702,\n     701,\n     698,\n     701,\n     700,\n     704,\n     703,\n     702,\n     702,\n     699,\n     695,\n     694,\n     696,\n     699,\n     696,\n     692,\n     694,\n     693,\n     694,\n     697,\n     700]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False]],\n  ['control: scenario 4',\n   [4,\n    10,\n    700,\n    [680,\n     684,\n     685,\n     683,\n     684,\n     685,\n     686,\n     682,\n     681,\n     679,\n     677,\n     681,\n     680,\n     681,\n     677,\n     681,\n     680,\n     682,\n     682,\n     678,\n     677,\n     673,\n     672,\n     676,\n     673,\n     670,\n     669,\n     665,\n     662]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 8',\n   [9,\n    30,\n    700,\n    [687,\n     691,\n     690,\n     688,\n     689,\n     690,\n     693,\n     696,\n     700,\n     697,\n     701,\n     705,\n     704,\n     703,\n     702,\n     698,\n     702,\n     699,\n     703,\n     700,\n     697,\n     694,\n     698,\n     695,\n     698,\n     701,\n     698,\n     696]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 14',\n   [9,\n    10,\n    700,\n    [699,\n     703,\n     700,\n     700,\n     703,\n     707,\n     706,\n     710,\n     714,\n     715,\n     715,\n     715,\n     715,\n     712,\n     713,\n     712,\n     715,\n     715,\n     715,\n     712,\n     710,\n     706,\n     706,\n     706,\n     703,\n     705,\n     703,\n     706,\n     709,\n     705,\n     707,\n     705]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    30,\n    700,\n    [690,\n     689,\n     690,\n     691,\n     689,\n     685,\n     682,\n     686,\n     682,\n     680,\n     684,\n     687,\n     690,\n     693,\n     692,\n     689,\n     688,\n     685,\n     683,\n     685,\n     687,\n     683,\n     684,\n     688,\n     691,\n     689,\n     686,\n     683,\n     679,\n     679,\n     682,\n     680,\n     680,\n     684]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 2',\n   [6,\n    10,\n    700,\n    [686,\n     687,\n     685,\n     682,\n     682,\n     678,\n     681,\n     677,\n     676,\n     673,\n     674,\n     676,\n     672,\n     670,\n     669,\n     673,\n     674,\n     676,\n     675,\n     673,\n     675,\n     672,\n     673,\n     674,\n     670,\n     672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 3',\n   [7,\n    30,\n    700,\n    [701,\n     704,\n     708,\n     708,\n     709,\n     711,\n     707,\n     709,\n     710,\n     706,\n     707,\n     703,\n     701,\n     697,\n     697,\n     698,\n     698,\n     701,\n     700,\n     699,\n     699,\n     695,\n     696,\n     700,\n     698,\n     701,\n     700]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: scenario 17',\n   [9,\n    10,\n    700,\n    [699,\n     695,\n     691,\n     688,\n     691,\n     690,\n     694,\n     696,\n     693,\n     691,\n     688,\n     686,\n     687,\n     691,\n     687,\n     686,\n     683,\n     680,\n     679,\n     681,\n     678,\n     678,\n     679,\n     680,\n     681,\n     683,\n     681,\n     683,\n     683,\n     687]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [7,\n    20,\n    700,\n    [688,\n     691,\n     689,\n     691,\n     692,\n     691,\n     687,\n     691,\n     692,\n     691,\n     695,\n     695,\n     692,\n     689,\n     688,\n     684,\n     682,\n     681,\n     679,\n     678,\n     682,\n     682,\n     680,\n     682,\n     686,\n     689,\n     687,\n     687,\n     690,\n     686,\n     687,\n     691]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [9,\n    20,\n    700,\n    [702,\n     703,\n     707,\n     703,\n     700,\n     697,\n     699,\n     698,\n     696,\n     693,\n     696,\n     695,\n     694,\n     690,\n     692,\n     695,\n     697,\n     700,\n     698,\n     699,\n     701,\n     704,\n     708,\n     712,\n     710,\n     709,\n     713,\n     709,\n     710,\n     714,\n     711,\n     711,\n     707,\n     706,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 12',\n   [5,\n    30,\n    700,\n    [698,\n     698,\n     701,\n     703,\n     706,\n     703,\n     704,\n     701,\n     702,\n     698,\n     698,\n     694,\n     698,\n     699,\n     701,\n     701,\n     700,\n     697,\n     693,\n     692,\n     692,\n     690,\n     688,\n     690,\n     691,\n     691,\n     693]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 14',\n   [5,\n    20,\n    700,\n    [696,\n     695,\n     692,\n     694,\n     695,\n     696,\n     694,\n     693,\n     690,\n     692,\n     693,\n     693,\n     697,\n     697,\n     701,\n     704,\n     705,\n     704,\n     708,\n     712,\n     713,\n     713,\n     715,\n     712,\n     712,\n     710,\n     707,\n     709,\n     705,\n     701,\n     698,\n     695,\n     697,\n     701,\n     699,\n     700,\n     699]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    10,\n    700,\n    [702,\n     699,\n     703,\n     707,\n     704,\n     708,\n     705,\n     701,\n     698,\n     700,\n     703,\n     703,\n     700,\n     697,\n     696,\n     697,\n     697,\n     701,\n     703,\n     703,\n     704,\n     705,\n     708,\n     704,\n     706,\n     705,\n     702,\n     706,\n     707,\n     704,\n     708,\n     707,\n     703,\n     706,\n     707,\n     703,\n     703,\n     706,\n     707,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    20,\n    700,\n    [682, 683, 684, 687, 687, 686, 682, 683, 680, 676, 680, 683, 679, 675, 674, 671, 671, 672, 670, 672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]]],\n [['regression: scenario 31',\n   [8,\n    10,\n    700,\n    [699,\n     697,\n     700,\n     696,\n     699,\n     695,\n     692,\n     694,\n     698,\n     699,\n     696,\n     700,\n     701,\n     701,\n     698,\n     698,\n     700,\n     704,\n     702,\n     698,\n     695,\n     697,\n     701,\n     697,\n     696,\n     698,\n     696,\n     696,\n     696,\n     693,\n     695,\n     693,\n     695,\n     691,\n     689,\n     688,\n     690,\n     692,\n     691,\n     688]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [5,\n    10,\n    700,\n    [698,\n     700,\n     702,\n     701,\n     700,\n     700,\n     699,\n     697,\n     694,\n     696,\n     698,\n     694,\n     697,\n     697,\n     694,\n     698,\n     700,\n     698,\n     699,\n     700,\n     703,\n     707,\n     708,\n     706,\n     708,\n     712,\n     710,\n     706,\n     702,\n     700,\n     696,\n     696,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    10,\n    700,\n    [669,\n     665,\n     665,\n     665,\n     666,\n     665,\n     663,\n     665,\n     667,\n     665,\n     667,\n     663,\n     663,\n     667,\n     667,\n     668,\n     664,\n     664,\n     664,\n     663,\n     661,\n     661,\n     661,\n     664,\n     666,\n     664,\n     668]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [4,\n    30,\n    700,\n    [693,\n     696,\n     695,\n     696,\n     695,\n     694,\n     690,\n     686,\n     682,\n     681,\n     683,\n     685,\n     681,\n     677,\n     673,\n     671,\n     674,\n     672,\n     668,\n     671,\n     668,\n     668,\n     672,\n     672,\n     674,\n     677,\n     680,\n     676,\n     673,\n     675,\n     677,\n     673,\n     671,\n     670,\n     672,\n     668,\n     666]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"d089c193f79c0bb97142f6a916d4c93625d3ec9d769cd80f16d52f92a67fb2da","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(cph, band, setpoint, temps):\n    period = 60 // cph\n    out = []\n    on_left = 0\n    for minute, temp in enumerate(temps):\n        if minute % period == 0:\n            err = setpoint - temp\n            num = max(0, min(err, band)) * period\n            on = (2 * num + band) // (2 * band)\n            if 0 < on < 2:\n                on = 2\n            if 0 < period - on < 2:\n                on = period\n            on_left = on\n        out.append(on_left > 0)\n        if on_left > 0:\n            on_left -= 1\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [6,\n    30,\n    700,\n    [697,\n     695,\n     691,\n     695,\n     691,\n     692,\n     693,\n     692,\n     690,\n     690,\n     690,\n     687,\n     684,\n     683,\n     687,\n     688,\n     688,\n     691,\n     690,\n     692,\n     693,\n     689,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [4,\n    10,\n    700,\n    [673,\n     669,\n     665,\n     669,\n     667,\n     665,\n     664,\n     662,\n     659,\n     662,\n     661,\n     659,\n     660,\n     656,\n     659,\n     660,\n     656,\n     652,\n     654,\n     652,\n     656,\n     657,\n     653,\n     653,\n     653,\n     653,\n     654,\n     653,\n     650,\n     650,\n     650,\n     650,\n     651,\n     654,\n     651,\n     650,\n     650,\n     650,\n     650]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [7,\n    30,\n    700,\n    [693,\n     691,\n     695,\n     691,\n     695,\n     698,\n     697,\n     700,\n     702,\n     704,\n     706,\n     708,\n     709,\n     707,\n     706,\n     702,\n     702,\n     701,\n     698,\n     701,\n     700,\n     704,\n     703,\n     702,\n     702,\n     699,\n     695,\n     694,\n     696,\n     699,\n     696,\n     692,\n     694,\n     693,\n     694,\n     697,\n     700]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False]],\n  ['control: scenario 4',\n   [4,\n    10,\n    700,\n    [680,\n     684,\n     685,\n     683,\n     684,\n     685,\n     686,\n     682,\n     681,\n     679,\n     677,\n     681,\n     680,\n     681,\n     677,\n     681,\n     680,\n     682,\n     682,\n     678,\n     677,\n     673,\n     672,\n     676,\n     673,\n     670,\n     669,\n     665,\n     662]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 8',\n   [9,\n    30,\n    700,\n    [687,\n     691,\n     690,\n     688,\n     689,\n     690,\n     693,\n     696,\n     700,\n     697,\n     701,\n     705,\n     704,\n     703,\n     702,\n     698,\n     702,\n     699,\n     703,\n     700,\n     697,\n     694,\n     698,\n     695,\n     698,\n     701,\n     698,\n     696]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['regression: scenario 14',\n   [9,\n    10,\n    700,\n    [699,\n     703,\n     700,\n     700,\n     703,\n     707,\n     706,\n     710,\n     714,\n     715,\n     715,\n     715,\n     715,\n     712,\n     713,\n     712,\n     715,\n     715,\n     715,\n     712,\n     710,\n     706,\n     706,\n     706,\n     703,\n     705,\n     703,\n     706,\n     709,\n     705,\n     707,\n     705]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    30,\n    700,\n    [690,\n     689,\n     690,\n     691,\n     689,\n     685,\n     682,\n     686,\n     682,\n     680,\n     684,\n     687,\n     690,\n     693,\n     692,\n     689,\n     688,\n     685,\n     683,\n     685,\n     687,\n     683,\n     684,\n     688,\n     691,\n     689,\n     686,\n     683,\n     679,\n     679,\n     682,\n     680,\n     680,\n     684]],\n   [True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 2',\n   [6,\n    10,\n    700,\n    [686,\n     687,\n     685,\n     682,\n     682,\n     678,\n     681,\n     677,\n     676,\n     673,\n     674,\n     676,\n     672,\n     670,\n     669,\n     673,\n     674,\n     676,\n     675,\n     673,\n     675,\n     672,\n     673,\n     674,\n     670,\n     672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]],\n [['regression: scenario 3',\n   [7,\n    30,\n    700,\n    [701,\n     704,\n     708,\n     708,\n     709,\n     711,\n     707,\n     709,\n     710,\n     706,\n     707,\n     703,\n     701,\n     697,\n     697,\n     698,\n     698,\n     701,\n     700,\n     699,\n     699,\n     695,\n     696,\n     700,\n     698,\n     701,\n     700]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: scenario 17',\n   [9,\n    10,\n    700,\n    [699,\n     695,\n     691,\n     688,\n     691,\n     690,\n     694,\n     696,\n     693,\n     691,\n     688,\n     686,\n     687,\n     691,\n     687,\n     686,\n     683,\n     680,\n     679,\n     681,\n     678,\n     678,\n     679,\n     680,\n     681,\n     683,\n     681,\n     683,\n     683,\n     687]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [7,\n    20,\n    700,\n    [688,\n     691,\n     689,\n     691,\n     692,\n     691,\n     687,\n     691,\n     692,\n     691,\n     695,\n     695,\n     692,\n     689,\n     688,\n     684,\n     682,\n     681,\n     679,\n     678,\n     682,\n     682,\n     680,\n     682,\n     686,\n     689,\n     687,\n     687,\n     690,\n     686,\n     687,\n     691]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]],\n  ['regression: scenario 2',\n   [9,\n    20,\n    700,\n    [702,\n     703,\n     707,\n     703,\n     700,\n     697,\n     699,\n     698,\n     696,\n     693,\n     696,\n     695,\n     694,\n     690,\n     692,\n     695,\n     697,\n     700,\n     698,\n     699,\n     701,\n     704,\n     708,\n     712,\n     710,\n     709,\n     713,\n     709,\n     710,\n     714,\n     711,\n     711,\n     707,\n     706,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]]],\n [['regression: scenario 12',\n   [5,\n    30,\n    700,\n    [698,\n     698,\n     701,\n     703,\n     706,\n     703,\n     704,\n     701,\n     702,\n     698,\n     698,\n     694,\n     698,\n     699,\n     701,\n     701,\n     700,\n     697,\n     693,\n     692,\n     692,\n     690,\n     688,\n     690,\n     691,\n     691,\n     693]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True]],\n  ['regression: scenario 14',\n   [5,\n    20,\n    700,\n    [696,\n     695,\n     692,\n     694,\n     695,\n     696,\n     694,\n     693,\n     690,\n     692,\n     693,\n     693,\n     697,\n     697,\n     701,\n     704,\n     705,\n     704,\n     708,\n     712,\n     713,\n     713,\n     715,\n     712,\n     712,\n     710,\n     707,\n     709,\n     705,\n     701,\n     698,\n     695,\n     697,\n     701,\n     699,\n     700,\n     699]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [6,\n    10,\n    700,\n    [702,\n     699,\n     703,\n     707,\n     704,\n     708,\n     705,\n     701,\n     698,\n     700,\n     703,\n     703,\n     700,\n     697,\n     696,\n     697,\n     697,\n     701,\n     703,\n     703,\n     704,\n     705,\n     708,\n     704,\n     706,\n     705,\n     702,\n     706,\n     707,\n     704,\n     708,\n     707,\n     703,\n     706,\n     707,\n     703,\n     703,\n     706,\n     707,\n     706]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    20,\n    700,\n    [682, 683, 684, 687, 687, 686, 682, 683, 680, 676, 680, 683, 679, 675, 674, 671, 671, 672, 670, 672]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False]]],\n [['regression: scenario 31',\n   [8,\n    10,\n    700,\n    [699,\n     697,\n     700,\n     696,\n     699,\n     695,\n     692,\n     694,\n     698,\n     699,\n     696,\n     700,\n     701,\n     701,\n     698,\n     698,\n     700,\n     704,\n     702,\n     698,\n     695,\n     697,\n     701,\n     697,\n     696,\n     698,\n     696,\n     696,\n     696,\n     693,\n     695,\n     693,\n     695,\n     691,\n     689,\n     688,\n     690,\n     692,\n     691,\n     688]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['regression: tiny error',\n   [6,\n    30,\n    700,\n    [696, 696, 696, 696, 696, 696, 696, 696, 696, 696, 698, 698, 698, 698, 698, 698, 698, 698, 698, 698]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: three cycles',\n   [5,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     700,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681,\n     681]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: seven cycles per hour',\n   [7,\n    20,\n    700,\n    [690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     690,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     685,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    True,\n    True,\n    False]],\n  ['control: above setpoint',\n   [4,\n    10,\n    700,\n    [705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     705,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695,\n     695]],\n   [False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 1',\n   [5,\n    10,\n    700,\n    [698,\n     700,\n     702,\n     701,\n     700,\n     700,\n     699,\n     697,\n     694,\n     696,\n     698,\n     694,\n     697,\n     697,\n     694,\n     698,\n     700,\n     698,\n     699,\n     700,\n     703,\n     707,\n     708,\n     706,\n     708,\n     712,\n     710,\n     706,\n     702,\n     700,\n     696,\n     696,\n     692]],\n   [True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False]],\n  ['control: scenario 2',\n   [3,\n    10,\n    700,\n    [669,\n     665,\n     665,\n     665,\n     666,\n     665,\n     663,\n     665,\n     667,\n     665,\n     667,\n     663,\n     663,\n     667,\n     667,\n     668,\n     664,\n     664,\n     664,\n     663,\n     661,\n     661,\n     661,\n     664,\n     666,\n     664,\n     668]],\n   [True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]],\n  ['control: scenario 3',\n   [4,\n    30,\n    700,\n    [693,\n     696,\n     695,\n     696,\n     695,\n     694,\n     690,\n     686,\n     682,\n     681,\n     683,\n     685,\n     681,\n     677,\n     673,\n     671,\n     674,\n     672,\n     668,\n     671,\n     668,\n     668,\n     672,\n     672,\n     674,\n     677,\n     680,\n     676,\n     673,\n     675,\n     677,\n     673,\n     671,\n     670,\n     672,\n     668,\n     666]],\n   [True,\n    True,\n    True,\n    True,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    False,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True,\n    True]]]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"A deterministic bounded teaching model of one thermostat or HVAC controller decision evaluated per sample. Temperatures are integer tenths of a degree Fahrenheit unless stated otherwise. The contract is a stipulated toy convention, not a claim of conformance to any manufacturer, ASHRAE guideline or code. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-hvac-thermostat-control-cycle-rate-time-proportioning-minimum-on-time","generated_at":"2026-09-29T14:51:48.569905+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Residential and light-commercial thermostats make these decisions sample by sample; each defect changes equipment calls in a way that shows up as short cycling, comfort complaints or equipment stress.","repair":"Extend a 1-minute on time to 2 minutes.","root_cause":"The minimum on-time extension is missing.","sha256":"bee4f58c22e0c8b063c868b7ee36a6b7069028397f0d0f351511088d65bd94d4","title":"Time-proportioning emits one-minute burner cycles · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.038,"exit_code":1,"observations":[{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false],"check":"regression: tiny error","expected":[true,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false],"passed":false},{"actual":[false,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"check":"regression: scenario 2","expected":[true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"passed":false},{"actual":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: three cycles","expected":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"check":"control: seven cycles per hour","expected":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"passed":true},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"check":"control: above setpoint","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 1","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"check":"control: scenario 3","expected":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 4","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tiny error\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false], \"passed\": false}, {\"check\": \"regression: scenario 2\", \"actual\": [false, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"passed\": false}, {\"check\": \"control: three cycles\", \"actual\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: seven cycles per hour\", \"actual\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"expected\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"passed\": true}, {\"check\": \"control: above setpoint\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 4\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":44.111,"exit_code":1,"observations":[{"actual":[true,false,false,false,false,false,false,false,false,false,true,false,false,false,false,false,false,false,false,false],"check":"regression: tiny error","expected":[true,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false],"passed":false},{"actual":[true,false,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"check":"regression: scenario 2","expected":[true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"passed":false},{"actual":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: three cycles","expected":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"check":"control: seven cycles per hour","expected":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"passed":true},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"check":"control: above setpoint","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 1","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"check":"control: scenario 3","expected":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 4","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tiny error\", \"actual\": [true, false, false, false, false, false, false, false, false, false, true, false, false, false, false, false, false, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false], \"passed\": false}, {\"check\": \"regression: scenario 2\", \"actual\": [true, false, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"passed\": false}, {\"check\": \"control: three cycles\", \"actual\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: seven cycles per hour\", \"actual\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"expected\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"passed\": true}, {\"check\": \"control: above setpoint\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 4\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}], \"passed\": false}\n"},"fixed":{"elapsed_ms":42.474,"exit_code":0,"observations":[{"actual":[true,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false],"check":"regression: tiny error","expected":[true,true,false,false,false,false,false,false,false,false,true,true,false,false,false,false,false,false,false,false],"passed":true},{"actual":[true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"check":"regression: scenario 2","expected":[true,true,false,false,false,false,false,false,false,false,true,true,true,false,false,false,false,false,false,false,true,true,false],"passed":true},{"actual":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: three cycles","expected":[true,true,true,true,true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"check":"control: seven cycles per hour","expected":[true,true,true,true,false,false,false,false,true,true,true,true,false,false,false,false,true,true,true,true,true,true,false,false,true,true,false],"passed":true},{"actual":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"check":"control: above setpoint","expected":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,true,true,true,true,true,true,false,false,false,false,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 1","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true},{"actual":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"check":"control: scenario 3","expected":[true,true,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,true,true,false,false,false],"passed":true},{"actual":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"check":"control: scenario 4","expected":[true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"regression: tiny error\", \"actual\": [true, true, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false, false, false, false], \"passed\": true}, {\"check\": \"regression: scenario 2\", \"actual\": [true, true, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, true, true, true, false, false, false, false, false, false, false, true, true, false], \"passed\": true}, {\"check\": \"control: three cycles\", \"actual\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: seven cycles per hour\", \"actual\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"expected\": [true, true, true, true, false, false, false, false, true, true, true, true, false, false, false, false, true, true, true, true, true, true, false, false, true, true, false], \"passed\": true}, {\"check\": \"control: above setpoint\", \"actual\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"expected\": [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 1\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}, {\"check\": \"control: scenario 3\", \"actual\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"expected\": [true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false], \"passed\": true}, {\"check\": \"control: scenario 4\", \"actual\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"expected\": [true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}