May 21, 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
5
3
0
| Event | Delivered | Type | Status | Note |
|---|---|---|---|---|
| End-of-day review and reset | 00:16 | MIDNIGHT | plan_written | Wrote public plan iris-20260521-0016. Resolved 00:18 MDT. |
| Morning planning cycle | 05:41 | SUNRISE | plan_written | Wrote public plan iris-20260521-0541. Resolved 05:43 MDT. |
| Solar peak planning checkpoint | 13:00 | SOLAR_MAX | plan_written | Wrote non-archive plan iris-oneshot-20260521-1301. Resolved 13:01 MDT. |
| Peak Stress | 14:58 | TRANSITION | acked | Acknowledged: Peak-stress transition checked live climate, equipment, active plan, and setpoint readbacks. Conditions are tracking the SUNRISE dry-ramp posture: greenhouse 78.1F, VPD 1.25 kPa versus active vpd_high 1.23, healthy 14.2F dew margin, VENTILATE with vent/fan1 active, and guardrail-aware moisture setpoints already confirmed (mister_engage_kpa 1.15, mister_all_kpa 1.35, fog_escalation_kpa 0.20, gap 20s). No additional tunable change warranted. Resolved 14:59 MDT. |
| Forecast deviation | 15:24 | FORECAST_DEVIATION | acked | Acknowledged: FORECAST_DEVIATION assessed: observed solar (~176-200 W/m2) is far below forecast (~876 W/m2), consistent with cloud/solar forecast miss rather than equipment fault. Current house is IDLE at 76.4F, VPD 1.07 kPa, RH 66%, dew margin 12.3F; all climate relays are off. Existing guardrail-aware dry-ramp posture is safe and only acts on live VPD demand, so no tunable change warranted. Resolved 15:24 MDT. |
| Forecast deviation | 16:23 | FORECAST_DEVIATION | plan_written | Wrote non-archive plan iris-oneshot-20260521-1624. Resolved 16:24 MDT. |
| Decline | 19:15 | TRANSITION | acked | Acknowledged: Decline transition checked live climate, equipment, active plan, and setpoints. Greenhouse is tracking the existing plan: IDLE at 67.2F and 0.74 kPa VPD, within firmware band with healthy 10.8F dew margin; mist/fog/vent/fans are off and only heat1 is supporting the evening band. The active plan already unwinds dry-day moisture posture at 20:30 before the overnight humidity rebound, so no immediate tunable change is warranted. Resolved 19:16 MDT. |
| Evening planning cycle | 20:16 | SUNSET | plan_written | Wrote public plan iris-20260521-2016. Resolved 20:18 MDT. |
🌅 Morning Cycle (12:18 AM) — iris-20260521-0016
validated
7/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-20260520-0541
Previous hypothesis: SUNRISE plan for Wednesday 2026-05-20. Yesterday scored 85.8 with 87.1% both-axis compliance, temp 90.1%, VPD 96.1%, 0 dp-risk hours, and USD 2.89 cost mostly gas. The evaluated 2026-05-19 SUNRISE plan scored 7/10 versus anchor 9: it protected VPD-high and dew risk despite a warmer/sunnier forecast miss, but residual VPD-low and structural spring morning temperature alignment remained. Today is cool and humid at dawn, then only a modest afternoon raw dry ramp to about 59F, 58% RH, 0.71 kPa outdoor VPD with forecast VPD biased high by about 0.52 kPa. The plan keeps dawn/morning moisture suppression, stable dwell timing, bias_cool +4, and short sealed residence, then cautiously relaxes afternoon mist/fog thresholds only enough to catch an unexpected live VPD rise. Thursday fallback handles the sharper dry ramp if the next SUNRISE plan is missed. Result: Plan governed the cold saturated midnight-to-sunrise window before the SUNRISE handoff. Window scorecard showed about 74.8% both-axis compliance, 83.1% temp compliance, 85.4% VPD compliance, about 1.34 total stress-hours, and low cost (~USD 0.23 in the plan window). It maintained dew safety (daily dp-risk stayed 0h and current sunset margin is safe), prevented major VPD-low carryover during the completed pre-dawn window, and used bias_cool +4 / conservative mist-fog posture appropriately. Remaining misses were mostly structural spring crop-band temperature alignment plus some later-day VPD pressure that belonged to the subsequent sunrise/dry-ramp plan, not this completed midnight window. Score: 7/10
Hypothesis
Testing: Guarded dawn to guardrail-aware dry-ramp handoff: hold moisture suppression until the live VPD/solar ramp begins, then request band-coupled moisture directly before the 13:00-18:00 dry window instead of repeating conservative values that the dispatcher must clamp. Expected outcome: For 2026-05-21, target >75% both-axis compliance, VPD-high under 2.0h, VPD-low under 3.0h despite the saturated dawn, heat+cold stress under 2.0h total, dew-risk 0h, and total cost near or below the recent USD 7.11 7-day average unless gas heating dominates the cold pre-dawn window.
Conditions
72.0°F
27.0%
876.0 W/m²
48.0%
Cold saturated pre-dawn around 41-47F and 89-95% RH, then a clear/high-solar dry ramp. Bias-corrected planning prior still reaches roughly 1.5-1.6 kPa outdoor VPD from 15:00-18:00 with solar near 900 W/m2 earlier. Current indoor VPD is low-normal at 0.38 with 6.1F dew margin, so dawn is VPD-low/condensation cautious, but afternoon must not repeat yesterday’s conservative moisture requests that the VPD-high guardrail had to clamp.
Expected stress windows
Keep overnight and early sunrise moisture suppressed: engage 2.45 then 2.25, all 2.5, long delays, 55-60s gaps, fog_escalation 0.9-1.0, vpd_hysteresis 0.5, 120s sealed cap, bias_cool +4.
Use modest gas/electric support with bias_heat 2.0 tapering to 1.3 and bias_cool +4, d_heat_stage_2 3, heat_hysteresis 1.5, dwell gate ON to avoid heater-to-vent oscillation.
Move to guardrail-aware band-coupled support before the dry peak: engage 1.35 then 1.15, all 1.55 then 1.35, 45/90s delays at peak, 25s gaps, fog_escalation 0.25, min_fog_off 60, vpd_watch_dwell 60, and a 180s sealed cap.
Unwind before night RH rebound: engage 1.8 then 2.45, all 2.3 then 2.5, 50-60s gaps, fog_escalation 0.6 then 1.0, long delays, and short sealed residence.
Parameter rationale
Avoid adding moisture before observed VPD rises; keep dew-risk at 0h and pre-dawn VPD-low no worse than the structural/crop-band baseline.
Keep afternoon VPD-high under about 1.5-2.0h and avoid dispatcher VPD-high guardrail clamps by requesting band-coupled values directly.
Allow all-zone mist assist during the dry peak rather than waiting far above the band.
Catch stubborn afternoon VPD-high without morning fog or condensation risk.
Improve VPD recovery during VENTILATE assist while unwinding before night to avoid VPD-low carryover.
Limit pre-dawn cold/crop-band stress without chasing heat through the dry afternoon.
Avoid overnight vent-driven cold whipsaw while tapering daytime heat bias as solar takes over.
Improve afternoon VPD-high recovery while keeping heat stress and dew-risk controlled.
Setpoints
Thursday May 21
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 00:20 | hyst 0.5 | Post-midnight saturated/cold reset: suppress moisture, prese |
| 04:30 | hyst 0.5 | Coldest pre-dawn hour: slightly stronger heat support, still |
| 08:30 | hyst 0.5 | Sunrise ramp remains humid but solar/VPD are beginning to ri |
| 11:30 | hyst 0.45 | Late-morning pre-buffer before the expected clear/dry ramp; |
| 13:30 | hyst 0.4 | Afternoon dry/high-solar peak: request guardrail-aware band- |
| 18:30 | hyst 0.45 | Dry air may persist but solar is declining and fog window ha |
| 21:30 | hyst 0.5 | Night reset after dry day: suppress wetting again, widen VPD |
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 saturated/cold reset: suppress moisture, prese |
| 04:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Coldest pre-dawn hour: slightly stronger heat support, still |
| 08:30 | d_cool 3; engage 2.25; all 2.5; pulse 60; gap 55; wt 2 | Sunrise ramp remains humid but solar/VPD are beginning to ri |
| 11:30 | d_cool 3; engage 1.35; all 1.55; pulse 60; gap 35; wt 2.3 | Late-morning pre-buffer before the expected clear/dry ramp; |
| 13:30 | d_cool 3; engage 1.15; all 1.35; pulse 60; gap 25; wt 2.5 | Afternoon dry/high-solar peak: request guardrail-aware band- |
| 18:30 | d_cool 3; engage 1.8; all 2.3; pulse 60; gap 50; wt 2.2 | Dry air may persist but solar is declining and fog window ha |
| 21:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Night reset after dry day: suppress wetting again, widen VPD |
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 06:00 | hyst 0.5 | Friday fallback if SUNRISE is missed: cold pre-dawn remains |
| 12:00 | hyst 0.4 | Friday missed-cycle dry-ramp fallback: moderate guardrail-aw |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 06:00 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | Friday fallback if SUNRISE is missed: cold pre-dawn remains |
| 12:00 | d_cool 3; engage 1.25; all 1.45; pulse 60; gap 30; wt 2.4 | Friday missed-cycle dry-ramp fallback: moderate guardrail-aw |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 00:20 | bias_cool | initial 4 |
| 00:20 | bias_heat | initial 1.9 |
| 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 1 |
| 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 2400 |
| 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 600 |
| 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 2 |
| 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 120 |
| 04:30 | bias_heat | 1.9 → 2 |
| 08:30 | bias_heat | 2 → 1.3 |
| 08:30 | fog_escalation_kpa | 1 → 0.9 |
| 08:30 | min_fog_off_s | 180 → 150 |
| 08:30 | mist_backoff_s | 2400 → 1800 |
| 08:30 | mister_all_delay_s | 600 → 360 |
| 08:30 | mister_engage_delay_s | 300 → 180 |
| 08:30 | vpd_watch_dwell_s | 120 → 90 |
| 11:30 | bias_cool | 4 → 3.5 |
| 11:30 | bias_heat | 1.3 → 0.5 |
| 11:30 | fog_escalation_kpa | 0.9 → 0.45 |
| 11:30 | heat_hysteresis | 1.5 → 1.3 |
| 11:30 | min_fog_off_s | 150 → 90 |
| 11:30 | mist_backoff_s | 1800 → 1200 |
| 11:30 | mist_max_closed_vent_s | 120 → 150 |
| 11:30 | mister_all_delay_s | 360 → 120 |
| 11:30 | mister_engage_delay_s | 180 → 60 |
| 11:30 | vpd_watch_dwell_s | 90 → 60 |
| 13:30 | bias_cool | 3.5 → 3 |
| 13:30 | bias_heat | 0.5 → 0 |
| 13:30 | fog_escalation_kpa | 0.45 → 0.25 |
| 13:30 | heat_hysteresis | 1.3 → 1.2 |
| 13:30 | min_fog_off_s | 90 → 60 |
| 13:30 | mist_backoff_s | 1200 → 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 |
| 18:30 | bias_cool | 3 → 3.5 |
| 18:30 | bias_heat | 0 → 0.4 |
| 18:30 | fog_escalation_kpa | 0.25 → 0.6 |
| 18:30 | heat_hysteresis | 1.2 → 1.3 |
| 18:30 | min_fog_off_s | 60 → 120 |
| 18:30 | mist_backoff_s | 600 → 1200 |
| 18:30 | mist_max_closed_vent_s | 180 → 150 |
| 18:30 | mister_all_delay_s | 90 → 240 |
| 18:30 | mister_engage_delay_s | 45 → 120 |
| 18:30 | vpd_watch_dwell_s | 60 → 90 |
| 21:30 | bias_cool | 3.5 → 4 |
| 21:30 | bias_heat | 0.4 → 1.4 |
| 21:30 | fog_escalation_kpa | 0.6 → 1 |
| 21:30 | heat_hysteresis | 1.3 → 1.5 |
| 21:30 | min_fog_off_s | 120 → 180 |
| 21:30 | mist_backoff_s | 1200 → 2400 |
| 21:30 | mist_max_closed_vent_s | 150 → 120 |
| 21:30 | mister_all_delay_s | 240 → 600 |
| 21:30 | mister_engage_delay_s | 120 → 300 |
| 21:30 | vpd_watch_dwell_s | 90 → 120 |
| 06:00 | bias_heat | 1.4 → 1.8 |
| 06:00 | fog_escalation_kpa | 1 → 0.95 |
| 06:00 | mister_all_delay_s | 600 → 480 |
| 06:00 | mister_engage_delay_s | 300 → 240 |
| 12:00 | bias_cool | 4 → 3 |
| 12:00 | bias_heat | 1.8 → 0 |
| 12:00 | fog_escalation_kpa | 0.95 → 0.3 |
| 12:00 | heat_hysteresis | 1.5 → 1.2 |
| 12:00 | min_fog_off_s | 180 → 75 |
| 12:00 | mist_backoff_s | 2400 → 900 |
| 12:00 | mist_max_closed_vent_s | 120 → 180 |
| 12:00 | mister_all_delay_s | 480 → 90 |
| 12:00 | mister_engage_delay_s | 240 → 45 |
| 12:00 | vpd_watch_dwell_s | 120 → 60 |
🌅 Morning Cycle (5:43 AM) — iris-20260521-0541
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-20260520-2016
Previous hypothesis: SUNSET overnight plan for Wednesday 2026-05-20. Today improved versus the 7-day score trend but still missed the target: score 69.8, both-axis compliance 73.6%, temp 86.1%, VPD 84.0%, total stress 5.91h. VPD-low was the dominant stress at 2.53h, followed by heat 1.67h, cold 1.08h, and VPD-high only 0.63h. Cost was USD 6.82, below the 7-day USD 7.11 average, with gas and lighting/electric as the main bill; water and misting were low. The evaluated sunrise plan scored 5/10 versus anchor 3: it protected dew risk and VPD-high, but underestimated actual solar and fought the moisture guardrail once live VPD-high emerged. Tonight is cold and saturated: 50F falling to 41F, RH 80-95%, raw outdoor VPD 0.05-0.24 kPa. Current house is IDLE at 66F, VPD 0.51 kPa, RH 77%, dew margin 7.4F… Result: Revised after anchor comparison: the plan achieved the agronomic moisture goals (VPD-high 1.07h, VPD-low 0.43h, dp-risk 0h, low cost) despite solar peaking above forecast, but deterministic anchor penalized 90 VPD-high guardrail events including 41 held events and 49 dispatched guardrail interventions. That means the written plan still fought the dispatcher/firmware moisture guardrail enough that the controller had to correct it. Final score is lowered to 6/10: useful outcome, but not clean plan-policy alignment. Score: 6/10
Hypothesis
Testing: Guarded dawn to guardrail-aware dry-ramp handoff: keep mist/fog suppressed until the solar/VPD ramp, then request band-coupled moisture directly for 13:30-17:30 and unwind before night. Expected outcome: Target planner score above 78, both-axis compliance above 82%, VPD-high under 2.0h, VPD-low under 1.5h, dew-risk 0h, and cost below the 7-day average despite moderate mist/fog use.
Conditions
72.0°F
24.0%
883.0 W/m²
37.0%
Cold saturated dawn near 41F/96% RH with indoor VPD 0.46 kPa and dew margin 7.4F, then strong solar and a dry afternoon ramp to raw outdoor VPD about 2.0 kPa. Forecast calibration says VPD can overshoot reality, but yesterday’s actual solar exceeded forecast and lesson 125 says not to fight the moisture guardrail once live VPD approaches band.
Expected stress windows
High dawn mist thresholds, long delays, 55-60s pulse gaps, fog_escalation 0.9-1.0, vpd_hysteresis 0.5, short sealed residence, bias_cool +4.
bias_heat 2.0 tapering to 1.2 with bias_cool +4, d_heat_stage_2 3, heat_hysteresis 1.5, dwell gate ON.
Guardrail-aware band-coupled support: engage 1.25 then 1.15, all 1.45 then 1.35, 30-45s engage delay, 60-90s all delay, 20-30s gaps, fog_escalation 0.20-0.30, min_fog_off 45-60, vpd_watch_dwell 60, and 180s sealed cap.
Unwind before night humidity rebound: engage 1.9 then 2.45, all 2.3 then 2.5, 50-60s gaps, fog_escalation 0.7 then 1.0, longer delays, short sealed residence.
Parameter rationale
Keep afternoon VPD-high under about 1.5-2.0h and avoid repeated VPD-high moisture guardrail clamps.
Allow all-zone mist assist during the dry peak instead of waiting far above the active VPD band.
Catch stubborn VPD-high during VENTILATE assist without morning fog or dew-risk.
Improve VPD recovery during dry VENTILATE periods while avoiding moisture carryover via evening unwind.
Start physical pulses promptly once humidity demand exists.
Reduce time above VPD band during 13:00-18:00 without relying on fog alone.
Permit fog assist cadence if misters lag while staying inside firmware RH/time/temp gates.
Limit pre-dawn cold score loss without adding heat/vent oscillation or gas cost through the dry afternoon.
Reduce heat-stress risk during the dry solar window while preserving overnight anti-whipsaw behavior.
Avoid long dry lockouts after thermal relief while keeping relief preemption bounded.
Setpoints
Thursday May 21
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 05:50 | hyst 0.5 | Cold saturated dawn: suppress moisture, support heat gently, |
| 08:30 | hyst 0.5 | Morning ramp begins but indoor VPD is still low-normal; caut |
| 11:30 | hyst 0.45 | Solar/VPD ramp: shift to guardrail-aware readiness before ou |
| 13:30 | hyst 0.4 | Peak dry solar window: request band-coupled mist/fog directl |
| 17:30 | hyst 0.45 | Late dry decline: maintain support while VPD remains high, b |
| 20:30 | hyst 0.5 | Evening unwind: fog window closed and RH recovers; prevent m |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 05:50 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Cold saturated dawn: suppress moisture, support heat gently, |
| 08:30 | d_cool 3; engage 2.3; all 2.5; pulse 60; gap 55; wt 2 | Morning ramp begins but indoor VPD is still low-normal; caut |
| 11:30 | d_cool 3; engage 1.3; all 1.55; pulse 60; gap 30; wt 2.4 | Solar/VPD ramp: shift to guardrail-aware readiness before ou |
| 13:30 | d_cool 3; engage 1.15; all 1.35; pulse 60; gap 20; wt 2.6 | Peak dry solar window: request band-coupled mist/fog directl |
| 17:30 | d_cool 3; engage 1.3; all 1.6; pulse 60; gap 30; wt 2.4 | Late dry decline: maintain support while VPD remains high, b |
| 20:30 | d_cool 3; engage 1.9; all 2.3; pulse 60; gap 50; wt 2.1 | Evening unwind: fog window closed and RH recovers; prevent m |
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 06:00 | hyst 0.5 | Friday cold dawn fallback: saturated/cool start with another |
| 12:00 | hyst 0.4 | Friday missed-cycle dry-ramp fallback: outdoor VPD forecast |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 06:00 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | Friday cold dawn fallback: saturated/cool start with another |
| 12:00 | d_cool 3; engage 1.25; all 1.5; pulse 60; gap 25; wt 2.4 | Friday missed-cycle dry-ramp fallback: outdoor VPD forecast |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 05:50 | bias_cool | initial 4 |
| 05:50 | bias_heat | initial 2 |
| 05:50 | d_heat_stage_2 | initial 3 |
| 05:50 | dwell_gate_ms | initial 300000 |
| 05:50 | enthalpy_close | initial 1 |
| 05:50 | enthalpy_open | initial -2 |
| 05:50 | fog_escalation_kpa | initial 1 |
| 05:50 | heat_hysteresis | initial 1.5 |
| 05:50 | min_fog_off_s | initial 180 |
| 05:50 | min_fog_on_s | initial 45 |
| 05:50 | min_heat_off_s | initial 180 |
| 05:50 | min_heat_on_s | initial 120 |
| 05:50 | min_vent_off_s | initial 60 |
| 05:50 | min_vent_on_s | initial 60 |
| 05:50 | mist_backoff_s | initial 2400 |
| 05:50 | mist_max_closed_vent_s | initial 120 |
| 05:50 | mist_thermal_relief_s | initial 90 |
| 05:50 | mister_all_delay_s | initial 600 |
| 05:50 | mister_engage_delay_s | initial 300 |
| 05:50 | mister_water_budget_gal | initial 600 |
| 05:50 | outdoor_staleness_max_s | initial 600 |
| 05:50 | sw_dwell_gate_enabled | initial 1 |
| 05:50 | sw_fog_closes_vent | initial 1 |
| 05:50 | sw_fsm_controller_enabled | initial 1 |
| 05:50 | sw_mister_closes_vent | initial 1 |
| 05:50 | sw_summer_vent_enabled | initial 1 |
| 05:50 | temp_hysteresis | initial 2 |
| 05:50 | vent_prefer_dp_delta_f | initial 5 |
| 05:50 | vent_prefer_temp_delta_f | initial 5 |
| 05:50 | vpd_watch_dwell_s | initial 120 |
| 08:30 | bias_heat | 2 → 1.4 |
| 08:30 | fog_escalation_kpa | 1 → 0.9 |
| 08:30 | min_fog_off_s | 180 → 150 |
| 08:30 | mist_backoff_s | 2400 → 1800 |
| 08:30 | mister_all_delay_s | 600 → 480 |
| 08:30 | mister_engage_delay_s | 300 → 240 |
| 08:30 | vpd_watch_dwell_s | 120 → 90 |
| 11:30 | bias_cool | 4 → 3.5 |
| 11:30 | bias_heat | 1.4 → 0.4 |
| 11:30 | fog_escalation_kpa | 0.9 → 0.35 |
| 11:30 | min_fog_off_s | 150 → 75 |
| 11:30 | mist_backoff_s | 1800 → 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 |
| 11:30 | temp_hysteresis | 2 → 1.7 |
| 11:30 | vpd_watch_dwell_s | 90 → 60 |
| 13:30 | bias_cool | 3.5 → 3 |
| 13:30 | bias_heat | 0.4 → 0 |
| 13:30 | fog_escalation_kpa | 0.35 → 0.2 |
| 13:30 | min_fog_off_s | 75 → 45 |
| 13:30 | mist_backoff_s | 900 → 600 |
| 13:30 | mist_max_closed_vent_s | 150 → 180 |
| 13:30 | mister_all_delay_s | 120 → 60 |
| 13:30 | mister_engage_delay_s | 60 → 30 |
| 13:30 | temp_hysteresis | 1.7 → 1.5 |
| 17:30 | bias_cool | 3 → 3.2 |
| 17:30 | bias_heat | 0 → 0.2 |
| 17:30 | fog_escalation_kpa | 0.2 → 0.3 |
| 17:30 | min_fog_off_s | 45 → 60 |
| 17:30 | mist_backoff_s | 600 → 900 |
| 17:30 | mister_all_delay_s | 60 → 90 |
| 17:30 | mister_engage_delay_s | 30 → 45 |
| 17:30 | temp_hysteresis | 1.5 → 1.7 |
| 20:30 | bias_cool | 3.2 → 4 |
| 20:30 | bias_heat | 0.2 → 1 |
| 20:30 | fog_escalation_kpa | 0.3 → 0.7 |
| 20:30 | min_fog_off_s | 60 → 150 |
| 20:30 | mist_backoff_s | 900 → 1800 |
| 20:30 | mist_max_closed_vent_s | 180 → 150 |
| 20:30 | mister_all_delay_s | 90 → 360 |
| 20:30 | mister_engage_delay_s | 45 → 180 |
| 20:30 | temp_hysteresis | 1.7 → 2 |
| 20:30 | vpd_watch_dwell_s | 60 → 90 |
| 06:00 | bias_heat | 1 → 1.8 |
| 06:00 | fog_escalation_kpa | 0.7 → 1 |
| 06:00 | min_fog_off_s | 150 → 180 |
| 06:00 | mist_backoff_s | 1800 → 2400 |
| 06:00 | mist_max_closed_vent_s | 150 → 120 |
| 06:00 | mister_all_delay_s | 360 → 600 |
| 06:00 | mister_engage_delay_s | 180 → 300 |
| 06:00 | vpd_watch_dwell_s | 90 → 120 |
| 12:00 | bias_cool | 4 → 3 |
| 12:00 | bias_heat | 1.8 → 0 |
| 12:00 | fog_escalation_kpa | 1 → 0.3 |
| 12:00 | min_fog_off_s | 180 → 60 |
| 12:00 | mist_backoff_s | 2400 → 900 |
| 12:00 | mist_max_closed_vent_s | 120 → 180 |
| 12:00 | mister_all_delay_s | 600 → 90 |
| 12:00 | mister_engage_delay_s | 300 → 45 |
| 12:00 | temp_hysteresis | 2 → 1.6 |
| 12:00 | vpd_watch_dwell_s | 120 → 60 |
🌆 Evening Cycle (8:18 PM) — iris-20260521-2016
validated
8/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: SUNSET overnight plan governed the cold saturated evening-to-sunrise window before this SUNRISE handoff. Window scorecard: score 78.7, both-axis compliance 81.0%, temp compliance 81.0%, VPD compliance 100.0%, about 0.17 total stress-hours split between small heat/cold band misses, 0.00h VPD-high, 0.00h VPD-low, and low window cost about USD 0.17. The hypothesis was mostly validated: high mist thresholds, conservative fog, short sealed residence, bias_cool +4, and modest heat support prevented overnight VPD stress and preserved dew safety. Remaining score loss is mostly structural narrow temperature-band alignment during spring mornings rather than a moisture-control failure. Score: 8/10
New finding: Cold saturated overnight windows with safe dew margin continue to validate conservative moisture suppression plus bias_cool +4 and modest heat staging: expect near-perfect VPD compliance, but do not over-score temperature compliance because narrow crop-band alignment can still create small heat/cold misses. → Added to Lessons Learned
Hypothesis
Testing: Test whether a strong saturated-night unwind plus bias_cool +4 can hold dp-risk at 0h and VPD-low under 1h while preserving a guardrail-aware Friday dry-ramp fallback if SUNRISE is missed. Expected outcome: Overnight: dp-risk 0h, VPD-low under 1h, cold stress near or below 1h, and cost below the 7-day average. If the fallback governs Friday afternoon, VPD-high should stay under about 2h without repeated moisture-guardrail clamps.
Conditions
66.0°F
22.0%
1008.0 W/m²
80.0%
Cold saturated night: 51F to 41F, RH 75-93%, outdoor VPD 0.07-0.32 kPa. Current indoor dew margin is safe near 9.9F and VPD is in band, but zones are spread and east remains driest. Friday afternoon has a dry ramp to raw VPD 1.6-1.7 kPa, RH low 20s, and raw solar near 1000 W/m2; forecast bias and cloud uncertainty argue for overnight suppression now and guardrail-aware noon fallback if SUNRISE is missed.
Expected stress windows
mister_engage_kpa 2.35-2.45, mister_all_kpa 2.5, 300/600s delays, 60s gaps, fog_escalation_kpa 1.0, vpd_hysteresis 0.5, short 120s sealed cap.
bias_heat 1.5 to 2.0, bias_cool +4, d_heat_stage_2 3, heat_hysteresis 1.5, dwell gate ON; do not raise crop bands.
Fallback only if SUNRISE is missed: guardrail-aware band-coupled moisture with engage 1.15, all 1.35, 45/90s delays, 25s gap, fog_escalation 0.25, min_fog_off 60, and 180s sealed cap.
Friday evening unwind: raise thresholds back to 2.35/2.5, 60s gaps, fog_escalation 1.0, and short sealed cap before RH rebounds.
Parameter rationale
Keep overnight cold stress near or below 1h without vent-chatter-driven temperature loss.
Limit pre-dawn crop-band cold scoring while avoiding continuous overheating or crop-band changes.
Avoid adding moisture overnight, 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.
If SUNRISE is missed, avoid fighting the moisture guardrail and keep Friday afternoon VPD-high under about 2h.
Catch stubborn VPD-high during VENTILATE assist without causing overnight or morning VPD-low.
Setpoints
Thursday May 21
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 20:25 | hyst 0.5 | evening_settle: finish unwinding from the resolved VPD-high |
| 23:30 | hyst 0.5 | saturated_night: outdoor RH rises and VPD collapses; suppres |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 20:25 | d_cool 3; engage 1.9; all 2.3; pulse 60; gap 50; wt 2.1 | evening_settle: finish unwinding from the resolved VPD-high |
| 23:30 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | saturated_night: outdoor RH rises and VPD collapses; suppres |
Friday May 22
Primary crop-band changes:
| Time | Values | Note |
|---|---|---|
| 05:30 | hyst 0.5 | pre_dawn_cold_saturated: forecast low near 41F with outdoor |
| 12:00 | hyst 0.45 | missed-sunrise dry-ramp fallback: if no new SUNRISE plan lan |
| 20:00 | hyst 0.5 | friday_evening_unwind: RH rebounds and solar is gone; return |
Tactical tunable changes:
| Time | Values | Note |
|---|---|---|
| 05:30 | d_cool 3; engage 2.45; all 2.5; pulse 60; gap 60; wt 2 | pre_dawn_cold_saturated: forecast low near 41F with outdoor |
| 12:00 | d_cool 3; engage 1.15; all 1.35; pulse 60; gap 25; wt 2.4 | missed-sunrise dry-ramp fallback: if no new SUNRISE plan lan |
| 20:00 | d_cool 3; engage 2.35; all 2.5; pulse 60; gap 60; wt 2 | friday_evening_unwind: RH rebounds and solar is gone; return |
Changed secondary parameters:
| Time | Parameter | Change |
|---|---|---|
| 20:25 | bias_cool | initial 4 |
| 20:25 | bias_heat | initial 1 |
| 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.7 |
| 20:25 | heat_hysteresis | initial 1.5 |
| 20:25 | min_fog_off_s | initial 90 |
| 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 900 |
| 20:25 | mist_max_closed_vent_s | initial 150 |
| 20:25 | mist_thermal_relief_s | initial 90 |
| 20:25 | mister_all_delay_s | initial 300 |
| 20:25 | mister_engage_delay_s | initial 120 |
| 20:25 | mister_water_budget_gal | initial 600 |
| 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 |
| 23:30 | bias_heat | 1 → 1.5 |
| 23:30 | fog_escalation_kpa | 0.7 → 1 |
| 23:30 | min_fog_off_s | 90 → 180 |
| 23:30 | mist_backoff_s | 900 → 1200 |
| 23:30 | mist_max_closed_vent_s | 150 → 120 |
| 23:30 | mister_all_delay_s | 300 → 600 |
| 23:30 | mister_engage_delay_s | 120 → 300 |
| 05:30 | bias_heat | 1.5 → 2 |
| 12:00 | bias_cool | 4 → 3 |
| 12:00 | bias_heat | 2 → 0 |
| 12:00 | fog_escalation_kpa | 1 → 0.25 |
| 12:00 | min_fog_off_s | 180 → 60 |
| 12:00 | mist_backoff_s | 1200 → 600 |
| 12:00 | mist_max_closed_vent_s | 120 → 180 |
| 12:00 | mister_all_delay_s | 600 → 90 |
| 12:00 | mister_engage_delay_s | 300 → 45 |
| 20:00 | bias_cool | 3 → 4 |
| 20:00 | bias_heat | 0 → 1 |
| 20:00 | fog_escalation_kpa | 0.25 → 1 |
| 20:00 | min_fog_off_s | 60 → 180 |
| 20:00 | mist_backoff_s | 600 → 1200 |
| 20:00 | mist_max_closed_vent_s | 180 → 120 |
| 20:00 | mister_all_delay_s | 90 → 600 |
| 20:00 | mister_engage_delay_s | 45 → 300 |
End-of-Day Summary
Climate
61.7–80.2°F; avg 69.2°F
0.35–1.60 kPa; avg 0.73 kPa
55.0–84.1%
Stress Hours
- Heat stress (>85°F): 2.7h
- VPD stress (>2.0 kPa): 2.1h
- Cold stress (<55°F): 1.0h
Economics
USD 4.18
USD 1.45
USD 0.560
USD 6.19
Equipment Runtimes
| Equipment | Runtime | Reading |
|---|---|---|
| Fan 1 | 133 min | Primary exhaust runtime. |
| Fan 2 | 120 min | Secondary exhaust runtime. |
| Vent | 242 min | Intake vent runtime. |
| Fog | 34 min | Fogger runtime. |
| Heat 1 electric | 914 min | Electric heater runtime. |
| Heat 2 gas | 140 min | Gas heater runtime. |
| Grow lights | 1129 min | Supplemental lighting runtime. |
| Mister south | 0.15h | South mister runtime. |
| Mister west | 0.03h | West mister runtime. |
| Mister center | 0.63h | Center mister runtime. |
Water
- Total: 116 gal
- Mister: 33 gal
Crop Health (Gemini Vision)
| Crop | Zone | Health | Observations | Note |
|---|---|---|---|---|
| Canna Lilies | south | 73% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| Vanda Orchids | center | 78% | 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 | 73% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
| strawberry | east | 80% | 4 | Observation notes are collapsed below to avoid publishing partial vision snippets. |
Vision observation notes
Canna Lilies look generally healthy, but soil moisture is reported as 0.0%, which could lead to stress if not addressed.
Hanging orchids appear generally healthy, some older leaves may be slightly yellowing but overall good condition.
Seedlings appear healthy and are establishing well.
Seedlings appear healthy with no visible stress.
Seedlings appear healthy with no visible stress.
Hourly Pattern
| Hour | Temperature | VPD | RH |
|---|---|---|---|
| 12:00 | 74.7°F | 0.73 kPa | 75.9% |
| 13:00 | 74.2°F | 0.72 kPa | 76.1% |
| 14:00 | 77.6°F | 1.21 kPa | 63.8% |
| 15:00 | 74.1°F | 0.81 kPa | 72.4% |
| 16:00 | 70.6°F | 0.59 kPa | 77.2% |
| 17:00 | 72.3°F | 0.82 kPa | 70.0% |
| 18:00 | 69.5°F | 0.94 kPa | 62.4% |
| 19:00 | 67.0°F | 0.68 kPa | 70.6% |
| 20:00 | 65.7°F | 0.49 kPa | 77.6% |
| 21:00 | 65.1°F | 0.45 kPa | 79.1% |
| 22:00 | 63.4°F | 0.38 kPa | 80.9% |
| 23:00 | 63.5°F | 0.38 kPa | 81.1% |
| 00:00 | 63.3°F | 0.39 kPa | 80.4% |
| 01:00 | 63.5°F | 0.41 kPa | 79.8% |
| 02:00 | 63.3°F | 0.41 kPa | 79.5% |
| 03:00 | 63.3°F | 0.43 kPa | 78.7% |
| 04:00 | 63.5°F | 0.45 kPa | 77.9% |
| 05:00 | 64.1°F | 0.48 kPa | 76.6% |
| 06:00 | 65.6°F | 0.58 kPa | 73.5% |
| 07:00 | 68.2°F | 0.70 kPa | 71.0% |
| 08:00 | 71.4°F | 0.82 kPa | 69.3% |
| 09:00 | 72.6°F | 0.87 kPa | 68.8% |
| 10:00 | 73.1°F | 0.79 kPa | 72.0% |
| 11:00 | 75.0°F | 0.76 kPa | 75.3% |
7-Day Stress Context
| Date | Heat | VPD high | Cold |
|---|---|---|---|
| 2026-05-15 | 5.8h | 6.3h | 0.2h |
| 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 |