=== warm-baseline validation 2026-08-02 22:43:41 duty=40% window=50s threshold=13.7 cycle 1/3 FLOW warmed to down=21.84 up=21.91 in 1.3 min base_up=22.07 down_rise=12.18 -> ok CORRECT (peak down 34.4 C) cycle 1/3 NO-FLOW warmed to down=22.46 up=21.84 in 1.0 min base_up=21.84 down_rise=18.16 -> FAULT CORRECT (peak down 40.4 C) cycle 2/3 FLOW warmed to down=21.84 up=22.07 in 1.0 min base_up=21.29 down_rise=12.75 -> ok CORRECT (peak down 34.5 C) cycle 2/3 NO-FLOW warmed to down=22.07 up=21.91 in 1.0 min base_up=21.45 down_rise=18.15 -> FAULT CORRECT (peak down 40.5 C) cycle 3/3 FLOW warmed to down=22.07 up=21.91 in 1.0 min base_up=21.60 down_rise=10.95 -> ok CORRECT (peak down 34.3 C) cycle 3/3 NO-FLOW warmed to down=22.30 up=22.30 in 1.0 min base_up=21.76 down_rise=17.85 -> FAULT CORRECT (peak down 40.4 C) === warm-baseline results (baselines 21.3 - 22.1 C) flow n=3 mean 11.96 sd 0.92 max 12.75 no-flow n=3 mean 18.06 sd 0.17 min 17.85 worst-case margin: +5.11 C threshold 13.7 sits +0.95 above flow max, +4.15 below no-flow min misclassified: 0 of 6 controller restarted === warm-baseline validation 2026-08-02 22:56:44 duty=40% window=50s threshold=13.7 cycle 1/3 FLOW warmed to down=22.30 up=22.07 in 1.3 min base_up=22.23 down_rise=12.62 -> ok CORRECT (peak down 34.0 C) cycle 1/3 NO-FLOW warmed to down=22.23 up=21.84 in 1.0 min base_up=21.76 down_rise=18.71 -> FAULT CORRECT (peak down 40.6 C) cycle 2/3 FLOW warmed to down=22.30 up=22.07 in 1.0 min base_up=21.76 down_rise=11.03 -> ok CORRECT (peak down 34.3 C) cycle 2/3 NO-FLOW warmed to down=22.15 up=21.84 in 1.0 min base_up=21.37 down_rise=18.26 -> FAULT CORRECT (peak down 40.1 C) cycle 3/3 FLOW warmed to down=22.54 up=22.15 in 1.0 min base_up=21.99 down_rise=11.08 -> ok CORRECT (peak down 34.3 C) cycle 3/3 NO-FLOW warmed to down=22.07 up=21.84 in 1.0 min base_up=21.91 down_rise=18.42 -> FAULT CORRECT (peak down 40.5 C) === warm-baseline results (baselines 21.4 - 22.2 C) flow n=3 mean 11.58 sd 0.91 max 12.62 no-flow n=3 mean 18.46 sd 0.23 min 18.26 worst-case margin: +5.63 C threshold 13.7 sits +1.08 above flow max, +4.56 below no-flow min misclassified: 0 of 6 controller restarted === warm-baseline validation 2026-08-02 23:10:04 duty=40% window=50s threshold=13.7 cycle 1/2 FLOW warm abort: downstream 51.95 at 0.5 min warmed to down=22.15 up=21.84 in 1.3 min === warm-baseline validation 2026-08-02 23:11:51 duty=40% window=50s threshold=13.7 cycle 1/2 FLOW base_up=22.23 down_rise=15.53 -> FAULT *** WRONG *** (peak down 37.7 C) cycle 1/2 NO-FLOW warm abort: downstream 49.34 at 0.3 min warm target reached: up=25.84 at 0.8 min warmed to down=21.84 up=21.60 in 1.0 min warmed to down=22.15 up=22.07 in 1.6 min base_up=21.37 down_rise=10.69 -> ok *** WRONG *** (peak down 34.1 C) cycle 2/2 FLOW base_up=20.91 down_rise=11.48 -> ok CORRECT (peak down 34.4 C) cycle 1/2 NO-FLOW warming: 0.8 min down=37.53 up=23.71 warming: 0.8 min down=38.17 up=24.65 warming: 1.8 min down=37.80 up=23.94 warming: 1.8 min down=37.99 up=24.50 (warming plateaued at 24.18 C after 2.6 min) warming: 2.9 min down=26.56 up=23.47 (warming plateaued at 23.47 C after 2.9 min) warmed to down=21.68 up=21.60 in 3.4 min warmed to down=28.57 up=21.84 in 3.6 min base_up=21.37 down_rise=12.18 -> ok *** WRONG *** (peak down 34.1 C) cycle 2/2 FLOW base_up=21.91 down_rise=3.76 -> ok CORRECT (peak down 35.8 C) cycle 2/2 NO-FLOW warm abort: downstream 48.90 at 0.3 min warm target reached: up=25.68 at 0.5 min warmed to down=22.23 up=21.84 in 1.0 min warmed to down=21.29 up=21.68 in 1.3 min base_up=21.45 down_rise=11.58 -> ok *** WRONG *** (peak down 34.4 C) base_up=21.06 down_rise=11.30 -> ok CORRECT (peak down 34.2 C) cycle 2/2 NO-FLOW === warm-baseline results (baselines 21.4 - 22.2 C) flow n=2 mean 9.65 sd 8.32 max 15.53 no-flow n=2 mean 11.13 sd 0.63 min 10.69 worst-case margin: -4.84 C threshold 13.7 sits -1.83 above flow max, -3.01 below no-flow min misclassified: 3 of 4 controller restarted warming: 0.8 min down=37.71 up=24.50