April 19, 2026

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

🌅 Morning Cycle (12:25 AM) — iris-20260419-0022

Status

validated

Outcome score

3/10

Changed parameters

none recorded

Result: Plan ran unmodified 18+ hours (00:22 → 19:06 MDT) with no intraday replanning. Scorecard: 25.5 score, 17.8% compliance, 14.4h cold stress (structural — crop band alignment per lesson #6), 4.2h heat stress, 4.5h VPD high stress. Cost USD 6.53 (above 7d avg USD 6.07). Evening vpd_high=0.60 proved too aggressive — drove south zone to 0.08 VPD near condensation risk. DP margin min was 4.3°F (below 5°F target). Leak alerts fired multiple times during afternoon misting. Setpoint unconfirmed alerts for vpd_target params persisted for hours — indicates ESP32 was not accepting zone-specific VPD targets pushed by the planner.

Reflection

Validating previous cycle: iris-20260418-0929

Previous hypothesis: Forecast update — Monday coverage gap. Current plan ends Mon 00:00 with overnight defaults, but Monday is the hardest day: 80°F/8% RH outdoor (VPD 3.21 kPa at 3 PM). Worse than Sunday’s 71°F/5%. Saturday and Sunday posture retained from iris-20260418-0618 (including Sunday fog_esc=0.3 experiment). Sunday freeze protection moved 1h earlier (05:00 vs 06:00) for 32°F nadir margin. Monday gets maximum misting aggression matching Sunday’s experimental posture — fog_esc 0.3, gap 15s, 900s sealed vent — providing a second data point under even more extreme conditions. Tuesday overnight is warmer (53-58°F, 26-32% RH) — lightest bias needed. Result: Plan ran unmodified 18+ hours (00:22 → 19:06 MDT) with no intraday replanning. Scorecard: 25.5 score, 17.8% compliance, 14.4h cold stress (structural — crop band alignment per lesson #6), 4.2h heat stress, 4.5h VPD high stress. Cost USD 6.53 (above 7d avg USD 6.07). Evening vpd_high=0.60 proved too aggressive — drove south zone to 0.08 VPD near condensation risk. DP margin min was 4.3°F (below 5°F target). Leak alerts fired multiple times during afternoon misting. Setpoint unconfirmed alerts for vpd_target params persisted for hours — indicates ESP32 was not accepting zone-specific VPD targets pushed by the planner. Score: 3/10

New finding: Zone-specific VPD target setpoints (vpd_target_south, vpd_target_west, vpd_target_center, vpd_target_east) generate persistent unconfirmed alerts when pushed — the ESP32 firmware may not support these as writable parameters. The planner should avoid pushing zone-specific VPD targets until the firmware is confirmed to accept them. Use mister_engage_kpa and mister_vpd_weight to control zone prioritization instead. → Added to Lessons Learned

Hypothesis

Testing: Three-day paired fog_escalation_kpa=0.3 test across escalating thermal regimes: Sunday 72°F/5%, Monday 81°F/5%, Tuesday 84°F/8%. Compare VPD compliance, fog activation frequency, and water usage across all three days to characterize fog effectiveness vs outdoor temperature. Expected outcome: Sunday: compliance 25-35%, heat_stress 2-4h, vpd_high 3-5h, water 300-450 gal, cost USD 6-10. Monday: compliance 15-25%, heat_stress 4-6h, vpd_high 5-8h, water 350-500 gal, cost USD 8-12. Tuesday (worst): compliance 10-20%, heat_stress 5-8h, vpd_high 6-9h, water 400-500 gal, cost USD 8-14. 72h total: USD 22-36. Tuesday morning gap 20s (vs 25s Sun/Mon) should show whether tighter morning misting reduces VPD ramp overshoot on fast-heating days.

Setpoints

Sunday April 19

Primary crop-band changes:

05:00hyst 0.3

Frost protection — 33°F outdoor nadir. bias_heat +4 shifts f

09:00hyst 0.2

Morning ramp — clouds clearing, outdoor 48°F/20% by 9 AM. Lo

13:00hyst 0.2

Peak dry — outdoor 67°F/6%, clear sky, 865 W/m². Max aggress

19:00hyst 0.3

Evening — solar dropping fast after 7 PM. Revert to conserva

Tactical tunable changes:

05:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 45; wt 2.5

Frost protection — 33°F outdoor nadir. bias_heat +4 shifts f

09:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 25; wt 2.5

Morning ramp — clouds clearing, outdoor 48°F/20% by 9 AM. Lo

13:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 15; wt 2.5

Peak dry — outdoor 67°F/6%, clear sky, 865 W/m². Max aggress

19:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 45; wt 2.5

Evening — solar dropping fast after 7 PM. Revert to conserva

Monday April 20

Primary crop-band changes:

00:00hyst 0.4

Monday overnight — 44-47°F outdoor, clear. Wider hysteresis

10:00hyst 0.2

Monday morning — variable clouds but heating fast (59°F/9% b

13:00hyst 0.2

Monday peak — 78°F/5% outdoor, 871 W/m². Max aggression. fog

19:00hyst 0.3

Monday evening — 72°F/14% outdoor, still dry. Warmer overnig

Tactical tunable changes:

00:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 45; wt 2.5

Monday overnight — 44-47°F outdoor, clear. Wider hysteresis

10:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 25; wt 2.5

Monday morning — variable clouds but heating fast (59°F/9% b

13:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 15; wt 2.5

Monday peak — 78°F/5% outdoor, 871 W/m². Max aggression. fog

19:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 35; wt 2.5

Monday evening — 72°F/14% outdoor, still dry. Warmer overnig

Tuesday April 21

Primary crop-band changes:

00:00hyst 0.3

Tuesday overnight — warm 55-57°F, 23-27% RH. Mild conditions

09:00hyst 0.2

Tuesday morning — fastest ramp of the 3 days. 69°F/18% outdo

13:00hyst 0.2

Tuesday peak — WORST DAY: 81°F/8% outdoor, 901 W/m² solar. f

19:00hyst 0.3

Tuesday evening — overcast, 74°F/17% outdoor. Warmer than Su

Tactical tunable changes:

00:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 45; wt 2.5

Tuesday overnight — warm 55-57°F, 23-27% RH. Mild conditions

09:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 20; wt 2.5

Tuesday morning — fastest ramp of the 3 days. 69°F/18% outdo

13:00d_cool 3; engage 1.3; all 1.5; pulse 60; gap 15; wt 2.5

Tuesday peak — WORST DAY: 81°F/8% outdoor, 901 W/m² solar. f

19:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 35; wt 2.5

Tuesday evening — overcast, 74°F/17% outdoor. Warmer than Su

Wednesday April 22

Primary crop-band changes:

00:00hyst 0.3

Wednesday overnight anchor — 60°F/31% outdoor, overcast, pos

Tactical tunable changes:

00:00d_cool 3; engage 1.6; all 1.9; pulse 60; gap 45; wt 2.5

Wednesday overnight anchor — 60°F/31% outdoor, overcast, pos

Changed secondary parameters:

05:00bias_cool

initial 4

05:00bias_heat

initial 4

05:00enthalpy_close

initial 1

05:00enthalpy_open

initial -2

05:00fog_escalation_kpa

initial 0.8

05:00min_fog_off_s

initial 60

05:00min_fog_on_s

initial 60

05:00min_heat_off_s

initial 300

05:00min_heat_on_s

initial 120

05:00min_vent_off_s

initial 60

05:00min_vent_on_s

initial 60

05:00mist_max_closed_vent_s

initial 600

05:00mist_thermal_relief_s

initial 90

05:00mist_vent_close_lead_s

initial 15

05:00mist_vent_reopen_delay_s

initial 45

05:00mister_water_budget_gal

initial 500

05:00vpd_watch_dwell_s

initial 60

09:00bias_cool

4 → 1

09:00bias_heat

4 → 0

09:00fog_escalation_kpa

0.8 → 0.4

09:00mist_max_closed_vent_s

600 → 900

13:00bias_cool

1 → 0

13:00fog_escalation_kpa

0.4 → 0.3

19:00bias_cool

0 → 3

19:00bias_heat

0 → 2

19:00fog_escalation_kpa

0.3 → 0.8

19:00mist_max_closed_vent_s

900 → 600

10:00bias_cool

3 → 1

10:00bias_heat

2 → 0

10:00fog_escalation_kpa

0.8 → 0.4

10:00mist_max_closed_vent_s

600 → 900

13:00bias_cool

1 → 0

13:00fog_escalation_kpa

0.4 → 0.3

19:00bias_cool

0 → 2

19:00bias_heat

0 → 1

19:00fog_escalation_kpa

0.3 → 0.5

19:00mist_max_closed_vent_s

900 → 600

00:00fog_escalation_kpa

0.5 → 0.8

09:00bias_cool

2 → 1

09:00bias_heat

1 → 0

09:00fog_escalation_kpa

0.8 → 0.4

09:00mist_max_closed_vent_s

600 → 900

13:00bias_cool

1 → 0

13:00fog_escalation_kpa

0.4 → 0.3

19:00bias_cool

0 → 1

19:00fog_escalation_kpa

0.3 → 0.5

19:00mist_max_closed_vent_s

900 → 600

00:00fog_escalation_kpa

0.5 → 0.8

Full secondary parameter dump
05:00bias_cool

Value 4.

05:00bias_heat

Value 4.

05:00enthalpy_close

Value 1.

05:00enthalpy_open

Value -2.

05:00fog_escalation_kpa

Value 0.8.

05:00min_fog_off_s

Value 60.

05:00min_fog_on_s

Value 60.

05:00min_heat_off_s

Value 300.

05:00min_heat_on_s

Value 120.

05:00min_vent_off_s

Value 60.

05:00min_vent_on_s

Value 60.

05:00mist_max_closed_vent_s

Value 600.

05:00mist_thermal_relief_s

Value 90.

05:00mist_vent_close_lead_s

Value 15.

05:00mist_vent_reopen_delay_s

Value 45.

05:00mister_water_budget_gal

Value 500.

05:00vpd_watch_dwell_s

Value 60.

09:00bias_cool

Value 1.

09:00bias_heat

Value 0.

09:00enthalpy_close

Value 1.

09:00enthalpy_open

Value -2.

09:00fog_escalation_kpa

Value 0.4.

09:00min_fog_off_s

Value 60.

09:00min_fog_on_s

Value 60.

09:00min_heat_off_s

Value 300.

09:00min_heat_on_s

Value 120.

09:00min_vent_off_s

Value 60.

09:00min_vent_on_s

Value 60.

09:00mist_max_closed_vent_s

Value 900.

09:00mist_thermal_relief_s

Value 90.

09:00mist_vent_close_lead_s

Value 15.

09:00mist_vent_reopen_delay_s

Value 45.

09:00mister_water_budget_gal

Value 500.

09:00vpd_watch_dwell_s

Value 60.

13:00bias_cool

Value 0.

13:00bias_heat

Value 0.

13:00enthalpy_close

Value 1.

13:00enthalpy_open

Value -2.

13:00fog_escalation_kpa

Value 0.3.

13:00min_fog_off_s

Value 60.

13:00min_fog_on_s

Value 60.

13:00min_heat_off_s

Value 300.

13:00min_heat_on_s

Value 120.

13:00min_vent_off_s

Value 60.

13:00min_vent_on_s

Value 60.

13:00mist_max_closed_vent_s

Value 900.

13:00mist_thermal_relief_s

Value 90.

13:00mist_vent_close_lead_s

Value 15.

13:00mist_vent_reopen_delay_s

Value 45.

13:00mister_water_budget_gal

Value 500.

13:00vpd_watch_dwell_s

Value 60.

19:00bias_cool

Value 3.

19:00bias_heat

Value 2.

19:00enthalpy_close

Value 1.

19:00enthalpy_open

Value -2.

19:00fog_escalation_kpa

Value 0.8.

19:00min_fog_off_s

Value 60.

19:00min_fog_on_s

Value 60.

19:00min_heat_off_s

Value 300.

19:00min_heat_on_s

Value 120.

19:00min_vent_off_s

Value 60.

19:00min_vent_on_s

Value 60.

19:00mist_max_closed_vent_s

Value 600.

19:00mist_thermal_relief_s

Value 90.

19:00mist_vent_close_lead_s

Value 15.

19:00mist_vent_reopen_delay_s

Value 45.

19:00mister_water_budget_gal

Value 500.

19:00vpd_watch_dwell_s

Value 60.

00:00bias_cool

Value 3.

00:00bias_heat

Value 2.

00:00enthalpy_close

Value 1.

00:00enthalpy_open

Value -2.

00:00fog_escalation_kpa

Value 0.8.

00:00min_fog_off_s

Value 60.

00:00min_fog_on_s

Value 60.

00:00min_heat_off_s

Value 300.

00:00min_heat_on_s

Value 120.

00:00min_vent_off_s

Value 60.

00:00min_vent_on_s

Value 60.

00:00mist_max_closed_vent_s

Value 600.

00:00mist_thermal_relief_s

Value 90.

00:00mist_vent_close_lead_s

Value 15.

00:00mist_vent_reopen_delay_s

Value 45.

00:00mister_water_budget_gal

Value 500.

00:00vpd_watch_dwell_s

Value 60.

10:00bias_cool

Value 1.

10:00bias_heat

Value 0.

10:00enthalpy_close

Value 1.

10:00enthalpy_open

Value -2.

10:00fog_escalation_kpa

Value 0.4.

10:00min_fog_off_s

Value 60.

10:00min_fog_on_s

Value 60.

10:00min_heat_off_s

Value 300.

10:00min_heat_on_s

Value 120.

10:00min_vent_off_s

Value 60.

10:00min_vent_on_s

Value 60.

10:00mist_max_closed_vent_s

Value 900.

10:00mist_thermal_relief_s

Value 90.

10:00mist_vent_close_lead_s

Value 15.

10:00mist_vent_reopen_delay_s

Value 45.

10:00mister_water_budget_gal

Value 500.

10:00vpd_watch_dwell_s

Value 60.

13:00bias_cool

Value 0.

13:00bias_heat

Value 0.

13:00enthalpy_close

Value 1.

13:00enthalpy_open

Value -2.

13:00fog_escalation_kpa

Value 0.3.

13:00min_fog_off_s

Value 60.

13:00min_fog_on_s

Value 60.

13:00min_heat_off_s

Value 300.

13:00min_heat_on_s

Value 120.

13:00min_vent_off_s

Value 60.

13:00min_vent_on_s

Value 60.

13:00mist_max_closed_vent_s

Value 900.

13:00mist_thermal_relief_s

Value 90.

13:00mist_vent_close_lead_s

Value 15.

13:00mist_vent_reopen_delay_s

Value 45.

13:00mister_water_budget_gal

Value 500.

13:00vpd_watch_dwell_s

Value 60.

19:00bias_cool

Value 2.

19:00bias_heat

Value 1.

19:00enthalpy_close

Value 1.

19:00enthalpy_open

Value -2.

19:00fog_escalation_kpa

Value 0.5.

19:00min_fog_off_s

Value 60.

19:00min_fog_on_s

Value 60.

19:00min_heat_off_s

Value 300.

19:00min_heat_on_s

Value 120.

19:00min_vent_off_s

Value 60.

19:00min_vent_on_s

Value 60.

19:00mist_max_closed_vent_s

Value 600.

19:00mist_thermal_relief_s

Value 90.

19:00mist_vent_close_lead_s

Value 15.

19:00mist_vent_reopen_delay_s

Value 45.

19:00mister_water_budget_gal

Value 500.

19:00vpd_watch_dwell_s

Value 60.

00:00bias_cool

Value 2.

00:00bias_heat

Value 1.

00:00enthalpy_close

Value 1.

00:00enthalpy_open

Value -2.

00:00fog_escalation_kpa

Value 0.8.

00:00min_fog_off_s

Value 60.

00:00min_fog_on_s

Value 60.

00:00min_heat_off_s

Value 300.

00:00min_heat_on_s

Value 120.

00:00min_vent_off_s

Value 60.

00:00min_vent_on_s

Value 60.

00:00mist_max_closed_vent_s

Value 600.

00:00mist_thermal_relief_s

Value 90.

00:00mist_vent_close_lead_s

Value 15.

00:00mist_vent_reopen_delay_s

Value 45.

00:00mister_water_budget_gal

Value 500.

00:00vpd_watch_dwell_s

Value 60.

09:00bias_cool

Value 1.

09:00bias_heat

Value 0.

09:00enthalpy_close

Value 1.

09:00enthalpy_open

Value -2.

09:00fog_escalation_kpa

Value 0.4.

09:00min_fog_off_s

Value 60.

09:00min_fog_on_s

Value 60.

09:00min_heat_off_s

Value 300.

09:00min_heat_on_s

Value 120.

09:00min_vent_off_s

Value 60.

09:00min_vent_on_s

Value 60.

09:00mist_max_closed_vent_s

Value 900.

09:00mist_thermal_relief_s

Value 90.

09:00mist_vent_close_lead_s

Value 15.

09:00mist_vent_reopen_delay_s

Value 45.

09:00mister_water_budget_gal

Value 500.

09:00vpd_watch_dwell_s

Value 60.

13:00bias_cool

Value 0.

13:00bias_heat

Value 0.

13:00enthalpy_close

Value 1.

13:00enthalpy_open

Value -2.

13:00fog_escalation_kpa

Value 0.3.

13:00min_fog_off_s

Value 60.

13:00min_fog_on_s

Value 60.

13:00min_heat_off_s

Value 300.

13:00min_heat_on_s

Value 120.

13:00min_vent_off_s

Value 60.

13:00min_vent_on_s

Value 60.

13:00mist_max_closed_vent_s

Value 900.

13:00mist_thermal_relief_s

Value 90.

13:00mist_vent_close_lead_s

Value 15.

13:00mist_vent_reopen_delay_s

Value 45.

13:00mister_water_budget_gal

Value 500.

13:00vpd_watch_dwell_s

Value 60.

19:00bias_cool

Value 1.

19:00bias_heat

Value 0.

19:00enthalpy_close

Value 1.

19:00enthalpy_open

Value -2.

19:00fog_escalation_kpa

Value 0.5.

19:00min_fog_off_s

Value 60.

19:00min_fog_on_s

Value 60.

19:00min_heat_off_s

Value 300.

19:00min_heat_on_s

Value 120.

19:00min_vent_off_s

Value 60.

19:00min_vent_on_s

Value 60.

19:00mist_max_closed_vent_s

Value 600.

19:00mist_thermal_relief_s

Value 90.

19:00mist_vent_close_lead_s

Value 15.

19:00mist_vent_reopen_delay_s

Value 45.

19:00mister_water_budget_gal

Value 500.

19:00vpd_watch_dwell_s

Value 60.

00:00bias_cool

Value 1.

00:00bias_heat

Value 0.

00:00enthalpy_close

Value 1.

00:00enthalpy_open

Value -2.

00:00fog_escalation_kpa

Value 0.8.

00:00min_fog_off_s

Value 60.

00:00min_fog_on_s

Value 60.

00:00min_heat_off_s

Value 300.

00:00min_heat_on_s

Value 120.

00:00min_vent_off_s

Value 60.

00:00min_vent_on_s

Value 60.

00:00mist_max_closed_vent_s

Value 600.

00:00mist_thermal_relief_s

Value 90.

00:00mist_vent_close_lead_s

Value 15.

00:00mist_vent_reopen_delay_s

Value 45.

00:00mister_water_budget_gal

Value 500.

00:00vpd_watch_dwell_s

Value 60.


🌆 Evening Cycle (7:06 PM) — iris-20260419-1903

Status

validated

Outcome score

4/10

Changed parameters

none recorded

Result: Plan covered 7 PM Apr 19 → 6 AM Apr 20 (~11h). Apr 19 full-day scorecard: score 27.4, compliance 17.8%, temp_compliance 22.4% (bottleneck), vpd_compliance 79.1% (good), heat_stress 2.57h, vpd_high 3.57h, vpd_low 1.93h, cost USD 5.16. VPD management was better than expected (79.1% vs hypothesis 20-30% compliance). The evening correction to stop over-aggressive VPD targeting was appropriate — vpd_low_stress was only 1.93h. Overnight: greenhouse held 68-73°F, VPD 0.8-1.2, RH 56-65% — mechanically stable. However, the Apr 20 partial scorecard (6 PM→6 AM window) shows 9.279 therms gas (USD 7.70) and 30.8h cumulative zone-stress — the tight crop band (63.5-68.9°F, VPD 0.4-0.7) is structurally penalizing: the greenhouse at 72°F and 1.0 VPD registers as double-stressed despite being perfectly healthy for the plants. Cost is running 2x the 7-day average primarily from gas heating against the tight band.

Reflection

Validating previous cycle: iris-20260419-0022

Previous hypothesis: Forecast update — extending coverage through Tuesday, which is now the hardest day in the window (84°F/8% outdoor, VPD 3.57 kPa). Sunday and Monday postures largely retained from iris-20260418-1943 — both days validated as well-calibrated for extreme dry conditions. Sunday: frost protection pre-dawn (33°F nadir), then clear-sky maximum misting aggression. Monday: similar but hotter (81°F/5%) with variable clouds. Tuesday: worst day — 84°F peak, 8-9% RH, clear AM then overcast PM. Maximum aggression with fog_esc=0.3 continued as third data point for the paired experiment (Sunday 72°F/5%, Monday 81°F/5%, Tuesday 84°F/8%). Wednesday overnight anchor at mild 60°F/31% — lightest bias needed.

{"conditions": [{"day": "Sunday", "outdoor_high_f": 72, "outdoor_low_f": 33, "outdoor_rh_pct": 5, "cloud_pct": 0, "severity": "extreme_dry"}, {"day": "Monday", "outdoor_high_f": 81, "outdoor_low_f": 36, "outdoor_rh_pct": 5, "cloud_pct": 60, "severity": "extreme_dry_hot"}, {"day": "Tuesday", "outdoor_high_f": 84, "outdoor_low_f": 51, "outdoor_rh_pct": 8, "cloud_pct": 40, "severity": "extreme_dry_hot"}], "stress_windows": [{"day": "Sunday", "type": "frost", "hours": "05:00-08:00", "mitigation": "bias_heat +4"}, {"day": "Sunday", "type": "vpd_high", "hours": "11:00-19:00", "mitigation": "fog_esc 0.3, gap 15s, sealed 900s"}, {"day": "Monday", "type": "heat+vpd_high", "hours": "12:00-18:00", "mitigation": "fog_esc 0.3, gap 15s, accept heat stress"}, {"day": "Tuesday", "type": "heat+vpd_high", "hours": "10:00-19:00", "mitigation": "fog_esc 0.3, gap 15s, accept 5-8h heat stress"}], "rationale": "Three consecutive extreme dry days with escalating thermal load. Physics-limited cooling above 85°F (lesson #5). Focus on maximum evaporative assist and sealed-vent retention. Tuesday is the worst — earliest morning ramp (09:00 waypoint) because 69°F/18% outdoor by 9 AM means indoor VPD will climb fast."}
**Result:** Plan covered 7 PM Apr 196 AM Apr 20 (~11h). Apr 19 full-day scorecard: score 27.4, compliance 17.8%, temp_compliance 22.4% (bottleneck), vpd_compliance 79.1% (good), heat_stress 2.57h, vpd_high 3.57h, vpd_low 1.93h, cost USD 5.16. VPD management was better than expected (79.1% vs hypothesis 20-30% compliance). The evening correction to stop over-aggressive VPD targeting was appropriate — vpd_low_stress was only 1.93h. Overnight: greenhouse held 68-73°F, VPD 0.8-1.2, RH 56-65% — mechanically stable. However, the Apr 20 partial scorecard (6 PM→6 AM window) shows 9.279 therms gas (USD 7.70) and 30.8h cumulative zone-stress — the tight crop band (63.5-68.9°F, VPD 0.4-0.7) is structurally penalizing: the greenhouse at 72°F and 1.0 VPD registers as double-stressed despite being perfectly healthy for the plants. Cost is running 2x the 7-day average primarily from gas heating against the tight band.
**Score:** 4/10
 
> **New finding:** Crop bands (63.5-68.9°F temp, 0.4-0.7 VPD) are structurally too tight for spring conditions. A 5.4°F temp band and 0.3 kPa VPD band guarantee low compliance — healthy overnight conditions (72°F, 1.0 VPD) register as double-failure. This is a band alignment problem, not a control problem. Heater oscillation to maintain 67.5°F+ drives USD 7+ overnight gas costs. Need to revisit crop profile bands or accept structural scoring penalty. → Added to [Lessons Learned](/reference/lessons)
 
### Hypothesis
 
**Testing:** Continued fog_escalation_kpa=0.3 test on Mon/Tue. Compare Monday (overcast AM → clearing PM, 82F peak) vs Tuesday (clear all day, 83F peak) to isolate cloud-cover effect on VPD ramp timing and misting water usage. Wednesday serves as humidity-recovery baseline.
**Expected outcome:** Monday: compliance 20-30%, heat_stress 3-5h, vpd_high 4-6h (overcast delays ramp), water 300-400 gal, cost USD 6-9. Tuesday: compliance 15-25%, heat_stress 5-7h, vpd_high 5-8h (clear sky = early ramp), water 350-450 gal, cost USD 7-10. Wednesday: compliance 30-40% (humidity relief), heat_stress 3-5h, vpd_high 3-5h, water 200-300 gal, cost USD 5-7. 72h total: USD 18-26.
 
#### Setpoints
 
 
#### Sunday April 19
 
**Primary crop-band changes:**
 
<div class="data-table">
  <div class="data-row"><strong>19:10</strong><span>vpd_h 1.2; hyst 0.3</span><p>Evening wind-down. VPD 0.52 at 67F is healthy — relax vpd_hi</p></div>
</div>
 
**Tactical tunable changes:**
 
<div class="data-table">
  <div class="data-row"><strong>19:10</strong><span>engage 1.6; all 1.9; gap 45</span><p>Evening wind-down. VPD 0.52 at 67F is healthy — relax vpd_hi</p></div>
</div>
 
 
#### Monday April 20
 
**Primary crop-band changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>vpd_h 1.4</span><p>Monday overnight. Outdoor dropping to 42F. Bias_heat +2 for </p></div>
  <div class="data-row"><strong>06:00</strong><span>vpd_h 1.2</span><p>Pre-dawn Monday. Outdoor 42F, 100% cloud. Extra heating bias</p></div>
  <div class="data-row"><strong>10:00</strong><span>vpd_h 0.8</span><p>Monday morning ramp. Still overcast (100% cloud) but outdoor</p></div>
  <div class="data-row"><strong>13:00</strong><span>vpd_h 0.7</span><p>Monday peak stress. Clouds clearing (74%), 79F outdoor, 6% R</p></div>
  <div class="data-row"><strong>19:00</strong><span>vpd_h 1.2</span><p>Monday evening. Outdoor cooling to 68F. Relax misting, shift</p></div>
</div>
 
**Tactical tunable changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>engage 1.6</span><p>Monday overnight. Outdoor dropping to 42F. Bias_heat +2 for </p></div>
  <div class="data-row"><strong>06:00</strong><span>engage 1.6</span><p>Pre-dawn Monday. Outdoor 42F, 100% cloud. Extra heating bias</p></div>
  <div class="data-row"><strong>10:00</strong><span>engage 1.3; all 1.6; gap 30</span><p>Monday morning ramp. Still overcast (100% cloud) but outdoor</p></div>
  <div class="data-row"><strong>13:00</strong><span>engage 1.2; all 1.5; gap 20</span><p>Monday peak stress. Clouds clearing (74%), 79F outdoor, 6% R</p></div>
  <div class="data-row"><strong>19:00</strong><span>engage 1.6; all 1.9; gap 45</span><p>Monday evening. Outdoor cooling to 68F. Relax misting, shift</p></div>
</div>
 
 
#### Tuesday April 21
 
**Primary crop-band changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>vpd_h 1.4</span><p>Tuesday overnight. Outdoor 54F dropping to 48F. Moderate hea</p></div>
  <div class="data-row"><strong>09:00</strong><span>vpd_h 0.8</span><p>Tuesday early ramp. Clear sky, 66F/11% outdoor by 9 AM — fas</p></div>
  <div class="data-row"><strong>13:00</strong><span>vpd_h 0.7</span><p>Tuesday peak stress. 82F/10% outdoor, clear → some cloud PM.</p></div>
  <div class="data-row"><strong>19:00</strong><span>vpd_h 1.2</span><p>Tuesday evening. Outdoor 76F dropping — warmer evening than </p></div>
</div>
 
**Tactical tunable changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>engage 1.6</span><p>Tuesday overnight. Outdoor 54F dropping to 48F. Moderate hea</p></div>
  <div class="data-row"><strong>09:00</strong><span>engage 1.3; all 1.6; gap 25</span><p>Tuesday early ramp. Clear sky, 66F/11% outdoor by 9 AM — fas</p></div>
  <div class="data-row"><strong>13:00</strong><span>engage 1.2; all 1.5; gap 20</span><p>Tuesday peak stress. 82F/10% outdoor, clear → some cloud PM.</p></div>
  <div class="data-row"><strong>19:00</strong><span>engage 1.6; all 1.9; gap 45</span><p>Tuesday evening. Outdoor 76F dropping — warmer evening than </p></div>
</div>
 
 
#### Wednesday April 22
 
**Primary crop-band changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>vpd_h 1.4</span><p>Wednesday overnight anchor. Moisture arriving — 40-48% outdo</p></div>
</div>
 
**Tactical tunable changes:**
 
<div class="data-table">
  <div class="data-row"><strong>00:00</strong><span>engage 1.4; gap 35</span><p>Wednesday overnight anchor. Moisture arriving — 40-48% outdo</p></div>
</div>
 
 
**Changed secondary parameters:**
 
<div class="data-table">
  <div class="data-row"><strong>19:10</strong><span>bias_cool</span><p>initial 0</p></div>
  <div class="data-row"><strong>19:10</strong><span>bias_heat</span><p>initial 0</p></div>
  <div class="data-row"><strong>19:10</strong><span>fog_escalation_kpa</span><p>initial 0.5</p></div>
  <div class="data-row"><strong>19:10</strong><span>mist_max_closed_vent_s</span><p>initial 300</p></div>
  <div class="data-row"><strong>19:10</strong><span>mister_water_budget_gal</span><p>initial 500</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_heat</span><p>02</p></div>
  <div class="data-row"><strong>06:00</strong><span>bias_heat</span><p>24</p></div>
  <div class="data-row"><strong>10:00</strong><span>bias_cool</span><p>02</p></div>
  <div class="data-row"><strong>10:00</strong><span>bias_heat</span><p>40</p></div>
  <div class="data-row"><strong>10:00</strong><span>fog_escalation_kpa</span><p>0.50.3</p></div>
  <div class="data-row"><strong>10:00</strong><span>mist_max_closed_vent_s</span><p>300900</p></div>
  <div class="data-row"><strong>13:00</strong><span>bias_cool</span><p>23</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_cool</span><p>30</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_heat</span><p>02</p></div>
  <div class="data-row"><strong>19:00</strong><span>fog_escalation_kpa</span><p>0.30.5</p></div>
  <div class="data-row"><strong>19:00</strong><span>mist_max_closed_vent_s</span><p>900300</p></div>
  <div class="data-row"><strong>09:00</strong><span>bias_cool</span><p>02</p></div>
  <div class="data-row"><strong>09:00</strong><span>bias_heat</span><p>20</p></div>
  <div class="data-row"><strong>09:00</strong><span>fog_escalation_kpa</span><p>0.50.3</p></div>
  <div class="data-row"><strong>09:00</strong><span>mist_max_closed_vent_s</span><p>300900</p></div>
  <div class="data-row"><strong>13:00</strong><span>bias_cool</span><p>23</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_cool</span><p>30</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_heat</span><p>01</p></div>
  <div class="data-row"><strong>19:00</strong><span>fog_escalation_kpa</span><p>0.30.5</p></div>
  <div class="data-row"><strong>19:00</strong><span>mist_max_closed_vent_s</span><p>900300</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_heat</span><p>10</p></div>
  <div class="data-row"><strong>00:00</strong><span>fog_escalation_kpa</span><p>0.50.4</p></div>
  <div class="data-row"><strong>00:00</strong><span>mist_max_closed_vent_s</span><p>300600</p></div>
</div>
 
<details>
<summary>Full secondary parameter dump</summary>
 
<div class="data-table">
  <div class="data-row"><strong>19:10</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>19:10</strong><span>bias_heat</span><p>Value 0.</p></div>
  <div class="data-row"><strong>19:10</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>19:10</strong><span>mist_max_closed_vent_s</span><p>Value 300.</p></div>
  <div class="data-row"><strong>19:10</strong><span>mister_water_budget_gal</span><p>Value 500.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_heat</span><p>Value 2.</p></div>
  <div class="data-row"><strong>00:00</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>00:00</strong><span>mist_max_closed_vent_s</span><p>Value 300.</p></div>
  <div class="data-row"><strong>06:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>06:00</strong><span>bias_heat</span><p>Value 4.</p></div>
  <div class="data-row"><strong>06:00</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>10:00</strong><span>bias_cool</span><p>Value 2.</p></div>
  <div class="data-row"><strong>10:00</strong><span>bias_heat</span><p>Value 0.</p></div>
  <div class="data-row"><strong>10:00</strong><span>fog_escalation_kpa</span><p>Value 0.3.</p></div>
  <div class="data-row"><strong>10:00</strong><span>mist_max_closed_vent_s</span><p>Value 900.</p></div>
  <div class="data-row"><strong>10:00</strong><span>mister_water_budget_gal</span><p>Value 500.</p></div>
  <div class="data-row"><strong>13:00</strong><span>bias_cool</span><p>Value 3.</p></div>
  <div class="data-row"><strong>13:00</strong><span>fog_escalation_kpa</span><p>Value 0.3.</p></div>
  <div class="data-row"><strong>13:00</strong><span>mist_max_closed_vent_s</span><p>Value 900.</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_heat</span><p>Value 2.</p></div>
  <div class="data-row"><strong>19:00</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>19:00</strong><span>mist_max_closed_vent_s</span><p>Value 300.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_heat</span><p>Value 2.</p></div>
  <div class="data-row"><strong>00:00</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>00:00</strong><span>mist_max_closed_vent_s</span><p>Value 300.</p></div>
  <div class="data-row"><strong>09:00</strong><span>bias_cool</span><p>Value 2.</p></div>
  <div class="data-row"><strong>09:00</strong><span>bias_heat</span><p>Value 0.</p></div>
  <div class="data-row"><strong>09:00</strong><span>fog_escalation_kpa</span><p>Value 0.3.</p></div>
  <div class="data-row"><strong>09:00</strong><span>mist_max_closed_vent_s</span><p>Value 900.</p></div>
  <div class="data-row"><strong>09:00</strong><span>mister_water_budget_gal</span><p>Value 500.</p></div>
  <div class="data-row"><strong>13:00</strong><span>bias_cool</span><p>Value 3.</p></div>
  <div class="data-row"><strong>13:00</strong><span>fog_escalation_kpa</span><p>Value 0.3.</p></div>
  <div class="data-row"><strong>13:00</strong><span>mist_max_closed_vent_s</span><p>Value 900.</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>19:00</strong><span>bias_heat</span><p>Value 1.</p></div>
  <div class="data-row"><strong>19:00</strong><span>fog_escalation_kpa</span><p>Value 0.5.</p></div>
  <div class="data-row"><strong>19:00</strong><span>mist_max_closed_vent_s</span><p>Value 300.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_cool</span><p>Value 0.</p></div>
  <div class="data-row"><strong>00:00</strong><span>bias_heat</span><p>Value 0.</p></div>
  <div class="data-row"><strong>00:00</strong><span>fog_escalation_kpa</span><p>Value 0.4.</p></div>
  <div class="data-row"><strong>00:00</strong><span>mist_max_closed_vent_s</span><p>Value 600.</p></div>
</div>
 
</details>
 
---
 
## End-of-Day Summary
 
### Climate
 
<div class="metric-grid">
  <div class="metric-card"><strong>Temperature</strong><p>53.690.4°F; avg 68.1°F</p></div>
  <div class="metric-card"><strong>VPD</strong><p>0.233.04 kPa; avg 0.93 kPa</p></div>
  <div class="metric-card"><strong>Relative humidity</strong><p>22.285.7%</p></div>
</div>
 
### Stress Hours
 
- **Heat stress (>85°F):** 6.8h
- **VPD stress (>2.0 kPa):** 9.0h
- **Cold stress (<55°F):** 14.0h
 
### Economics
 
<div class="metric-grid">
  <div class="metric-card"><strong>Electric</strong><p>USD 0.27</p></div>
  <div class="metric-card"><strong>Gas</strong><p>USD 2.45</p></div>
  <div class="metric-card"><strong>Water</strong><p>USD 0.090</p></div>
  <div class="metric-card"><strong>Total</strong><p>USD 2.81</p></div>
</div>
 
### Equipment Runtimes
 
<div class="data-table">
  <div class="data-row"><strong>Fan 1</strong><span>189 min</span><p>Primary exhaust runtime.</p></div>
  <div class="data-row"><strong>Fan 2</strong><span>211 min</span><p>Secondary exhaust runtime.</p></div>
  <div class="data-row"><strong>Vent</strong><span>289 min</span><p>Intake vent runtime.</p></div>
  <div class="data-row"><strong>Fog</strong><span>98 min</span><p>Fogger runtime.</p></div>
  <div class="data-row"><strong>Heat 1 electric</strong><span>714 min</span><p>Electric heater runtime.</p></div>
  <div class="data-row"><strong>Heat 2 gas</strong><span>236 min</span><p>Gas heater runtime.</p></div>
  <div class="data-row"><strong>Grow lights</strong><span>0 min</span><p>Supplemental lighting runtime.</p></div>
  <div class="data-row"><strong>Mister south</strong><span>1.74h</span><p>South mister runtime.</p></div>
  <div class="data-row"><strong>Mister west</strong><span>0.65h</span><p>West mister runtime.</p></div>
  <div class="data-row"><strong>Mister center</strong><span>2.08h</span><p>Center mister runtime.</p></div>
</div>
 
### Water
 
- **Total:** 502 gal
- **Mister:** 238 gal
 
### Crop Health (Gemini Vision)
 
<div class="data-table">
  <div class="data-row"><strong>Canna Lilies</strong><span>south · health 70% · 4 obs</span><p>Observation notes are collapsed below to avoid publishing partial vision snippets.</p></div>
  <div class="data-row"><strong>Vanda Orchids</strong><span>center · health 60% · 4 obs</span><p>Observation notes are collapsed below to avoid publishing partial vision snippets.</p></div>
  <div class="data-row"><strong>lettuce</strong><span>east · health 60% · 4 obs</span><p>Observation notes are collapsed below to avoid publishing partial vision snippets.</p></div>
  <div class="data-row"><strong>pepper</strong><span>east · health 58% · 4 obs</span><p>Observation notes are collapsed below to avoid publishing partial vision snippets.</p></div>
  <div class="data-row"><strong>strawberry</strong><span>east · health 63% · 4 obs</span><p>Observation notes are collapsed below to avoid publishing partial vision snippets.</p></div>
</div>
 
<details>
<summary>Vision observation notes</summary>
 
<div class="data-table">
  <div class="data-row"><strong>Canna Lilies</strong><span>Gemini Vision notes</span><p>Canna Lilies look generally healthy, though lighting makes detailed assessment difficult.</p></div>
  <div class="data-row"><strong>Vanda Orchids</strong><span>Gemini Vision notes</span><p>Hanging orchids appear generally healthy, though some lower leaves look slightly pale.</p></div>
  <div class="data-row"><strong>lettuce</strong><span>Gemini Vision notes</span><p>Seedlings appear small but generally healthy, though hard to see clearly due to image quality.</p></div>
  <div class="data-row"><strong>pepper</strong><span>Gemini Vision notes</span><p>Difficult to assess health accurately due to distance and image clarity.</p></div>
  <div class="data-row"><strong>strawberry</strong><span>Gemini Vision notes</span><p>Difficult to assess health accurately due to distance and image clarity.</p></div>
</div>
 
</details>
 
### Hourly Pattern
 
<div class="data-table">
  <div class="data-row"><strong>12:00</strong><span>77.0°F; VPD 1.20 kPa</span><p>RH 62.4%.</p></div>
  <div class="data-row"><strong>13:00</strong><span>79.4°F; VPD 1.26 kPa</span><p>RH 63.6%.</p></div>
  <div class="data-row"><strong>14:00</strong><span>81.8°F; VPD 1.93 kPa</span><p>RH 47.2%.</p></div>
  <div class="data-row"><strong>15:00</strong><span>84.8°F; VPD 1.74 kPa</span><p>RH 56.7%.</p></div>
  <div class="data-row"><strong>16:00</strong><span>76.3°F; VPD 1.35 kPa</span><p>RH 57.2%.</p></div>
  <div class="data-row"><strong>17:00</strong><span>71.7°F; VPD 0.86 kPa</span><p>RH 67.7%.</p></div>
  <div class="data-row"><strong>18:00</strong><span>67.5°F; VPD 0.57 kPa</span><p>RH 75.5%.</p></div>
  <div class="data-row"><strong>19:00</strong><span>64.9°F; VPD 0.46 kPa</span><p>RH 78.5%.</p></div>
  <div class="data-row"><strong>20:00</strong><span>61.3°F; VPD 0.43 kPa</span><p>RH 77.0%.</p></div>
  <div class="data-row"><strong>21:00</strong><span>60.7°F; VPD 0.42 kPa</span><p>RH 77.3%.</p></div>
  <div class="data-row"><strong>22:00</strong><span>60.8°F; VPD 0.47 kPa</span><p>RH 74.4%.</p></div>
  <div class="data-row"><strong>23:00</strong><span>60.7°F; VPD 0.53 kPa</span><p>RH 70.9%.</p></div>
  <div class="data-row"><strong>00:00</strong><span>60.4°F; VPD 0.50 kPa</span><p>RH 72.0%.</p></div>
  <div class="data-row"><strong>01:00</strong><span>60.4°F; VPD 0.54 kPa</span><p>RH 70.1%.</p></div>
  <div class="data-row"><strong>02:00</strong><span>60.3°F; VPD 0.53 kPa</span><p>RH 70.5%.</p></div>
  <div class="data-row"><strong>03:00</strong><span>60.3°F; VPD 0.54 kPa</span><p>RH 70.1%.</p></div>
  <div class="data-row"><strong>04:00</strong><span>60.2°F; VPD 0.54 kPa</span><p>RH 69.6%.</p></div>
  <div class="data-row"><strong>05:00</strong><span>60.0°F; VPD 0.53 kPa</span><p>RH 70.1%.</p></div>
  <div class="data-row"><strong>06:00</strong><span>62.8°F; VPD 0.63 kPa</span><p>RH 67.9%.</p></div>
  <div class="data-row"><strong>07:00</strong><span>65.8°F; VPD 0.73 kPa</span><p>RH 66.3%.</p></div>
  <div class="data-row"><strong>08:00</strong><span>68.2°F; VPD 0.86 kPa</span><p>RH 63.2%.</p></div>
  <div class="data-row"><strong>09:00</strong><span>67.8°F; VPD 0.84 kPa</span><p>RH 64.0%.</p></div>
  <div class="data-row"><strong>10:00</strong><span>71.6°F; VPD 1.03 kPa</span><p>RH 61.8%.</p></div>
  <div class="data-row"><strong>11:00</strong><span>75.0°F; VPD 1.07 kPa</span><p>RH 64.5%.</p></div>
</div>
 
## 7-Day Stress Context
 
<div class="data-table">
  <div class="data-row"><strong>2026-04-13</strong><span>Heat 9.2h; VPD high 5.4h</span><p>Cold stress 1.1h.</p></div>
  <div class="data-row"><strong>2026-04-14</strong><span>Heat 0.8h; VPD high 2.2h</span><p>Cold stress 11.6h.</p></div>
  <div class="data-row"><strong>2026-04-15</strong><span>Heat 6.6h; VPD high 7.6h</span><p>Cold stress 13.8h.</p></div>
  <div class="data-row"><strong>2026-04-16</strong><span>Heat 7.3h; VPD high 5.9h</span><p>Cold stress 10.6h.</p></div>
  <div class="data-row"><strong>2026-04-17</strong><span>Heat 0.1h; VPD high 2.9h</span><p>Cold stress 18.3h.</p></div>
  <div class="data-row"><strong>2026-04-18</strong><span>Heat 4.2h; VPD high 4.6h</span><p>Cold stress 12.7h.</p></div>
  <div class="data-row"><strong>2026-04-19</strong><span>Heat 6.8h; VPD high 9.0h</span><p>Cold stress 14.0h.</p></div>
</div>