May 22, 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.
8
3
5
0
| Event | Delivered | Type | Status | Note |
|---|---|---|---|---|
| End-of-day review and reset | 00:15 | MIDNIGHT | plan_written | Wrote public plan iris-20260522-0015. Resolved 00:18 MDT. |
| Morning planning cycle | 05:40 | SUNRISE | plan_written | Wrote public plan iris-20260522-0540. Resolved 05:43 MDT. |
| Solar peak planning checkpoint | 12:58 | SOLAR_MAX | acked | Acknowledged: SOLAR_MAX no tunable change. Live solar is high at 1068 W/m2 and above bias-corrected forecast, but the active SUNRISE plan already covers the dry afternoon with guardrail-aware band-coupled moisture: fog_escalation_kpa 0.20, mister_engage_kpa 1.20 now moving to 1.10 at 14:30, mister_all_kpa 1.45 now moving to 1.30, short delays/gaps, and healthy dew margin 14.4F. Greenhouse VPD is 1.20 against vpd_high 1.30; only east is locally high at 1... Resolved 12:58 MDT. |
| Peak Stress | 14:58 | TRANSITION | acked | Acknowledged: Peak-stress transition checked. Current house is in VENTILATE with vent and both fans active; avg VPD 1.25 is only slightly above active vpd_high 1.23, east 1.37 while south/west are below/near targets, dew margin is safe at 13.1F, and the active SUNRISE plan is already in guardrail-aware peak-dry posture (mister_engage_kpa 1.05, mister_all_kpa 1.25, gap 25s, fog_escalation_kpa 0.20). Retrieved comparable dry-solar plans support this posture; no concrete signal warrants further tunable changes. Resolved 14:58 MDT. |
| Forecast deviation | 19:10 | FORECAST_DEVIATION | acked | Acknowledged: FORECAST_DEVIATION reviewed at 19:10 MDT: observed VPD is lower/more humid than forecast (live greenhouse 0.85 kPa, 63% RH, 67.3F; outdoor 60.7F/45% RH; solar essentially gone at 13 W/m2). Equipment state is normal IDLE with heat1 on, vent/fans/fog/misters off. Diagnosis: forecast/moisture miss in the same direction as recent VPD forecast overshoot bias, not an equipment fault or new hot-dry regime. Dew margin is safe at 12... Resolved 19:10 MDT. |
| Decline | 19:16 | TRANSITION | acked | Acknowledged: Decline checkpoint no-change: current house is IDLE at 67.4F, VPD 0.78 kPa, RH 67%, dew margin 11.5F, with all moisture/vent/fog outputs off and only heat1 on. East remains locally dry at 1.10 kPa and recent guardrail evidence shows VPD-high is not fully recovered, so an early unwind would risk cutting support before recovery. Existing plan already carries the dry-evening posture until 22:30, then unwinds to conservative overnight thresholds; no concrete signal warrants a one-shot tunable change. Resolved 19:17 MDT. |
| Evening planning cycle | 20:16 | SUNSET | plan_written | Wrote public plan iris-20260522-2016. Resolved 20:23 MDT. |
| Forecast deviation | 20:57 | FORECAST_DEVIATION | acked | Acknowledged: FORECAST_DEVIATION assessed: wind and gust forecasts were too high, but current greenhouse is stable in IDLE at 66.1F, VPD 0.55 kPa, RH 76%, dew margin 8.0F, outdoor 54.4F/66% RH, solar 0, and all climate relays are off. No heat, VPD, dew-risk, or equipment signal warrants a tunable change; treating this as a wind forecast error rather than a regime shift. Resolved 20:58 MDT. |
🌅 Morning Cycle (12:18 AM) — iris-20260522-0015
validated
6/10
bias_cool, bias_heat, d_cool_stage_2, d_heat_stage_2, dwell_gate_ms, enthalpy_close, enthalpy_open, fog_escalation_kpa ...
Reflection
Validating previous cycle: iris-20260521-0541
Previous hypothesis: SUNRISE plan for Thursday 2026-05-21. Yesterday scored 71.9 with 76.9% both-axis compliance; VPD-low was the largest stress at 2.53h, while temp compliance was only slightly better than VPD compliance. The just-evaluated sunset plan scored 8/10, matching anchor 8: the cold saturated overnight posture avoided VPD stress and dew risk, with remaining loss mostly structural temperature-band alignment. Today starts cold and saturated around 41F/96% RH, indoor VPD 0.46 and dew margin 7.4F, but the forecast turns into a high-solar dry afternoon: 64-72F, RH 24-34%, raw VPD 1.5-2.0 kPa, solar 800+ W/m2 around midday. The plan keeps dawn moisture suppressed, then moves earlier than yesterday into guardrail-aware band-coupled moisture so the dispatcher does not need to clamp conservative values during VPD-high VENTILATE. Evening unwinds before RH rebounds. Result: Window scorecard while this midnight reset governed: cost about USD 0.226, both-axis compliance 64.4%, temp compliance 74.6%, VPD compliance 77.4%, heat stress 0.90h, cold stress 0.23h, VPD-high 0.79h, VPD-low 0.22h, total stress 1.30h, planner score 63.9. The plan correctly protected the cold saturated pre-dawn period with low VPD-low and dew-risk at 0h, then handed off to daytime dry-ramp support; remaining misses were mostly heat/VPD pressure and crop-band narrowness rather than condensation or over-misting. Score: 6/10
New finding: Cold saturated midnight/pre-dawn resets can safely use high moisture thresholds, conservative fog, short sealed residence, dwell gate ON, bias_cool +4, and modest heat support; expect some structural temp-band loss, but VPD-low and dew risk should stay low. → Added to Lessons Learned
Hypothesis
Testing: Test a two-stage Friday handoff: guarded humid/cold morning, then guardrail-aligned peak moisture instead of values the dispatcher must clamp. Expected outcome: Friday target: dp_risk_hours 0, VPD-low under 1h, VPD-high under 1.5h, cold stress near or below 1h, and fewer VPD-high moisture guardrail events than the evaluated SUNRISE plan.
Conditions
68.0°F
21.0%
803.0 W/m²
72.0%
Cold saturated pre-dawn around 42-48F and 77-84% RH, current indoor dew margin 5.7F, then dry afternoon ramp to RH 21-31%, outdoor VPD 1.4-1.8 kPa, and solar 700-800+ W/m2 with forecast calibration allowing higher live solar.
Expected stress windows
High mist thresholds, 55-60s gaps, long delays, fog_escalation 0.9-1.0, vpd_hysteresis 0.5, and 120s sealed cap while dew margin is only 5-6F.
bias_heat 1.8-2.0, d_heat_stage_2 3, heat_hysteresis 1.5, dwell gate ON, and bias_cool +4 to prevent heater-to-vent dumps.
Guardrail-aware moisture: engage 1.10-1.30, all 1.30-1.60, 45/90s peak delays, 25-35s gaps, fog_escalation 0.25-0.45, min_fog_off 60-90, bounded 150-180s sealed cap.
Evening unwind to engage 2.35, all 2.5, 60s gaps, fog_escalation 1.0, long delays, short sealed residence before RH rebounds.
Parameter rationale
Avoid pre-dawn mist/fog and keep dp-risk at 0h while VPD-low stays bounded.
Limit cold score loss without raising crop bands or continuous overheating.
Reduce VPD-high to under 1.5h and avoid repeated dispatcher moisture guardrail rewrites.
Allow all-zone assist during the dry peak instead of waiting far above the active band.
Catch stubborn VPD-high during VENTILATE assist without overnight fog or condensation risk.
Improve VPD recovery in the dry window while evening unwind prevents carryover.
Reduce heat-stress risk while retaining enough hysteresis to avoid chatter.
Setpoints
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 00:20 | hyst 0.5 | Post-midnight cold saturated reset: suppress moisture, prote |
| 05:30 | hyst 0.5 | Pre-dawn cold floor: keep moisture suppressed and gas stagin |
| 08:30 | hyst 0.5 | Guarded sunrise ramp: indoor air starts humid and forecast r |
| 11:30 | hyst 0.5 | Early-day handoff: forecast VPD approaches the band but humi |
| 13:30 | hyst 0.5 | Peak dry solar posture: use guardrail-aware band-coupled moi |
| 17:30 | hyst 0.5 | Late dry-window shoulder: keep moderate moisture while outdo |
| 20:30 | hyst 0.5 | Evening saturated-air unwind: RH rebounds and solar is gone, |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 00:20 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Post-midnight cold saturated reset: suppress moisture, prote |
| 05:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Pre-dawn cold floor: keep moisture suppressed and gas stagin |
| 08:30 | d_cool 3; engage 2.2; all 2.5; pulse 60; gap 55; wt 2 | Guarded sunrise ramp: indoor air starts humid and forecast r |
| 11:30 | d_cool 3; engage 1.45; all 1.65; pulse 60; gap 35; wt 2.2 | Early-day handoff: forecast VPD approaches the band but humi |
| 13:30 | d_cool 3; engage 1.1; all 1.3; pulse 60; gap 25; wt 2.4 | Peak dry solar posture: use guardrail-aware band-coupled moi |
| 17:30 | d_cool 3; engage 1.3; all 1.6; pulse 60; gap 35; wt 2.2 | Late dry-window shoulder: keep moderate moisture while outdo |
| 20:30 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | Evening saturated-air unwind: RH rebounds and solar is gone, |
Saturday May 23
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 10:30 | hyst 0.5 | Missed-SUNRISE fallback for Saturday's stronger dry ramp: if |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 10:30 | d_cool 3; engage 1.1; all 1.3; pulse 60; gap 20; wt 2.5 | Missed-SUNRISE fallback for Saturday's stronger dry ramp: if |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 00:20 | bias_cool | initial 4 |
| 00:20 | bias_heat | initial 1.8 |
| 00:20 | d_heat_stage_2 | initial 3 |
| 00:20 | dwell_gate_ms | initial 300000 |
| 00:20 | enthalpy_close | initial 1 |
| 00:20 | enthalpy_open | initial -2 |
| 00:20 | fog_escalation_kpa | initial 0.5 |
| 00:20 | heat_hysteresis | initial 1.5 |
| 00:20 | min_fog_off_s | initial 180 |
| 00:20 | min_fog_on_s | initial 45 |
| 00:20 | min_heat_off_s | initial 180 |
| 00:20 | min_heat_on_s | initial 120 |
| 00:20 | min_vent_off_s | initial 60 |
| 00:20 | min_vent_on_s | initial 60 |
| 00:20 | mist_backoff_s | initial 1200 |
| 00:20 | mist_max_closed_vent_s | initial 120 |
| 00:20 | mist_thermal_relief_s | initial 90 |
| 00:20 | mister_all_delay_s | initial 600 |
| 00:20 | mister_engage_delay_s | initial 300 |
| 00:20 | mister_water_budget_gal | initial 300 |
| 00:20 | outdoor_staleness_max_s | initial 600 |
| 00:20 | sw_dwell_gate_enabled | initial 1 |
| 00:20 | sw_fog_closes_vent | initial 1 |
| 00:20 | sw_fsm_controller_enabled | initial 1 |
| 00:20 | sw_mister_closes_vent | initial 1 |
| 00:20 | sw_summer_vent_enabled | initial 1 |
| 00:20 | temp_hysteresis | initial 1.7 |
| 00:20 | vent_prefer_dp_delta_f | initial 5 |
| 00:20 | vent_prefer_temp_delta_f | initial 5 |
| 00:20 | vpd_watch_dwell_s | initial 60 |
| 05:30 | bias_heat | 1.8 → 2 |
| 08:30 | bias_cool | 4 → 3.5 |
| 08:30 | bias_heat | 2 → 1.2 |
| 08:30 | fog_escalation_kpa | 0.5 → 0.9 |
| 08:30 | min_fog_off_s | 180 → 150 |
| 08:30 | mister_all_delay_s | 600 → 480 |
| 08:30 | mister_engage_delay_s | 300 → 240 |
| 08:30 | mister_water_budget_gal | 300 → 600 |
| 11:30 | bias_cool | 3.5 → 3 |
| 11:30 | bias_heat | 1.2 → 0.2 |
| 11:30 | fog_escalation_kpa | 0.9 → 0.45 |
| 11:30 | min_fog_off_s | 150 → 90 |
| 11:30 | mist_backoff_s | 1200 → 900 |
| 11:30 | mist_max_closed_vent_s | 120 → 150 |
| 11:30 | mister_all_delay_s | 480 → 120 |
| 11:30 | mister_engage_delay_s | 240 → 60 |
| 13:30 | bias_cool | 3 → 2 |
| 13:30 | bias_heat | 0.2 → 0 |
| 13:30 | fog_escalation_kpa | 0.45 → 0.25 |
| 13:30 | min_fog_off_s | 90 → 60 |
| 13:30 | mist_backoff_s | 900 → 600 |
| 13:30 | mist_max_closed_vent_s | 150 → 180 |
| 13:30 | mister_all_delay_s | 120 → 90 |
| 13:30 | mister_engage_delay_s | 60 → 45 |
| 17:30 | bias_cool | 2 → 3.2 |
| 17:30 | fog_escalation_kpa | 0.25 → 0.45 |
| 17:30 | min_fog_off_s | 60 → 90 |
| 17:30 | mist_backoff_s | 600 → 900 |
| 17:30 | mist_max_closed_vent_s | 180 → 150 |
| 17:30 | mister_all_delay_s | 90 → 150 |
| 17:30 | mister_engage_delay_s | 45 → 60 |
| 20:30 | bias_cool | 3.2 → 4 |
| 20:30 | bias_heat | 0 → 1.2 |
| 20:30 | fog_escalation_kpa | 0.45 → 1 |
| 20:30 | min_fog_off_s | 90 → 180 |
| 20:30 | mist_backoff_s | 900 → 1200 |
| 20:30 | mist_max_closed_vent_s | 150 → 120 |
| 20:30 | mister_all_delay_s | 150 → 600 |
| 20:30 | mister_engage_delay_s | 60 → 300 |
| 10:30 | bias_cool | 4 → 1.5 |
| 10:30 | bias_heat | 1.2 → 0 |
| 10:30 | fog_escalation_kpa | 1 → 0.2 |
| 10:30 | min_fog_off_s | 180 → 60 |
| 10:30 | mist_backoff_s | 1200 → 600 |
| 10:30 | mist_max_closed_vent_s | 120 → 180 |
| 10:30 | mister_all_delay_s | 600 → 90 |
| 10:30 | mister_engage_delay_s | 300 → 45 |
🌅 Morning Cycle (5:43 AM) — iris-20260522-0540
validated
2/10
bias_cool, bias_heat, d_cool_stage_2, d_heat_stage_2, dwell_gate_ms, enthalpy_close, enthalpy_open, fog_escalation_kpa ...
Reflection
Validating previous cycle: iris-20260521-2016
Previous hypothesis: SUNSET overnight plan for Thursday 2026-05-21. Today improved versus the 7-day trend but still missed target: score 71.9, both-axis compliance 74.8% versus 70.7% 7-day, temp 83.1%, VPD 85.4%, total stress 6.37h. Heat stress was the largest single stress at 2.55h, followed by VPD-high 2.10h; VPD-low and cold were contained at 0.85h and 0.87h. Cost was USD 5.92, better than the 7-day USD 7.39 average, driven mostly by electric/grow-light/fog modeled cost and gas heat; water and misting were far below the 7-day average. The evaluated midnight plan scored 7/10, matching anchor 7. Current house is IDLE at about 66.5F, VPD 0.66 kPa, RH 70%, with safe 9.9F dew margin. Tonight turns cold and saturated outside, 51F falling to 41F with outdoor VPD 0.07-0… Result: SUNRISE-to-sunset window scorecard: both-axis compliance 70.3%, temp compliance 78.2%, VPD compliance 83.5%, total stress 3.86h with heat 2.26h, cold 0.58h, VPD-high 1.89h, VPD-low 0.50h, cost about USD 0.61. The free-text goal partly worked: Friday moisture support kept VPD-high below the daily 3.7h total and dew safety held at dp-risk 0h. But the structured hypothesis expected guardrail-aware band-coupled support to avoid dispatcher rewrites; actual plan/audit evidence showed 55 VPD-high moisture-guardrail events including held and dispatched interventions. Actual weather was cooler and much more humid than the severe forecast proxy, but solar exceeded forecast. Grade aligned low because execution quality still fought the dispatcher/firmware moisture policy despite acceptable window scorecard. Score: 2/10
New finding: On cool saturated dawns followed by solar near or above 900 W/m2 and RH near or below 20%, guardrail-aware moisture must be fully band-coupled during live VPD-high VENTILATE: engage near vpd_high+0.05, all-zone near max(1.0,vpd_high+0.25), fog_escalation 0.15-0.20, short delays, and delay evening unwind until observed VPD recovery rather than clock time alone. → Added to Lessons Learned
Hypothesis
Testing: Live-confirmed dry-ramp handoff: keep dawn conservative, then use guardrail-aligned band-coupled moisture from the first observed/forecast dry ramp through the late dry evening instead of unwinding at sunset by clock alone. Expected outcome: Target Friday score >78 with both-axis compliance >82%, VPD-high stress <1.5h, VPD-low stress <0.5h, dp-risk 0h, and cost below the 7-day average; if Saturday fallback is reached, keep severe-ramp VPD-high materially lower than a conservative posture without extending sealed heat traps.
Conditions
79.0°F
9.0%
897.0 W/m²
65.0%
Friday starts cold/saturated near 41F/85% RH with indoor VPD 0.56 and 8.6F dew margin, then dries to RH 21-28%, VPD 1.5-1.8 kPa, and solar near 817 W/m2. Saturday fallback is more severe: RH near 9%, VPD near 3.0 kPa, solar around 900 W/m2. Forecast solar has recently overestimated reality, so the plan waits through dawn but uses band-coupled values once the dry ramp is plausible.
Expected stress windows
Keep mist/fog suppressed while indoor VPD is 0.56 and outside remains cold/high-RH: engage 2.35 then 1.75, long-ish delays, 45-60s gaps, fog_escalation 0.8-1.0, short sealed cap.
Use guardrail-aware band-coupled moisture: engage 1.05-1.20, all 1.25-1.45, 30-45s engage delays, 60-90s all delays, 25-30s gaps, fog_escalation 0.20-0.35 while the fog window allows it, and 150-180s sealed cap.
After RH rebounds, unwind to engage 2.35, all 2.5, 60s gaps, fog_escalation 1.0, long delays, bias_cool +4, modest bias_heat, and 120s sealed cap.
Missed-cycle fallback for severe Saturday: engage 1.00, all 1.20-1.25, 30/60s delays, 20s gaps, fog_escalation 0.15, min_fog_off 45, 180s sealed cap, and 600s backoff so VENTILATE/THERMAL_RELIEF are not fought.
Parameter rationale
Avoid dispatcher rewrites and keep Friday VPD-high under about 1.5h while not misting the cold saturated dawn.
Permit all-zone support during dry VENTILATE assist instead of waiting far above the active VPD band.
Catch stubborn VPD-high without using fog during dawn or after the firmware fog window.
Improve VPD recovery during dry ventilation while later unwind prevents VPD-low carryover.
Start physical pulses promptly once humidity demand exists in dry ventilation.
Reduce time above the VPD band and avoid held guardrail events.
Allow effective fog cadence while firmware RH/temp/time gates protect condensation.
Limit morning cold-band loss without adding gas/electric heat through the dry peak.
Reduce heat-stress accumulation while keeping overnight heater-to-vent oscillation suppressed.
Improve VPD-high recovery without creating a thermal trap.
Setpoints
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 05:45 | hyst 0.5 | Cold saturated dawn: preserve dew safety and avoid VPD-low w |
| 09:30 | hyst 0.5 | Morning ramp: solar is rising but forecast VPD is still mode |
| 12:30 | hyst 0.5 | Dry entry: outdoor VPD crosses roughly 0.8-1.1 kPa and RH fa |
| 14:30 | hyst 0.5 | Peak Friday dry/solar window: use guardrail-aware band-coupl |
| 18:30 | hyst 0.5 | Late dry evening: solar is declining but outside remains ver |
| 22:30 | hyst 0.5 | Night humidity recovery: forecast RH rebounds near 60% and t |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 05:45 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | Cold saturated dawn: preserve dew safety and avoid VPD-low w |
| 09:30 | d_cool 3; engage 1.75; all 2.1; pulse 60; gap 45; wt 2 | Morning ramp: solar is rising but forecast VPD is still mode |
| 12:30 | d_cool 3; engage 1.2; all 1.45; pulse 60; gap 30; wt 2.3 | Dry entry: outdoor VPD crosses roughly 0.8-1.1 kPa and RH fa |
| 14:30 | d_cool 3; engage 1.05; all 1.25; pulse 60; gap 25; wt 2.5 | Peak Friday dry/solar window: use guardrail-aware band-coupl |
| 18:30 | d_cool 3; engage 1.2; all 1.45; pulse 60; gap 30; wt 2.3 | Late dry evening: solar is declining but outside remains ver |
| 22:30 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | Night humidity recovery: forecast RH rebounds near 60% and t |
Saturday May 23
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 09:30 | hyst 0.5 | Saturday missed-cycle ramp fallback: begin guardrail-aware r |
| 11:30 | hyst 0.5 | Saturday severe dry fallback if SUNSET/SUNRISE is missed: RH |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 09:30 | d_cool 3; engage 1.2; all 1.45; pulse 60; gap 30; wt 2.5 | Saturday missed-cycle ramp fallback: begin guardrail-aware r |
| 11:30 | d_cool 3; engage 1; all 1.2; pulse 60; gap 20; wt 2.7 | Saturday severe dry fallback if SUNSET/SUNRISE is missed: RH |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 05:45 | bias_cool | initial 4 |
| 05:45 | bias_heat | initial 2 |
| 05:45 | d_heat_stage_2 | initial 3 |
| 05:45 | dwell_gate_ms | initial 300000 |
| 05:45 | enthalpy_close | initial 1 |
| 05:45 | enthalpy_open | initial -2 |
| 05:45 | fog_escalation_kpa | initial 0.5 |
| 05:45 | heat_hysteresis | initial 1.5 |
| 05:45 | min_fog_off_s | initial 180 |
| 05:45 | min_fog_on_s | initial 45 |
| 05:45 | min_heat_off_s | initial 180 |
| 05:45 | min_heat_on_s | initial 120 |
| 05:45 | min_vent_off_s | initial 60 |
| 05:45 | min_vent_on_s | initial 60 |
| 05:45 | mist_backoff_s | initial 1200 |
| 05:45 | mist_max_closed_vent_s | initial 120 |
| 05:45 | mist_thermal_relief_s | initial 90 |
| 05:45 | mister_all_delay_s | initial 600 |
| 05:45 | mister_engage_delay_s | initial 300 |
| 05:45 | mister_water_budget_gal | initial 300 |
| 05:45 | outdoor_staleness_max_s | initial 600 |
| 05:45 | sw_dwell_gate_enabled | initial 1 |
| 05:45 | sw_fog_closes_vent | initial 1 |
| 05:45 | sw_fsm_controller_enabled | initial 1 |
| 05:45 | sw_mister_closes_vent | initial 1 |
| 05:45 | sw_summer_vent_enabled | initial 1 |
| 05:45 | temp_hysteresis | initial 1.7 |
| 05:45 | vent_prefer_dp_delta_f | initial 5 |
| 05:45 | vent_prefer_temp_delta_f | initial 5 |
| 05:45 | vpd_watch_dwell_s | initial 60 |
| 09:30 | bias_cool | 4 → 3.5 |
| 09:30 | bias_heat | 2 → 1 |
| 09:30 | min_fog_off_s | 180 → 120 |
| 09:30 | mist_backoff_s | 1200 → 900 |
| 09:30 | mister_all_delay_s | 600 → 240 |
| 09:30 | mister_engage_delay_s | 300 → 120 |
| 12:30 | bias_cool | 3.5 → 3 |
| 12:30 | bias_heat | 1 → 0 |
| 12:30 | fog_escalation_kpa | 0.5 → 0.3 |
| 12:30 | min_fog_off_s | 120 → 60 |
| 12:30 | mist_backoff_s | 900 → 600 |
| 12:30 | mist_max_closed_vent_s | 120 → 150 |
| 12:30 | mister_all_delay_s | 240 → 90 |
| 12:30 | mister_engage_delay_s | 120 → 45 |
| 14:30 | bias_cool | 3 → 2 |
| 14:30 | fog_escalation_kpa | 0.3 → 0.2 |
| 14:30 | mist_max_closed_vent_s | 150 → 180 |
| 14:30 | mister_all_delay_s | 90 → 60 |
| 14:30 | mister_engage_delay_s | 45 → 30 |
| 18:30 | bias_cool | 2 → 3 |
| 18:30 | fog_escalation_kpa | 0.2 → 0.35 |
| 18:30 | min_fog_off_s | 60 → 90 |
| 18:30 | mist_backoff_s | 600 → 900 |
| 18:30 | mist_max_closed_vent_s | 180 → 150 |
| 18:30 | mister_all_delay_s | 60 → 90 |
| 18:30 | mister_engage_delay_s | 30 → 45 |
| 22:30 | bias_cool | 3 → 4 |
| 22:30 | bias_heat | 0 → 1.5 |
| 22:30 | fog_escalation_kpa | 0.35 → 1 |
| 22:30 | min_fog_off_s | 90 → 180 |
| 22:30 | mist_backoff_s | 900 → 1200 |
| 22:30 | mist_max_closed_vent_s | 150 → 120 |
| 22:30 | mister_all_delay_s | 90 → 600 |
| 22:30 | mister_engage_delay_s | 45 → 300 |
| 22:30 | mister_water_budget_gal | 300 → 600 |
| 09:30 | bias_cool | 4 → 2.5 |
| 09:30 | bias_heat | 1.5 → 0 |
| 09:30 | fog_escalation_kpa | 1 → 0.25 |
| 09:30 | min_fog_off_s | 180 → 60 |
| 09:30 | mist_backoff_s | 1200 → 600 |
| 09:30 | mist_max_closed_vent_s | 120 → 150 |
| 09:30 | mister_all_delay_s | 600 → 90 |
| 09:30 | mister_engage_delay_s | 300 → 45 |
| 11:30 | bias_cool | 2.5 → 1 |
| 11:30 | fog_escalation_kpa | 0.25 → 0.15 |
| 11:30 | min_fog_off_s | 60 → 45 |
| 11:30 | mist_max_closed_vent_s | 150 → 180 |
| 11:30 | mister_all_delay_s | 90 → 60 |
| 11:30 | mister_engage_delay_s | 45 → 30 |
| 11:30 | vpd_watch_dwell_s | 60 → 45 |
🌆 Evening Cycle (8:23 PM) — iris-20260522-2016
validated
1/10
bias_cool, bias_heat, d_cool_stage_2, d_heat_stage_2, dwell_gate_ms, enthalpy_close, enthalpy_open, fog_escalation_kpa ...
Reflection
Validating previous cycle: iris-20260522-0540
Previous hypothesis: SUNRISE plan for Friday 2026-05-22. Yesterday improved to 73.8 but still missed target: both-axis compliance 77.6%, temp 84.6%, VPD 87.6%, with heat stress 2.72h and VPD-high 2.10h as the main misses. The evaluated sunset plan scored 8/10 versus anchor 6: it protected VPD and dew safety overnight, but the anchor penalized 14 guardrail events, so today’s plan must stop fighting the moisture guardrail during dry ventilation. Current house is IDLE with heat1 on, 65.4F, VPD 0.56, RH 74%, dew margin 8.6F, and outdoor air is cold/saturated. Forecast shifts to a dry afternoon: Friday outdoor RH falls to 21-28%, VPD 1.5-1.8 kPa, solar peaks near 817 W/m2; Saturday fallback is severe with RH near 9%, VPD near 3.0 kPa, and solar near 900 W/m2… Result: Revised after anchor comparison. Although the live climate at 00:20 looked safe (IDLE, 64.9F, VPD 0.37 kPa, dew margin 5.6F) and stress counters were still near zero, the deterministic evaluation exposed a major execution-quality failure: anchor_score 1 with 14 VPD-high moisture-guardrail dispatches during the plan window plus incomplete Tier-1 coverage in future waypoints. The plan also carried partially conservative moisture values that the dispatcher had to rewrite, repeating the same guardrail-fighting pattern identified in the evaluated SUNRISE plan. The midnight boundary scorecard row was sparse, but anchor/guardrail evidence is stronger than my initial live-state impression. Final grade aligned to anchor: 1/10. The actionable miss is not plant safety at midnight; it is that the written plan still failed the policy contract and should be replaced with complete Tier-1 waypoints and fully band-coupled peak dry-day moisture support. Score: 1/10
New finding: When a SUNSET or MIDNIGHT plan includes a severe next-day dry fallback, incomplete Tier-1 coverage or partially conservative moisture values can trigger VPD-high guardrail dispatches even before the main dry window; anchor/guardrail evidence should override a superficially safe live midnight snapshot. → Added to Lessons Learned
Hypothesis
Testing: Overnight saturated-air suppression with a guardrail-aligned severe-dry missed-SUNRISE fallback: do not repeat today’s partially conservative moisture values that triggered 55 guardrail events. Expected outcome: Overnight through 08:30: dp_risk_hours 0, VPD-low under 0.5h, cold stress near or below 1h, and cost dominated by efficient gas/electric heat rather than water/fog. If SUNRISE is missed, late-morning fallback should avoid VPD-high guardrail holds by using fully band-coupled moisture.
Conditions
77.0°F
9.0%
970.0 W/m²
35.0%
Cold saturated night from 57F to 43F with RH rising to about 90% and outdoor VPD near 0.08-0.21 kPa; current indoor VPD 0.63 kPa and dew margin 9.6F. Saturday turns severe dry by late morning with RH 9-21%, outdoor VPD around 2.0-2.9 kPa, and solar near 900-1000 W/m2.
Expected stress windows
High mist thresholds 2.35-2.45/2.5, 55-60s gaps, 300/600s delays, fog_escalation 0.9-1.0, vpd_hysteresis 0.5, and short 120s sealed residence while saturated air returns.
bias_heat 1.8-2.0, bias_cool +4, d_heat_stage_2 3, heat_hysteresis 1.5, dwell gate ON; do not raise crop bands.
Missed-SUNRISE fallback uses fully guardrail-aligned band-coupled support: engage 1.00, all 1.20, 30/60s delays, 20s gaps, fog_escalation 0.15, min_fog_off 45, 180s sealed cap, and 600s backoff.
Parameter rationale
Keep overnight cold stress near or below 1h without vent-chatter-driven temperature loss.
Limit pre-dawn cold-band scoring while avoiding continuous overheating or crop-band changes.
Avoid added overnight moisture, keep dp-risk at 0h, and prevent VPD-low accumulation.
Keep overnight mister water near zero unless live VPD breaks well above band.
Reduce VPD-low and condensation risk while maintaining dew margin above 5F.
Avoid fog-driven VPD-low; keep dp-risk at 0h.
Preserve condensation safety if the controller briefly enters humidification.
Avoid fighting the VPD-high moisture guardrail and keep severe-day support band-coupled if the morning plan is missed.
Catch stubborn VPD-high during VENTILATE assist without extending sealed heat traps.
Setpoints
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 20:25 | hyst 0.5 | evening_settle: unwind dry-day moisture while dew margin is |
| 22:30 | hyst 0.5 | saturated_night: outdoor VPD collapses; suppress mist/fog an |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 20:25 | d_cool 3; engage 2.2; all 2.4; pulse 60; gap 55; wt 2 | evening_settle: unwind dry-day moisture while dew margin is |
| 22:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | saturated_night: outdoor VPD collapses; suppress mist/fog an |
Saturday May 23
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 04:30 | hyst 0.5 | pre_dawn_cold_saturated: minimum outdoor temperature and RH |
| 08:30 | hyst 0.5 | sunrise_guarded: light rises but outdoor air remains cool/hi |
| 11:30 | hyst 0.5 | missed_sunrise_severe_dry_fallback: if morning plan is misse |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 04:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | pre_dawn_cold_saturated: minimum outdoor temperature and RH |
| 08:30 | d_cool 3; engage 2.3; all 2.5; pulse 60; gap 55; wt 2.1 | sunrise_guarded: light rises but outdoor air remains cool/hi |
| 11:30 | d_cool 3; engage 1; all 1.2; pulse 60; gap 20; wt 2.7 | missed_sunrise_severe_dry_fallback: if morning plan is misse |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 20:25 | bias_cool | initial 4 |
| 20:25 | bias_heat | initial 1.2 |
| 20:25 | d_heat_stage_2 | initial 3 |
| 20:25 | dwell_gate_ms | initial 300000 |
| 20:25 | enthalpy_close | initial 1 |
| 20:25 | enthalpy_open | initial -2 |
| 20:25 | fog_escalation_kpa | initial 0.5 |
| 20:25 | heat_hysteresis | initial 1.5 |
| 20:25 | min_fog_off_s | initial 150 |
| 20:25 | min_fog_on_s | initial 45 |
| 20:25 | min_heat_off_s | initial 180 |
| 20:25 | min_heat_on_s | initial 120 |
| 20:25 | min_vent_off_s | initial 60 |
| 20:25 | min_vent_on_s | initial 60 |
| 20:25 | mist_backoff_s | initial 1200 |
| 20:25 | mist_max_closed_vent_s | initial 120 |
| 20:25 | mist_thermal_relief_s | initial 90 |
| 20:25 | mister_all_delay_s | initial 420 |
| 20:25 | mister_engage_delay_s | initial 180 |
| 20:25 | mister_water_budget_gal | initial 300 |
| 20:25 | outdoor_staleness_max_s | initial 600 |
| 20:25 | sw_dwell_gate_enabled | initial 1 |
| 20:25 | sw_fog_closes_vent | initial 1 |
| 20:25 | sw_fsm_controller_enabled | initial 1 |
| 20:25 | sw_mister_closes_vent | initial 1 |
| 20:25 | sw_summer_vent_enabled | initial 1 |
| 20:25 | temp_hysteresis | initial 1.7 |
| 20:25 | vent_prefer_dp_delta_f | initial 5 |
| 20:25 | vent_prefer_temp_delta_f | initial 5 |
| 20:25 | vpd_watch_dwell_s | initial 60 |
| 22:30 | bias_heat | 1.2 → 1.8 |
| 22:30 | min_fog_off_s | 150 → 180 |
| 22:30 | mist_backoff_s | 1200 → 1800 |
| 22:30 | mister_all_delay_s | 420 → 600 |
| 22:30 | mister_engage_delay_s | 180 → 300 |
| 04:30 | bias_heat | 1.8 → 2 |
| 08:30 | bias_cool | 4 → 3.5 |
| 08:30 | bias_heat | 2 → 1 |
| 08:30 | min_fog_off_s | 180 → 150 |
| 08:30 | mist_backoff_s | 1800 → 1200 |
| 08:30 | mister_all_delay_s | 600 → 420 |
| 08:30 | mister_engage_delay_s | 300 → 180 |
| 11:30 | bias_cool | 3.5 → 1 |
| 11:30 | bias_heat | 1 → 0 |
| 11:30 | fog_escalation_kpa | 0.5 → 0.15 |
| 11:30 | min_fog_off_s | 150 → 45 |
| 11:30 | mist_backoff_s | 1200 → 600 |
| 11:30 | mist_max_closed_vent_s | 120 → 180 |
| 11:30 | mister_all_delay_s | 420 → 60 |
| 11:30 | mister_engage_delay_s | 180 → 30 |
End-of-Day Summary
Climate
61.7–80.6°F; avg 69.3°F
0.33–1.72 kPa; avg 0.77 kPa
51.3–83.6%
Stress Hours
- Heat stress (>85°F): 4.3h
- VPD stress (>2.0 kPa): 3.7h
- Cold stress (<55°F): 1.1h
Economics
USD 4.11
USD 1.51
USD 1.060
USD 6.68
Equipment Runtimes
| Equipment | Runtime | Reading |
|---|---|---|
| Fan 1 | 211 min | Primary exhaust runtime. |
| Fan 2 | 214 min | Secondary exhaust runtime. |
| Vent | 374 min | Intake vent runtime. |
| Fog | 96 min | Fogger runtime. |
| Heat 1 electric | 887 min | Electric heater runtime. |
| Heat 2 gas | 146 min | Gas heater runtime. |
| Grow lights | 981 min | Supplemental lighting runtime. |
| Mister south | 0.18h | South mister runtime. |
| Mister west | 0.05h | West mister runtime. |
| Mister center | 1.52h | Center mister runtime. |
Water
- Total: 219 gal
- Mister: 75 gal
Crop Health (Gemini Vision)
| Crop | Zone | Health | Observations | Note |
|---|---|---|---|---|
| Canna Lilies | south | 70% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| Vanda Orchids | center | 83% | 6 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| lettuce | east | 80% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| pepper | east | 70% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| strawberry | east | 83% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
Vision observation notes
Canna Lilies on the floor look generally healthy, but soil moisture is reported as 0.0%.
Hanging orchids appear healthy with no visible signs of stress.
Seedlings appear healthy and are establishing well.
Seedlings are growing steadily, no visible signs of stress.
Seedlings are healthy with good color.
Hourly Pattern
| Hour | Temperature | VPD | RH |
|---|---|---|---|
| 12:00 | 77.2°F | 1.11 kPa | 66.2% |
| 13:00 | 78.8°F | 1.30 kPa | 62.8% |
| 14:00 | 78.1°F | 1.25 kPa | 62.5% |
| 15:00 | 76.4°F | 1.10 kPa | 65.1% |
| 16:00 | 74.4°F | 0.97 kPa | 66.8% |
| 17:00 | 72.1°F | 0.97 kPa | 64.4% |
| 18:00 | 69.9°F | 0.94 kPa | 62.9% |
| 19:00 | 67.4°F | 0.74 kPa | 68.1% |
| 20:00 | 66.3°F | 0.62 kPa | 72.1% |
| 21:00 | 64.7°F | 0.59 kPa | 72.2% |
| 22:00 | 63.7°F | 0.45 kPa | 77.7% |
| 23:00 | 63.4°F | 0.42 kPa | 79.2% |
| 00:00 | 63.1°F | 0.40 kPa | 80.1% |
| 01:00 | 63.6°F | 0.40 kPa | 80.1% |
| 02:00 | 63.2°F | 0.41 kPa | 79.2% |
| 03:00 | 63.3°F | 0.44 kPa | 78.2% |
| 04:00 | 63.4°F | 0.45 kPa | 77.6% |
| 05:00 | 63.9°F | 0.49 kPa | 76.3% |
| 06:00 | 66.1°F | 0.60 kPa | 73.0% |
| 07:00 | 68.0°F | 0.70 kPa | 70.8% |
| 08:00 | 71.0°F | 0.86 kPa | 67.7% |
| 09:00 | 73.2°F | 0.96 kPa | 66.5% |
| 10:00 | 73.5°F | 0.86 kPa | 70.1% |
| 11:00 | 75.4°F | 0.72 kPa | 76.7% |
7-Day Stress Context
| Date | Heat | VPD high | Cold |
|---|---|---|---|
| 2026-05-16 | 9.1h | 8.6h | 0.1h |
| 2026-05-17 | 3.1h | 3.2h | 0.4h |
| 2026-05-18 | 0.5h | 0.0h | 2.1h |
| 2026-05-19 | 0.4h | 0.1h | 2.0h |
| 2026-05-20 | 1.9h | 0.6h | 1.2h |
| 2026-05-21 | 2.7h | 2.1h | 1.0h |
| 2026-05-22 | 4.3h | 3.7h | 1.1h |