July 12, 2026

Generated lab notebook from daily_summary, plan_journal, plan_delivery_log, and setpoint audit data. It is intentionally chronological and may include in-progress cycles before validation.

Planner Execution Ledger

Planner checkpoints can acknowledge that the active plan is still suitable without writing a new public plan ID. Those no-change decisions are part of the audit trail.

Delivery events

128

Plan writes

3

No-change acknowledgements

1

Pending

0

EventDeliveredTypeStatusNote
End-of-day review and reset00:16MIDNIGHTplan_writtenWrote public plan iris-20260712-0016. Resolved 00:19 MDT.
Morning planning cycle05:43SUNRISEplan_writtenWrote public plan iris-20260712-0543. Resolved 05:45 MDT.
Solar peak planning checkpoint13:08SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint13:10SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint13:12SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:14SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:16SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:18SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:20SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:22SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:24SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:26SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:28SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:30SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:32SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:34SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:36SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:38SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:40SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:42SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:44SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:46SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:48SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:50SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:52SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:54SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:55SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:57SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)13:59SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:01SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:03SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:05SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:07SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:09SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:11SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:13SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:15SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:17SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:19SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:21SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:23SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:25SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:27SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:29SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:31SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:33SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:35SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:37SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:39SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:41SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:43SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:44SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:46SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:48SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:50SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:52SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:54SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:56SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)14:58SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)15:00SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)15:02SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)15:04SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Solar peak planning checkpoint (catch-up)15:06SOLAR_MAXdelivery_failedDelivery recorded without a public plan write.
Peak Stress15:08TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress15:10TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress15:11TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:13TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:15TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:18TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:20TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:22TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:24TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:26TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:28TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:30TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:32TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:34TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:35TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:37TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:39TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:41TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:43TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:45TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:47TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:49TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:51TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:53TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:54TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:56TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:58TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)15:59TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:01TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:03TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:05TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:07TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:09TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:10TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:12TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:14TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:16TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:18TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:20TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:22TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:24TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:26TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:28TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:29TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:31TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:33TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:35TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:37TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:39TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:41TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:44TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:46TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:48TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:50TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:52TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:54TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:55TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)16:57TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)17:00TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)17:02TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)17:04TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Peak Stress (catch-up)17:06TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Decline19:30TRANSITIONdelivery_failedDelivery recorded without a public plan write.
Decline19:32TRANSITIONackedAcknowledged: Decline transition checked live climate/equipment/plan/setpoints. House is safe and near the sunset VPD edge (82.4F, VPD 1.27 kPa, dew margin 12.3F), all relays are off, and the active iris-20260712-0543 plan already holds guardrail-compatible evening moisture support with a scheduled taper at 21:30. No tunable change: raising mist/fog thresholds now would violate the observed-recovery rule because VPD has not stayed below the high edge yet. Resolved 19:33 MDT.
Evening planning cycle20:32SUNSETplan_writtenWrote public plan iris-20260712-2032. Resolved 20:34 MDT.

🌅 Morning Cycle (12:19 AM) — iris-20260712-0016

Status

validated

Outcome score

4/10

Changed parameters

band_track_fraction, cold_vent_guard_delta_f, cool_exit_hysteresis_f, cool_stage2_exit_hysteresis_f, cool_stage2_over_high_f, direct_wet_stress_latest_hour, direct_wet_stress_min_dew_margin_f, direct_wet_stress_vpd_margin_kpa ...

Reflection

Validating previous cycle: iris-20260711-0543

Previous hypothesis: SUNRISE plan for Saturday 2026-07-11. Previous completed recovery plan iris-20260710-1450 was evaluated at 5/10; anchor was unavailable because the scorecard/window rollup timed out. Yesterday’s complete scorecard is unavailable due db_statement_timeout, so diagnosis is degraded: from the 24h pattern and runtime, the limiting axis was VPD management during hot/dry ventilation, with heat stress becoming structurally limited during the afternoon ramp. Utility pressure was cooling/misting/lighting-driven rather than gas-driven: vent about 5h, fans about 3h each, fog 1.7h, water flowing 1.7h, heat1 only 1.3h. Today is an extreme clear hot-dry day: raw forecast 97F, RH 8%, VPD 5.48 kPa, solar 920 W/m2; bias-corrected VPD still exceeds 4 kPa. Current house is safe at 66.5F, VPD 0.68 kPa, dew margin 10.3F, IDLE, all relays off… Result: Completed midnight reset plan had degraded daily scorecard evidence, but window scorecard for its governed 5.4h shows poor climate outcome: house score about 0.226, compliance about 65.8, temp axis about 49.7, VPD axis about 36.1, with about 2.0h stress and VPD-high still the limiting axis. Safety and dew margin were acceptable, but the short overnight-to-dawn reset did not materially solve the dry edge before the next hot-dry ramp. The durable diagnosis remains: keep guardrail-compatible band-coupled moisture for live VPD-high and do not rely on clock-only taper while VPD recovery is incomplete. Score: 4/10

New finding: During extreme hot-dry sequences, midnight reset plans should not materially taper moisture posture unless observed VPD is already recovered and forecast-corrected dawn VPD risk is low; otherwise the next sunrise inherits dry-edge stress. → Added to Lessons Learned

Hypothesis

Testing: Guardrail-compatible extreme-day moisture posture: request band-relative values that the dispatcher can realize, then taper only after observed VPD recovery. Expected outcome: Dew margin remains above 8F with no condensation alerts; VPD-high stress still occurs under structural heat but house-too-dry alerts should be shorter/fewer than Saturday, and guardrail events should drop relative to the 305-event evaluated plan.

Conditions

Outdoor peak

100.0°F

RH minimum

11.0%

Solar peak

914.0 W/m²

Cloud average

5.0%

extreme clear hot-dry Sunday after Saturday guardrail-heavy VPD stress; forecast VPD has positive bias but corrected prior still shows severe dry ramp

Expected stress windows

vpd_highhigh · 2026-07-12T09:00:00-06:00 to 2026-07-12T22:00:00-06:00

restore full mist budget before ramp; keep moisture engage near vpd_high+0.05, all-zone near +0.20 to +0.25, fog escalation near 0.15 while gates allow

heathigh · 2026-07-12T11:00:00-06:00 to 2026-07-12T21:00:00-06:00

pre-cool and use VENTILATE wet/fog assist; accept physically limited heat when outdoor approaches 100F

vpd_highhigh · 2026-07-13T09:00:00-06:00 to 2026-07-13T23:00:00-06:00

repeat guardrail-compatible hot-dry moisture posture

heathigh · 2026-07-13T11:00:00-06:00 to 2026-07-13T22:00:00-06:00

aggressive pre-cool/wet assist and structural heat acceptance

Parameter rationale

mister_water_budget_gal180.0 → 300.0; new local day and 97-100F/RH 11-17% ramp begins after sunrise

avoid water-budget clipping during Sunday VPD recovery while dew margin stays above 8F

mister_engage_kpa0.82 → 1.27; current guardrail is already clamping stale/resource taper values during live VPD-high risk

materialize near the active vpd_high+0.05 rather than requesting values that get held or clamped

mister_all_kpa1.02 → 1.47; zone VPD spread reached 0.54 kPa and dry ramp is broad-house, not isolated

bring all-zone rotation on around vpd_high+0.20 to +0.25 during persistent dry stress

fog_escalation_kpa0.2 → 0.15; hot-dry VENTILATE overlaps 07:00-17:00 fog window and VENT_COOL_FOG_ASSIST recently improved VPD error

use the 7x fog path during peak dry ventilation when dew/RH gates allow

mister_pulse_gap_s30.0 → 22.0; corrected VPD prior exceeds band from 09:00 through evening

increase effective wet duty during peak stress without relying on invalid band widening

Setpoints

Sunday July 12

Primary crop-band changes:

TimeValuesNote
00:16hyst 0.2125Midnight reset: current VPD is served and dew margin is safe
03:30hyst 0.2175Pre-dawn: forecast VPD falls toward band; preserve leaf dryd
06:30hyst 0.1825Sunrise ramp: restore full daily mist budget and reopen band
09:00hyst 0.1725Dry ramp begins: prioritize controller-attributable VPD comp
12:00hyst 0.16749999999999998Peak heat and VPD: use the lowest guardrail-compatible wet/f
17:00hyst 0.1725Late peak after fog window closes: keep mister assist availa
21:00hyst 0.1925Evening recovery: keep bounded wet assist for dry-air recove
23:30hyst 0.2175Overnight taper for Monday pre-dawn; fog is clock-blocked an

Tactical tunable changes:

TimeValuesNote
00:16s2 1.915; cool_exit 2.05; all_fans 0; dw_stress 0; dw_until 21; engage 1.3399999999999999; all 1.5699999999999998; pulse 30; gap 60; wt 1.3Midnight reset: current VPD is served and dew margin is safe
03:30s2 1.93; cool_exit 2.14; all_fans 0; dw_stress 0; dw_until 21; engage 1.3699999999999999; all 1.62; pulse 30; gap 60; wt 1.2533333333333334Pre-dawn: forecast VPD falls toward band; preserve leaf dryd
06:30s2 1.615; cool_exit 1.51; all_fans 0; dw_stress 0; dw_until 21; engage 1.29; all 1.47; pulse 33.75; gap 37.5; wt 1.6333333333333333Sunrise ramp: restore full daily mist budget and reopen band
09:00s2 1.535; cool_exit 1.33; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 37.5; gap 26.25; wt 1.7666666666666666Dry ramp begins: prioritize controller-attributable VPD comp
12:00s2 1.4324999999999999; cool_exit 1.24; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.42; pulse 41.25; gap 18.75; wt 1.8666666666666667Peak heat and VPD: use the lowest guardrail-compatible wet/f
17:00s2 1.57; cool_exit 1.33; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 37.5; gap 22.5; wt 1.7999999999999998Late peak after fog window closes: keep mister assist availa
21:00s2 1.825; cool_exit 1.69; all_fans 0; dw_stress 0; dw_until 22; engage 1.32; all 1.52; pulse 30; gap 41.25; wt 1.5666666666666669Evening recovery: keep bounded wet assist for dry-air recove
23:30s2 1.93; cool_exit 2.14; all_fans 0; dw_stress 0; dw_until 21; engage 1.3699999999999999; all 1.62; pulse 30; gap 60; wt 1.2666666666666666Overnight taper for Monday pre-dawn; fog is clock-blocked an

Monday July 13

Primary crop-band changes:

TimeValuesNote
06:30hyst 0.1825Monday sunrise: repeat early band-coupled posture for anothe
12:00hyst 0.16749999999999998Monday peak: structural heat likely; preserve wet/fog assist
21:00hyst 0.1925Monday evening recovery: taper only after observed VPD falls

Tactical tunable changes:

TimeValuesNote
06:30s2 1.615; cool_exit 1.51; all_fans 0; dw_stress 0; dw_until 21; engage 1.29; all 1.47; pulse 33.75; gap 37.5; wt 1.6333333333333333Monday sunrise: repeat early band-coupled posture for anothe
12:00s2 1.4324999999999999; cool_exit 1.24; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.42; pulse 41.25; gap 18.75; wt 1.8666666666666667Monday peak: structural heat likely; preserve wet/fog assist
21:00s2 1.825; cool_exit 1.69; all_fans 0; dw_stress 0; dw_until 22; engage 1.32; all 1.52; pulse 30; gap 41.25; wt 1.5666666666666669Monday evening recovery: taper only after observed VPD falls

Tuesday July 14

Primary crop-band changes:

TimeValuesNote
06:30hyst 0.1825Tuesday sunrise handoff: same hot-dry setup continues, with
12:00hyst 0.16749999999999998Tuesday peak: maintain compliance-first hot-dry posture unde
21:00hyst 0.20249999999999999End of 72h plan: begin evening resource taper while preservi

Tactical tunable changes:

TimeValuesNote
06:30s2 1.615; cool_exit 1.51; all_fans 0; dw_stress 0; dw_until 21; engage 1.29; all 1.47; pulse 33.75; gap 37.5; wt 1.6333333333333333Tuesday sunrise handoff: same hot-dry setup continues, with
12:00s2 1.4324999999999999; cool_exit 1.24; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.42; pulse 41.25; gap 18.75; wt 1.8666666666666667Tuesday peak: maintain compliance-first hot-dry posture unde
21:00s2 1.8699999999999999; cool_exit 1.87; all_fans 0; dw_stress 0; dw_until 22; engage 1.3399999999999999; all 1.5699999999999998; pulse 30; gap 52.5; wt 1.4333333333333333End of 72h plan: begin evening resource taper while preservi

Changed secondary parameters:

TimeParameterChange
00:16band_track_fractioninitial 0
00:16cold_vent_guard_delta_finitial 8
00:16cool_stage2_exit_hysteresis_finitial 1
00:16direct_wet_stress_min_dew_margin_finitial 8
00:16direct_wet_stress_vpd_margin_kpainitial 0.12
00:16dwell_gate_msinitial 285000
00:16enthalpy_closeinitial 1
00:16enthalpy_openinitial -2
00:16fog_escalation_kpainitial 0.35
00:16heat_hysteresisinitial 1
00:16min_fog_off_sinitial 108
00:16min_fog_on_sinitial 45.75
00:16mist_backoff_sinitial 600
00:16mist_max_closed_vent_sinitial 600
00:16mist_thermal_relief_sinitial 90
00:16mister_all_delay_sinitial 97.5
00:16mister_engage_delay_sinitial 48.75
00:16mister_water_budget_galinitial 220
00:16night_vpd_bias_kpainitial 0
00:16outdoor_staleness_max_sinitial 600
00:16sw_dwell_gate_enabledinitial 1
00:16sw_fog_closes_ventinitial 1
00:16sw_mister_closes_ventinitial 0
00:16sw_summer_vent_enabledinitial 1
00:16temp_hysteresisinitial 2.05
00:16vent_exchange_fractioninitial 0.3
00:16vent_prefer_dp_delta_finitial 4
00:16vent_prefer_temp_delta_finitial 4
00:16vpd_watch_dwell_sinitial 71.25
03:30direct_wet_stress_vpd_margin_kpa0.12 → 0.15
03:30dwell_gate_ms285000 → 300000
03:30fog_escalation_kpa0.35 → 0.4
03:30min_fog_off_s108 → 114
03:30min_fog_on_s45.75 → 43.5
03:30mister_all_delay_s97.5 → 102
03:30mister_engage_delay_s48.75 → 51
03:30temp_hysteresis2.05 → 2.14
03:30vpd_watch_dwell_s71.25 → 75
06:30cold_vent_guard_delta_f8 → 7
06:30direct_wet_stress_vpd_margin_kpa0.15 → 0.07
06:30dwell_gate_ms300000 → 195000
06:30fog_escalation_kpa0.4 → 0.2
06:30min_fog_off_s114 → 66
06:30min_fog_on_s43.5 → 61.5
06:30mister_all_delay_s102 → 70.5
06:30mister_engage_delay_s51 → 35.25
06:30mister_water_budget_gal220 → 300
06:30temp_hysteresis2.14 → 1.51
06:30vent_prefer_temp_delta_f4 → 3
06:30vpd_watch_dwell_s75 → 48.75
09:00direct_wet_stress_vpd_margin_kpa0.07 → 0.05
09:00dwell_gate_ms195000 → 165000
09:00fog_escalation_kpa0.2 → 0.15
09:00min_fog_off_s66 → 48
09:00min_fog_on_s61.5 → 68.25
09:00mister_all_delay_s70.5 → 61.5
09:00mister_engage_delay_s35.25 → 30.75
09:00temp_hysteresis1.51 → 1.33
09:00vpd_watch_dwell_s48.75 → 41.25
12:00dwell_gate_ms165000 → 150000
12:00min_fog_off_s48 → 36
12:00min_fog_on_s68.25 → 72.75
12:00mister_all_delay_s61.5 → 60
12:00mister_engage_delay_s30.75 → 30
12:00temp_hysteresis1.33 → 1.24
12:00vpd_watch_dwell_s41.25 → 37.5
17:00dwell_gate_ms150000 → 165000
17:00fog_escalation_kpa0.15 → 0.2
17:00min_fog_off_s36 → 42
17:00min_fog_on_s72.75 → 70.5
17:00mister_all_delay_s60 → 61.5
17:00mister_engage_delay_s30 → 30.75
17:00temp_hysteresis1.24 → 1.33
17:00vpd_watch_dwell_s37.5 → 41.25
21:00cold_vent_guard_delta_f7 → 8
21:00direct_wet_stress_vpd_margin_kpa0.05 → 0.1
21:00dwell_gate_ms165000 → 225000
21:00fog_escalation_kpa0.2 → 0.3
21:00min_fog_off_s42 → 72
21:00min_fog_on_s70.5 → 59.25
21:00mister_all_delay_s61.5 → 79.5
21:00mister_engage_delay_s30.75 → 39.75
21:00temp_hysteresis1.33 → 1.69
21:00vent_prefer_temp_delta_f3 → 4
21:00vpd_watch_dwell_s41.25 → 56.25
23:30direct_wet_stress_vpd_margin_kpa0.1 → 0.15
23:30dwell_gate_ms225000 → 300000
23:30fog_escalation_kpa0.3 → 0.4
23:30min_fog_off_s72 → 114
23:30min_fog_on_s59.25 → 43.5
23:30mister_all_delay_s79.5 → 102
23:30mister_engage_delay_s39.75 → 51
23:30mister_water_budget_gal300 → 240
23:30temp_hysteresis1.69 → 2.14
23:30vpd_watch_dwell_s56.25 → 75
06:30cold_vent_guard_delta_f8 → 7
06:30direct_wet_stress_vpd_margin_kpa0.15 → 0.07
06:30dwell_gate_ms300000 → 195000
06:30fog_escalation_kpa0.4 → 0.2
06:30min_fog_off_s114 → 66
06:30min_fog_on_s43.5 → 61.5
06:30mister_all_delay_s102 → 70.5
06:30mister_engage_delay_s51 → 35.25
06:30mister_water_budget_gal240 → 300
06:30temp_hysteresis2.14 → 1.51
06:30vent_prefer_temp_delta_f4 → 3
06:30vpd_watch_dwell_s75 → 48.75
12:00direct_wet_stress_vpd_margin_kpa0.07 → 0.05
12:00dwell_gate_ms195000 → 150000
12:00fog_escalation_kpa0.2 → 0.15
12:00min_fog_off_s66 → 36
12:00min_fog_on_s61.5 → 72.75
12:00mister_all_delay_s70.5 → 60
12:00mister_engage_delay_s35.25 → 30
12:00temp_hysteresis1.51 → 1.24
12:00vpd_watch_dwell_s48.75 → 37.5
21:00cold_vent_guard_delta_f7 → 8
21:00direct_wet_stress_vpd_margin_kpa0.05 → 0.1
21:00dwell_gate_ms150000 → 225000
21:00fog_escalation_kpa0.15 → 0.3
21:00min_fog_off_s36 → 72
21:00min_fog_on_s72.75 → 59.25
21:00mister_all_delay_s60 → 79.5
21:00mister_engage_delay_s30 → 39.75
21:00temp_hysteresis1.24 → 1.69
21:00vent_prefer_temp_delta_f3 → 4
21:00vpd_watch_dwell_s37.5 → 56.25
06:30cold_vent_guard_delta_f8 → 7
06:30direct_wet_stress_vpd_margin_kpa0.1 → 0.07
06:30dwell_gate_ms225000 → 195000
06:30fog_escalation_kpa0.3 → 0.2
06:30min_fog_off_s72 → 66
06:30min_fog_on_s59.25 → 61.5
06:30mister_all_delay_s79.5 → 70.5
06:30mister_engage_delay_s39.75 → 35.25
06:30temp_hysteresis1.69 → 1.51
06:30vent_prefer_temp_delta_f4 → 3
06:30vpd_watch_dwell_s56.25 → 48.75
12:00direct_wet_stress_vpd_margin_kpa0.07 → 0.05
12:00dwell_gate_ms195000 → 150000
12:00fog_escalation_kpa0.2 → 0.15
12:00min_fog_off_s66 → 36
12:00min_fog_on_s61.5 → 72.75
12:00mister_all_delay_s70.5 → 60
12:00mister_engage_delay_s35.25 → 30
12:00temp_hysteresis1.51 → 1.24
12:00vpd_watch_dwell_s48.75 → 37.5
21:00cold_vent_guard_delta_f7 → 8
21:00direct_wet_stress_vpd_margin_kpa0.05 → 0.12
21:00dwell_gate_ms150000 → 255000
21:00fog_escalation_kpa0.15 → 0.35
21:00min_fog_off_s36 → 90
21:00min_fog_on_s72.75 → 52.5
21:00mister_all_delay_s60 → 88.5
21:00mister_engage_delay_s30 → 44.25
21:00mister_water_budget_gal300 → 260
21:00temp_hysteresis1.24 → 1.87
21:00vent_prefer_temp_delta_f3 → 4
21:00vpd_watch_dwell_s37.5 → 63.75

🌅 Morning Cycle (5:45 AM) — iris-20260712-0543

Status

validated

Outcome score

5/10

Changed parameters

band_track_fraction, cold_vent_guard_delta_f, cool_exit_hysteresis_f, cool_stage2_exit_hysteresis_f, cool_stage2_over_high_f, direct_wet_stress_latest_hour, direct_wet_stress_min_dew_margin_f, direct_wet_stress_vpd_margin_kpa ...

Reflection

Validating previous cycle: iris-20260711-2031

Previous hypothesis: SUNSET overnight plan for Saturday 2026-07-11. Scorecard and window scorecards are degraded by db_statement_timeout, so this plan relies on live MCP climate, 24h pattern/runtime, forecast, alert state, and plan_evaluate. Previous plan iris-20260710-1456 self-score was 5/10 but deterministic anchor was 2 due 914 VPD-high guardrail events and 783 held events; the gap means I should not assume requested moisture values realized at the ESP32. Tonight is not a cold-night problem: forecast bottoms near 63F with clear sky and outdoor VPD falling from raw 3.06 to 0.86 kPa by sunrise. Current house is safe and in corridor at about 81.1F, VPD 1.08 kPa, RH 70%, dew margin 10.7F, IDLE. Main challenge is drying recovery without needless overnight water/fog/churn while preserving enough humidity for Vanda and preparing for another extreme hot-dry ramp Sunday… Result: SUNRISE feedback loop for 2026-07-12: daily scorecard call timed out (db_statement_timeout), so evaluation uses the assembled window scorecard, structured predicted-vs-actual block, alerts, water trend, and plan history. Safety and dew margin held, and the forecast shape was right: actual outdoor peak about 98.4F versus 98F predicted, severe clear hot-dry conditions, and solar peaked even higher than expected (1088 W/m2 versus 906). The bottleneck was VPD, not temperature: window scorecard for iris-20260712-0543 showed score about 0.617, compliance about 66.5, temp axis about 46.4, VPD axis about 34.1, heat stress about 6.0h and VPD-high stress about 7.7h. The plan correctly used guardrail-compatible wet/fog assist, but it did not reduce VPD-high enough; VPD stress alerts reached roughly 14-17h later in the day and water climbed to about 413 gal, so cooling plus fog/misting dominated cost rather than gas. The self-score is moderate because safety and material posture were appropriate, but the deterministic anchor should be treated as a warning that hot-dry physics plus guardrail/materialization limits still left substantial stress. Score: 5/10

New finding: On 98-100F July days with solar near or above 900 W/m2 and RH below 15%, band-coupled wet/fog assist is necessary but not sufficient; expect VPD-high to remain the limiting axis and keep evening recovery conditional on measured in-band VPD rather than clock time, while flagging shade/intake capacity as the durable hardware limit. → Added to Lessons Learned

Hypothesis

Testing: Guardrail-compatible persistence: keep wet/fog assist band-coupled through the dry evening instead of clock-only taper; success is fewer house-too-dry/vent-moisture-gap alerts and fewer guardrail-held events than yesterday. Expected outcome: Safety and dew margin remain good (dp margin >=8F); VPD-high stress persists but vent-moisture-gap alerts are reduced; guardrail-held events fall versus the 686-event sunset plan; water may approach the 300 gal practical cap because compliance has priority today.

Conditions

Outdoor peak

98.0°F

RH minimum

12.0%

Solar peak

906.0 W/m²

Cloud average

0.0%

clear extreme hot-dry July day; raw forecast VPD is positively biased but corrected prior still exceeds band from morning through evening

Expected stress windows

vpd_highhigh · 2026-07-12T08:30:00-06:00 to 2026-07-12T22:00:00-06:00

band-coupled S1 mist near vpd_high+0.05, all-zone near +0.25, fog escalation 0.15 while dew/RH/time gates allow

heathigh · 2026-07-12T11:00:00-06:00 to 2026-07-12T20:00:00-06:00

pre-cool, VENTILATE with fan stack and wet/fog assist; accept physically limited misses when outdoor approaches served high

vpd_highhigh · 2026-07-13T08:30:00-06:00 to 2026-07-13T22:30:00-06:00

repeat guardrail-compatible hot-dry moisture posture

heathigh · 2026-07-13T11:00:00-06:00 to 2026-07-13T21:00:00-06:00

same pre-cool and vent-mist/fog assist posture

vpd_highhigh · 2026-07-14T08:30:00-06:00 to 2026-07-14T23:00:00-06:00

continue aggressive moisture support; do not clock-unwind while evening VPD remains high

Parameter rationale

mister_engage_kpa1.37 → 1.27; forecast RH falls to 12-14% with VPD far above band by early afternoon

serve S1 mist near vpd_high+0.05 rather than holding conservative thresholds during live dry stress

mister_all_kpa1.62 → 1.47; broad-house hot-dry ramp and prior vent moisture capacity alerts

bring all-zone rotation on around vpd_high+0.25 during persistent VPD-high

fog_escalation_kpa0.4 → 0.15; hot-dry VENTILATE overlaps the 07:00-17:00 fog window and fog is the 7x wet path

reduce house-too-dry and vent-moisture-gap alerts during peak stress while dew margin remains above 8F

mister_pulse_gap_s60.0 → 22.0; solar near 900 W/m2 and corrected VPD remains severe from 12:00-18:00

increase wet duty at peak without changing crop bands or relying on invalid band widening

mister_water_budget_gal220.0 → 300.0; new dry day with safe dew margin and water cap should not be the active bottleneck

avoid budget clipping during peak VPD recovery

Setpoints

Sunday July 12

Primary crop-band changes:

TimeValuesNote
05:43hyst 0.19749999999999998Dawn is currently safe and served, but the dry ramp starts b
08:30hyst 0.1875Morning ramp: solar and raw VPD rise quickly; pre-cool and m
12:00hyst 0.1825Peak stress: 92-98F, RH teens, solar near 900 W/m2; complian
17:30hyst 0.1925Decline remains hot and very dry; do not unwind wet assist o
21:30hyst 0.20749999999999996Night taper is modest only: fog is clock-blocked, but outdoo

Tactical tunable changes:

TimeValuesNote
05:43s2 1.7950000000000002; cool_exit 1.78; all_fans 0; dw_stress 0; dw_until 22; engage 1.3; all 1.47; pulse 30; gap 48.75; wt 1.4866666666666666Dawn is currently safe and served, but the dry ramp starts b
08:30s2 1.6800000000000002; cool_exit 1.6; all_fans 0; dw_stress 0; dw_until 22; engage 1.27; all 1.47; pulse 33.75; gap 37.5; wt 1.6333333333333333Morning ramp: solar and raw VPD rise quickly; pre-cool and m
12:00s2 1.6150000000000002; cool_exit 1.51; all_fans 0; dw_stress 1; dw_until 22; engage 1.27; all 1.44; pulse 37.5; gap 30; wt 1.7333333333333334Peak stress: 92-98F, RH teens, solar near 900 W/m2; complian
17:30s2 1.715; cool_exit 1.69; all_fans 0; dw_stress 0; dw_until 22; engage 1.27; all 1.47; pulse 33.75; gap 37.5; wt 1.6333333333333333Decline remains hot and very dry; do not unwind wet assist o
21:30s2 1.8775000000000002; cool_exit 1.96; all_fans 0; dw_stress 0; dw_until 22; engage 1.3; all 1.5; pulse 30; gap 56.25; wt 1.42Night taper is modest only: fog is clock-blocked, but outdoo

Monday July 13

Primary crop-band changes:

TimeValuesNote
08:00hyst 0.1825Monday repeats the extreme hot-dry pattern; keep the same gu
21:30hyst 0.20749999999999996Monday night stays dry; taper water and churn but keep VPD r

Tactical tunable changes:

TimeValuesNote
08:00s2 1.6325; cool_exit 1.51; all_fans 0; dw_stress 1; dw_until 22; engage 1.27; all 1.44; pulse 37.5; gap 30; wt 1.7333333333333334Monday repeats the extreme hot-dry pattern; keep the same gu
21:30s2 1.8775000000000002; cool_exit 1.96; all_fans 0; dw_stress 0; dw_until 22; engage 1.3; all 1.5; pulse 30; gap 56.25; wt 1.42Monday night stays dry; taper water and churn but keep VPD r

Tuesday July 14

Primary crop-band changes:

TimeValuesNote
08:00hyst 0.1825Tuesday is forecast near 100F with RH near 11%; hold peak ho

Tactical tunable changes:

TimeValuesNote
08:00s2 1.6150000000000002; cool_exit 1.51; all_fans 0; dw_stress 1; dw_until 22; engage 1.27; all 1.44; pulse 37.5; gap 30; wt 1.7333333333333334Tuesday is forecast near 100F with RH near 11%; hold peak ho

Changed secondary parameters:

TimeParameterChange
05:43band_track_fractioninitial 0
05:43cold_vent_guard_delta_finitial 8
05:43cool_stage2_exit_hysteresis_finitial 1
05:43direct_wet_stress_min_dew_margin_finitial 8
05:43direct_wet_stress_vpd_margin_kpainitial 0.08
05:43dwell_gate_msinitial 240000
05:43enthalpy_closeinitial 1
05:43enthalpy_openinitial -2
05:43fog_escalation_kpainitial 0.25
05:43heat_hysteresisinitial 1
05:43min_fog_off_sinitial 84
05:43min_fog_on_sinitial 54.75
05:43mist_backoff_sinitial 600
05:43mist_max_closed_vent_sinitial 600
05:43mist_thermal_relief_sinitial 90
05:43mister_all_delay_sinitial 84
05:43mister_engage_delay_sinitial 42
05:43mister_water_budget_galinitial 300
05:43night_vpd_bias_kpainitial 0
05:43outdoor_staleness_max_sinitial 600
05:43sw_dwell_gate_enabledinitial 1
05:43sw_fog_closes_ventinitial 1
05:43sw_mister_closes_ventinitial 0
05:43sw_summer_vent_enabledinitial 1
05:43temp_hysteresisinitial 1.78
05:43vent_exchange_fractioninitial 0.3
05:43vent_prefer_dp_delta_finitial 3
05:43vent_prefer_temp_delta_finitial 4
05:43vpd_watch_dwell_sinitial 60
08:30direct_wet_stress_vpd_margin_kpa0.08 → 0.05
08:30dwell_gate_ms240000 → 210000
08:30fog_escalation_kpa0.25 → 0.15
08:30min_fog_off_s84 → 66
08:30min_fog_on_s54.75 → 61.5
08:30mister_all_delay_s84 → 75
08:30mister_engage_delay_s42 → 37.5
08:30temp_hysteresis1.78 → 1.6
08:30vpd_watch_dwell_s60 → 52.5
12:00dwell_gate_ms210000 → 195000
12:00min_fog_off_s66 → 54
12:00min_fog_on_s61.5 → 66
12:00mister_all_delay_s75 → 70.5
12:00mister_engage_delay_s37.5 → 35.25
12:00temp_hysteresis1.6 → 1.51
12:00vpd_watch_dwell_s52.5 → 48.75
17:30dwell_gate_ms195000 → 225000
17:30fog_escalation_kpa0.15 → 0.2
17:30min_fog_off_s54 → 66
17:30min_fog_on_s66 → 61.5
17:30mister_all_delay_s70.5 → 79.5
17:30mister_engage_delay_s35.25 → 39.75
17:30temp_hysteresis1.51 → 1.69
17:30vpd_watch_dwell_s48.75 → 56.25
21:30direct_wet_stress_vpd_margin_kpa0.05 → 0.08
21:30dwell_gate_ms225000 → 270000
21:30fog_escalation_kpa0.2 → 0.3
21:30min_fog_off_s66 → 96
21:30min_fog_on_s61.5 → 50.25
21:30mister_all_delay_s79.5 → 93
21:30mister_engage_delay_s39.75 → 46.5
21:30mister_water_budget_gal300 → 260
21:30temp_hysteresis1.69 → 1.96
21:30vpd_watch_dwell_s56.25 → 67.5
08:00direct_wet_stress_vpd_margin_kpa0.08 → 0.05
08:00dwell_gate_ms270000 → 195000
08:00fog_escalation_kpa0.3 → 0.15
08:00min_fog_off_s96 → 54
08:00min_fog_on_s50.25 → 66
08:00mister_all_delay_s93 → 70.5
08:00mister_engage_delay_s46.5 → 35.25
08:00mister_water_budget_gal260 → 300
08:00temp_hysteresis1.96 → 1.51
08:00vpd_watch_dwell_s67.5 → 48.75
21:30direct_wet_stress_vpd_margin_kpa0.05 → 0.08
21:30dwell_gate_ms195000 → 270000
21:30fog_escalation_kpa0.15 → 0.3
21:30min_fog_off_s54 → 96
21:30min_fog_on_s66 → 50.25
21:30mister_all_delay_s70.5 → 93
21:30mister_engage_delay_s35.25 → 46.5
21:30mister_water_budget_gal300 → 260
21:30temp_hysteresis1.51 → 1.96
21:30vpd_watch_dwell_s48.75 → 67.5
08:00direct_wet_stress_vpd_margin_kpa0.08 → 0.05
08:00dwell_gate_ms270000 → 195000
08:00fog_escalation_kpa0.3 → 0.15
08:00min_fog_off_s96 → 54
08:00min_fog_on_s50.25 → 66
08:00mister_all_delay_s93 → 70.5
08:00mister_engage_delay_s46.5 → 35.25
08:00mister_water_budget_gal260 → 300
08:00temp_hysteresis1.96 → 1.51
08:00vpd_watch_dwell_s67.5 → 48.75

🌆 Evening Cycle (8:34 PM) — iris-20260712-2032

Status

validated

Outcome score

5/10

Changed parameters

band_track_fraction, cold_vent_guard_delta_f, cool_exit_hysteresis_f, cool_stage2_exit_hysteresis_f, cool_stage2_over_high_f, direct_wet_stress_latest_hour, direct_wet_stress_min_dew_margin_f, direct_wet_stress_vpd_margin_kpa ...

Reflection

Validating previous cycle: iris-20260712-0543

Previous hypothesis: SUNRISE plan for Sunday 2026-07-12. Yesterday/window scorecards are degraded by db_statement_timeout, and semantic retrieval is degraded because OPENAI_API_KEY is missing, so this plan is grounded in assembled context, live MCP climate/equipment, alerts, active lessons, and the 18h/72h forecast. I evaluated iris-20260711-2031 at 4/10, but the deterministic anchor was 1 because 686 VPD-high guardrail events and 650 held-by-guardrail events show the requested taper was poorly realized; the gap means I should privilege guardrail-compatible band-coupled values today instead of assuming the ESP32 received conservative overnight/resource values. Current house is safe and served: about 69F, VPD 0.79 kPa, RH 67%, dew margin 11.3F, IDLE, all equipment off. Today through Tuesday is an extreme hot-dry sequence near 97-100F, RH 10-14%, solar 850-930 W/m2… Result: Sunset recovery plan governed roughly 3.7h before midnight reset. Daily scorecard remains unavailable due db_statement_timeout and the window scorecard row is degraded/zeroed, so this evaluation uses live MCP climate/equipment, alerts, current setpoints, and guardrail audit. Safety and dew margin were good: at midnight house is about 74.1F, VPD 1.07 kPa against current high about 1.22, RH 62%, dew margin 13.8F; heaters are off, vent and both fans are cooling, fog/misters off. The plan’s expected overnight no-cold-stress and low-value water reduction goals were mostly met, and VPD recovered near/inside the served corridor by the reset. Miss: VPD stress alerts continued after plan start from about 20:38 through 22:43, reaching 17.3h for the day, so the evening recovery was late/incomplete. Guardrail audit also shows the plan requested some moisture taper values that were guardrailed or held, so not all requested posture reached firmware exactly. Overall: safe and partially successful resource recovery, but VPD-high remained the limiting axis and clock/resource taper still needs to be conditional on measured recovery. Score: 5/10

New finding: After an extreme hot-dry day, a sunset taper can conserve water only after observed house VPD is inside the served band for a sustained period; if VPD stress alerts continue after sunset, keep guardrail-compatible wet assist available until measured recovery, then taper modestly overnight. → Added to Lessons Learned

Hypothesis

Testing: Sunset recovery taper with guardrail-compatible fallback: preserve nonzero evening dry-edge mist, conserve after midnight, and automatically reopen hot-dry posture at 08:00 if the next sunrise cycle is delayed. Expected outcome: Dew margin remains >=8F overnight, no cold-stress response is needed, overnight water/churn falls versus the 364 gal daytime total, VPD remains near/inside the served corridor by pre-dawn, and Monday morning has full moisture/fog availability before the 100F dry ramp.

Conditions

Outdoor peak

100.0°F

RH minimum

11.0%

Solar peak

911.0 W/m²

Cloud average

3.0%

warm dry Sunday night after extreme hot-dry day; Monday forecast repeats near 100F, RH 11-15%, solar near 900 W/m2. Forecast VPD has a known positive bias, but corrected VPD remains severe by midday.

Expected stress windows

vpd_highmedium · 2026-07-12T20:32:00-06:00 to 2026-07-12T22:00:00-06:00

keep evening moisture engage near vpd_high+0.05 and all-zone near +0.25 while dew margin is safe; avoid clock-only closure before observed recovery

vpd_highhigh · 2026-07-13T08:00:00-06:00 to 2026-07-13T22:00:00-06:00

morning fallback restores engage near vpd_high+0.05, all-zone near +0.22, fog escalation 0.15, full 300 gal budget

heathigh · 2026-07-13T11:00:00-06:00 to 2026-07-13T21:00:00-06:00

pre-cool lead time 45 min, solar precool gain 1.5, wet/fog assist during VENTILATE; accept physics-limited misses near 100F

Parameter rationale

mister_engage_kpa1.0 → 1.27; current VPD is near the high edge with east already dry, and Monday corrected VPD becomes severe after 08:00

avoid suppressing S1 mist during live dry-edge recovery while still tapering after midnight

mister_all_kpa1.2 → 1.47; zone spread and prior vent_moisture_capacity_limit alerts show broad-house dry stress during hot ventilation

keep all-zone assist available near vpd_high+0.22 to +0.25 during evening and Monday ramp

fog_escalation_kpa0.2 → 0.15; Monday hot-dry VENTILATE overlaps the 07:00-17:00 fog window and fog is the 7x wet-assist path

make fog available during severe dry ventilation if sunrise cycle is delayed, while overnight fog remains clock-blocked

mister_pulse_gap_s30.0 → 30.0; overnight humidity should hold when sealed, but Monday dry ramp requires moderate duty before full sunrise replanning

avoid adding relay/water churn overnight while preserving enough duty during dry-edge recovery

mister_water_budget_gal300.0 → 240.0; water reached about 364 gal today, but VPD is currently near band and dew margin is safe

reduce low-value overnight water while restoring 300 gal for Monday peak stress at 08:00

Setpoints

Sunday July 12

Primary crop-band changes:

TimeValuesNote
20:32hyst 0.1875evening_settle: VPD is just inside house band but east is st

Tactical tunable changes:

TimeValuesNote
20:32s2 1.87; cool_exit 1.6; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 33.75; gap 41.25; wt 1.7evening_settle: VPD is just inside house band but east is st

Monday July 13

Primary crop-band changes:

TimeValuesNote
00:30hyst 0.1875midnight_posture: no cold risk and humidity should hold when
05:30hyst 0.1875pre_dawn: forecast minimum is near 64F, so heating cost is n
08:00hyst 0.1875morning_ramp_fallback: Monday forecast reaches about 100F, R
21:30hyst 0.1875next_evening_recovery: Monday evening remains hot and very d

Tactical tunable changes:

TimeValuesNote
00:30s2 1.905; cool_exit 1.6; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 33.75; gap 41.25; wt 1.7midnight_posture: no cold risk and humidity should hold when
05:30s2 1.8175000000000001; cool_exit 1.6; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 33.75; gap 41.25; wt 1.7pre_dawn: forecast minimum is near 64F, so heating cost is n
08:00s2 1.6125; cool_exit 1.6; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.44; pulse 36; gap 33.75; wt 1.7morning_ramp_fallback: Monday forecast reaches about 100F, R
21:30s2 1.8875; cool_exit 1.6; all_fans 0; dw_stress 1; dw_until 21; engage 1.27; all 1.47; pulse 33.75; gap 41.25; wt 1.7next_evening_recovery: Monday evening remains hot and very d

Changed secondary parameters:

TimeParameterChange
20:32band_track_fractioninitial 0
20:32cold_vent_guard_delta_finitial 8
20:32cool_stage2_exit_hysteresis_finitial 1
20:32direct_wet_stress_min_dew_margin_finitial 8
20:32direct_wet_stress_vpd_margin_kpainitial 0.05
20:32dwell_gate_msinitial 210000
20:32enthalpy_closeinitial 1
20:32enthalpy_openinitial -2
20:32fog_escalation_kpainitial 0.25
20:32heat_hysteresisinitial 1
20:32min_fog_off_sinitial 72
20:32min_fog_on_sinitial 59.25
20:32mist_backoff_sinitial 600
20:32mist_max_closed_vent_sinitial 600
20:32mist_thermal_relief_sinitial 90
20:32mister_all_delay_sinitial 75
20:32mister_engage_delay_sinitial 37.5
20:32mister_water_budget_galinitial 240
20:32night_vpd_bias_kpainitial 0
20:32outdoor_staleness_max_sinitial 600
20:32sw_dwell_gate_enabledinitial 1
20:32sw_fog_closes_ventinitial 1
20:32sw_mister_closes_ventinitial 0
20:32sw_summer_vent_enabledinitial 1
20:32temp_hysteresisinitial 1.6
20:32vent_exchange_fractioninitial 0.3
20:32vent_prefer_dp_delta_finitial 3
20:32vent_prefer_temp_delta_finitial 4
20:32vpd_watch_dwell_sinitial 52.5
00:30cold_vent_guard_delta_f8 → 9
00:30mister_water_budget_gal240 → 220
00:30vent_prefer_dp_delta_f3 → 4
00:30vent_prefer_temp_delta_f4 → 5
05:30cold_vent_guard_delta_f9 → 8
05:30mister_water_budget_gal220 → 240
05:30vent_prefer_dp_delta_f4 → 3
05:30vent_prefer_temp_delta_f5 → 4
08:00fog_escalation_kpa0.25 → 0.15
08:00min_fog_off_s72 → 60
08:00min_fog_on_s59.25 → 63.75
08:00mister_water_budget_gal240 → 300
21:30fog_escalation_kpa0.15 → 0.25
21:30min_fog_off_s60 → 72
21:30min_fog_on_s63.75 → 59.25
21:30mister_water_budget_gal300 → 240

End-of-Day Summary

Climate

Temperature

68.3–91.8°F; avg 77.9°F

VPD

0.78–3.06 kPa; avg 1.34 kPa

Relative humidity

38.2–74.4%

Interior Light Evidence

  • Crop DLI: unavailable
  • Reason: source_reading_missing
  • Provenance: legacy_invalid_exterior_proxy_plus_fixture_estimate
  • Validity: dli-validity-v1; 2024-01-01T00:00:00+00:00 → open
  • Qualified-light minutes and photoperiod remain independent of unavailable DLI.

Stress Hours

  • Heat stress (>85°F): 5.0h
  • VPD stress (>2.0 kPa): 10.3h
  • Cold stress (<55°F): 8.2h

Economics

Electric

USD —

Gas

USD 0.00

Water

USD —

Total

USD —

Equipment Runtimes

EquipmentRuntimeReading
Fan 1657 minPrimary exhaust runtime.
Fan 2666 minSecondary exhaust runtime.
Vent834 minIntake vent runtime.
Fog440 minFogger runtime.
Heat 1 electric0 minElectric heater runtime.
Heat 2 gas0 minGas heater runtime.
Grow lights639 minSupplemental lighting runtime.
Mister south0.00hSouth mister runtime.
Mister west0.00hWest mister runtime.
Mister center2.01hCenter mister runtime.

Hourly Pattern

HourTemperatureVPDRH
12:0082.5°F1.26 kPa67.2%
13:0083.7°F1.41 kPa65.7%
14:0085.4°F1.71 kPa60.9%
15:0087.0°F1.94 kPa57.0%
16:0085.4°F1.65 kPa61.5%
17:0083.7°F1.34 kPa66.6%
18:0083.0°F1.29 kPa66.8%
19:0081.8°F1.17 kPa68.7%
20:0080.5°F1.21 kPa66.0%
21:0079.7°F1.95 kPa44.0%
22:0078.4°F1.80 kPa45.7%
23:0076.1°F1.60 kPa48.2%
00:0072.7°F1.16 kPa58.2%
01:0071.1°F1.11 kPa57.6%
02:0070.1°F1.16 kPa54.1%
03:0068.9°F1.16 kPa52.1%
04:0068.7°F1.03 kPa56.9%
05:0069.2°F0.82 kPa66.2%
06:0070.6°F0.91 kPa64.8%
07:0072.6°F0.93 kPa66.2%
08:0074.4°F0.99 kPa66.0%
09:0077.4°F1.12 kPa65.4%
10:0079.6°F1.12 kPa68.0%
11:0081.2°F1.18 kPa67.9%

7-Day Stress Context

DateHeatVPD highCold
2026-07-062.5h8.6h0.0h
2026-07-070.8h12.5h0.0h
2026-07-083.4h9.0h0.0h
2026-07-090.5h4.6h0.0h
2026-07-102.4h3.8h1.0h
2026-07-113.8h9.0h9.2h
2026-07-125.1h10.3h8.2h