March 29, 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 (6:07 PM) — iris-20260329-0000

Status

validated

Outcome score

7/10

Changed parameters

temp_high, mister_engage_kpa, mister_all_kpa, vpd_high, mister_pulse_gap_s, mister_pulse_on_s

Result: temp_high=82 fix confirmed working: fans OFF since 10:46 PM MDT Sat (7+ hours). Indoor held 60-63F overnight with no heater activation, no cooling waste. 6AM aggressive misting waypoints partially dispatched (3/5 params made it: engage=1.3, vpd_high=1.6, pulse_on=60s. BUT mister_all_kpa and mister_pulse_gap_s failed to dispatch — still at evening-restore values 2.0 and 45s respectively). Sunday daytime misting test cannot be scored yet.

Reflection

Validating previous cycle: iris-20260328-1200

Previous hypothesis: Extending aggressive misting settings 1h later (7PM MDT vs 6PM) will capture the late-afternoon VPD tail that often persists 1-2h after peak temp. Following Lesson #4 with 30s gap (not 45s) for tomorrow should show better VPD control than todays 25s gap which was untested. Result: temp_high=82 fix confirmed working: fans OFF since 10:46 PM MDT Sat (7+ hours). Indoor held 60-63F overnight with no heater activation, no cooling waste. 6AM aggressive misting waypoints partially dispatched (3/5 params made it: engage=1.3, vpd_high=1.6, pulse_on=60s. BUT mister_all_kpa and mister_pulse_gap_s failed to dispatch — still at evening-restore values 2.0 and 45s respectively). Sunday daytime misting test cannot be scored yet. Score: 7/10

New finding: Dispatcher does not reliably push all waypoints in a batch. Always verify /setpoints output for ALL params after a plan dispatch window. Two of 5 params at 6AM were silently missed. → Added to Lessons Learned

Hypothesis

Conditions: Sat evening 6PM: 74F/37% RH indoor, VPD 1.83 avg (north 2.03 worst). ESP32 in COOL_S3_HUM_IDLE — CRITICAL: temp_high=0 causing premature cooling staging. Overnight mild (55-61F, no frost). Sunday forecast: 55F→81F outdoor, 7-10% RH at peak, 93% avg cloud, VPD outdoor 3.0+ kPa. Very similar to Saturday but slightly cooler peak. Testing: temp_high=0→82 fix: compare overnight fan runtime tonight vs last night (should drop 80%+). Sunday: clean test of Lesson #4 misting (engage 1.3, gap 30s, pulse 60s) with correct cooling staging — first time all params correct simultaneously. Expected outcome: Overnight fan runtime <1h (vs current ~5h/day). Sunday VPD-high zone-hours <25 (vs Saturday 32.1). Cooling stages properly: COOL_S1 at 82F, S2 at 85F, S3 at 87F.

Setpoints

Saturday March 28

Primary crop-band changes:

18:05high 82

CRITICAL FIX: temp_high was 0, causing COOL_S3 at room temp.

18:07low 60; hyst 0.3

Backfilled core param for chart continuity

19:00vpd_h 2

Evening restore: normal all-zone threshold.

Tactical tunable changes:

18:07d_cool 3; wt 1.5

Backfilled core param for chart continuity

19:00engage 1.6; all 2; gap 45

Evening restore: normal all-zone threshold.

Sunday March 29

Primary crop-band changes:

06:00vpd_h 1.6

Sunday morning: all-zone rotation early for 7% RH conditions

19:00vpd_h 2

Sunday evening restore.

Tactical tunable changes:

06:00engage 1.3; all 1.6; pulse 60; gap 30

Sunday morning: all-zone rotation early for 7% RH conditions

19:00engage 1.6; all 2; gap 45

Sunday evening restore.


🌅 Morning Cycle (6:06 AM) — iris-20260329-0600

Status

validated

Outcome score

6/10

Changed parameters

mister_all_kpa, mister_pulse_gap_s, temp_high

Result: Partially achieved. temp_high=82 staging works correctly — fans only ran during daytime peaks (3.7h fan1, 3.75h fan2). Overnight fan runtime confirmed 0h. But reactive planner intervened at 11:11 AM pushing vpd_high=1.4 and pulse_on=75s, overriding the planned 1.6/60s. VPD-high zone-hours at noon: south 3.0h, north 2.8h, east 0.1h, west 0.4h = 6.3 total in first 6h. On pace for ~12-15 for full day (target was <20). North zone unexpectedly high VPD (2.13 at noon) despite house buffering. Clean Lesson #4 test confounded by reactive override.

Reflection

Validating previous cycle: iris-20260329-0000

Previous hypothesis: Fixing temp_high=0→82 will eliminate COOL_S3 at room temp, saving fan energy overnight and enabling proper staging. Sunday VPD stress should improve vs Saturday due to: (1) proper COOL staging letting fans+vent activate only when temp actually warrants it, (2) Lesson #4 misting settings applied cleanly from 6AM, (3) mister engage at 1.3 + 30s gap validated settings. Result: Partially achieved. temp_high=82 staging works correctly — fans only ran during daytime peaks (3.7h fan1, 3.75h fan2). Overnight fan runtime confirmed 0h. But reactive planner intervened at 11:11 AM pushing vpd_high=1.4 and pulse_on=75s, overriding the planned 1.6/60s. VPD-high zone-hours at noon: south 3.0h, north 2.8h, east 0.1h, west 0.4h = 6.3 total in first 6h. On pace for ~12-15 for full day (target was <20). North zone unexpectedly high VPD (2.13 at noon) despite house buffering. Clean Lesson #4 test confounded by reactive override. Score: 6/10

New finding: Reactive planner can override regular plan mid-cycle. Need to either disable reactive during clean experiments or have regular planner set guard rails the reactive cannot exceed. → Added to Lessons Learned

Hypothesis

Conditions: Sunday 6AM: 61F indoor, VPD 0.43, RH 77%. Outdoor ~50F. Forecast: 80F peak, 7-10% RH afternoon, 97% cloud cover midday (diffused solar reduces peak temps). VPD ramp 9AM-1PM from 1.6→3.0 kPa outdoor. System health 99/100. temp_high=82 fix confirmed overnight (no fan waste). Testing: Fix 2 dropped params (mister_all_kpa 2.0→1.6, gap 45→30) that the 6AM dispatch missed. First clean full-parameter test of Lesson #4 misting with correct cooling staging under cloudy-dry conditions. Expected outcome: VPD-high zone-hours <20 (vs Sat 24.9h). Fan runtime < 4h (only daytime, not overnight). Overnight Sat fan runtime was 0h — validated. Sunday should be physics-limited by 80F/7% RH, but clouds help.

Setpoints

Sunday March 29

Primary crop-band changes:

06:02high 82

Fix: failed to dispatch from iris-20260329-0000. Per Lesson

06:03vpd_h 1.6

Confirm engage=1.3 for dry day per Lesson #4.

06:06low 58; hyst 0.3

Backfilled core param for chart continuity

19:00vpd_h 2

Sunday evening restore.

Tactical tunable changes:

06:02all 1.6; gap 30

Fix: failed to dispatch from iris-20260329-0000. Per Lesson

06:03engage 1.3

Confirm engage=1.3 for dry day per Lesson #4.

06:06d_cool 3; pulse 60; wt 1.5

Backfilled core param for chart continuity

19:00engage 1.6; all 2; gap 45

Sunday evening restore.


☀️ Midday Cycle (12:07 PM) — iris-20260329-1200

Status

validated

Outcome score

4/10

Changed parameters

mister_pulse_on_s, temp_high, vpd_high, mister_engage_kpa, mister_all_kpa, mister_pulse_gap_s

Result: VPD spiked to 3.10-3.25 avg at 3-4PM (south 3.60 at 4PM). Reverted pulse_on from 75→60s at noon, but outdoor RH 9-11% with 87°F+ indoor made VPD control impossible. 10h heat stress, 47.4h VPD zone-hours for the day. 60s pulse is still the validated sweet spot, but marginal vs 75s on a day this extreme.

Reflection

Validating previous cycle: iris-20260329-0600

Previous hypothesis: With temp_high=82 now correct, cooling stages properly: COOL_S1 at 82F (fans), COOL_S2 at 85F (both fans), COOL_S3 at 87F (fog). Combined with Lesson #4 aggressive misting (engage 1.3, gap 30s, pulse 60s), the misting and cooling systems will work cooperatively instead of fighting. High cloud cover (97%) should limit peak indoor to ~88-90F vs 95F+ on clear days. Key difference vs yesterday: fans wont exhaust humid air until temp actually warrants it. Result: VPD spiked to 3.10-3.25 avg at 3-4PM (south 3.60 at 4PM). Reverted pulse_on from 75→60s at noon, but outdoor RH 9-11% with 87°F+ indoor made VPD control impossible. 10h heat stress, 47.4h VPD zone-hours for the day. 60s pulse is still the validated sweet spot, but marginal vs 75s on a day this extreme. Score: 4/10

New finding: On days with outdoor RH <15% and peak indoor >87°F, VPD >3.0 kPa at peak is structural regardless of pulse tuning. The 60s vs 75s choice is marginal — shade cloth is the only real fix for peak VPD on extreme dry days. → Added to Lessons Learned

Hypothesis

Conditions: Sunday noon: 78.6F avg, VPD 1.67 (moderate), outdoor 76F/18% RH. Zone VPD: north 2.13 (highest), south 1.71, west 1.72, east 1.34. Clear sky. Reactive planner pushed vpd_high=1.4 and pulse_on=75s at 11:11 AM. Monday forecast: overcast 100%, high ~77F, outdoor RH 10-14%. Stress so far today: south 3.0h VPD-high, north 2.8h. Testing: Revert reactive mister_pulse_on_s 75→60s immediately. Test whether 60s (validated sweet spot) outperforms reactives 75s for VPD control this afternoon. Compare afternoon VPD-high zone-hours with 60s vs the mornings 75s. Expected outcome: Afternoon VPD-high zone-hours (12PM-7PM): south <4h, total <12h. If 60s pulse resumes superior VPD drops, consider adding a constraint to prevent reactive planner from overriding pulse_on_s.

Setpoints

Sunday March 29

Primary crop-band changes:

12:05high 82

Override reactive 75s→60s. Lesson #4: 60s is the sweet spot

12:07low 60; hyst 0.3

Backfilled core param for chart continuity

19:00vpd_h 2

Sunday evening restore.

Tactical tunable changes:

12:05pulse 60

Override reactive 75s→60s. Lesson #4: 60s is the sweet spot

12:07d_cool 3; wt 1.5

Backfilled core param for chart continuity

19:00engage 1.6; all 2; gap 45

Sunday evening restore.

Monday March 30

Primary crop-band changes:

06:00high 82; vpd_h 1.6

Monday aggressive misting zone rotation.

Tactical tunable changes:

06:00engage 1.3; all 1.6; pulse 60; gap 30

Monday aggressive misting zone rotation.


🌆 Evening Cycle (6:05 PM) — iris-20260329-1800

Status

validated

Outcome score

6/10

Changed parameters

vpd_high, mister_engage_kpa, mister_all_kpa, mister_pulse_gap_s

Result: Overnight Sun→Mon was mild and stress-free (VPD <1.0, temp 61-70°F). Monday morning at 9:26AM: 70.4°F, VPD 0.81, RH 68.4%. Only 2h VPD stress accumulated (from late Sunday carry-over, not Monday). The experimental conditions changed dramatically: forecast predicted 9-12% outdoor RH for Monday, but a cold front arrived bringing 68%+ RH and a 17°F temp drop. Misters never engaged because VPD stayed well below engage threshold. The Lesson #7 misting experiment (engage 1.3, gap 30s) is a wash — conditions never triggered it.

Reflection

Validating previous cycle: iris-20260329-0600

Previous hypothesis: With temp_high=82 now correct, cooling stages properly: COOL_S1 at 82F (fans), COOL_S2 at 85F (both fans), COOL_S3 at 87F (fog). Combined with Lesson #4 aggressive misting (engage 1.3, gap 30s, pulse 60s), the misting and cooling systems will work cooperatively instead of fighting. High cloud cover (97%) should limit peak indoor to ~88-90F vs 95F+ on clear days. Key difference vs yesterday: fans wont exhaust humid air until temp actually warrants it. Result: Overnight Sun→Mon was mild and stress-free (VPD <1.0, temp 61-70°F). Monday morning at 9:26AM: 70.4°F, VPD 0.81, RH 68.4%. Only 2h VPD stress accumulated (from late Sunday carry-over, not Monday). The experimental conditions changed dramatically: forecast predicted 9-12% outdoor RH for Monday, but a cold front arrived bringing 68%+ RH and a 17°F temp drop. Misters never engaged because VPD stayed well below engage threshold. The Lesson #7 misting experiment (engage 1.3, gap 30s) is a wash — conditions never triggered it. Score: 6/10

New finding: Forecasts can shift overnight. Evening plans that set aggressive misting for next-day dry conditions may waste a plan cycle when weather changes. Consider: morning plans should re-evaluate evening assumptions before committing to experimental misting postures. → Added to Lessons Learned

Hypothesis

Conditions: Sunday 6PM: 80°F avg, VPD 2.29 (falling), RH 36%. Today was hot+dry — 89°F/3.25 kPa peak afternoon. 10h heat stress, 47.4h VPD zone-hours. Tomorrow: overcast (89-95% clouds) but still bone-dry (9-12% outdoor RH). Forecast high 78°F outdoor (+3°F bias → 81°F). Indoor peak likely 82-88°F (clouds cut solar gain). Precip prob 7-13% — not enough to help RH. Testing: First clean test of Lesson #7 misting on an overcast-but-dry day. Engage 1.3 + gap 30s starts 6AM Monday. Compare Monday VPD zone-hours vs today (47.4h) with similar outdoor RH but lower temps from clouds. Expected outcome: Monday VPD-high zone-hours < 30 (vs 47.4 today). Peak indoor temp < 88°F (vs 89°F today). Grow lights extend 3-4h for DLI compensation (overcast alert).

Setpoints

Sunday March 29

Primary crop-band changes:

18:00high 82; low 60; vpd_h 1.6; hyst 0.3

Standard staging.

19:00high 82; low 58; vpd_h 2; hyst 0.3

COOL_S2 at 85°F. Standard staging.

Tactical tunable changes:

18:00d_cool 3; engage 1.5; all 1.8; pulse 60; gap 45; wt 1.5

Standard staging.

19:00d_cool 3; engage 1.6; all 2; pulse 60; gap 45; wt 1.5

COOL_S2 at 85°F. Standard staging.

Monday March 30

Primary crop-band changes:

06:00high 82; low 60; vpd_h 1.6; hyst 0.3

Standard. COOL_S2 at 85°F.

19:00high 82; low 58; vpd_h 2; hyst 0.3

Standard.

Tactical tunable changes:

06:00d_cool 3; engage 1.3; all 1.6; pulse 60; gap 30; wt 1.5

Standard. COOL_S2 at 85°F.

19:00d_cool 3; engage 1.6; all 2; pulse 60; gap 45; wt 1.5

Standard.


End-of-Day Summary

Climate

Temperature

59.9–93.3°F; avg 72.0°F

VPD

0.38–3.89 kPa; avg 1.21 kPa

Relative humidity

22.3–79.1%

Stress Hours

  • Heat stress (>85°F): 15.0h
  • VPD stress (>2.0 kPa): 15.2h
  • Cold stress (<55°F): 5.1h

Economics

Electric

USD 0.29

Gas

USD 0.06

Water

USD 1.130

Total

USD 1.48

Equipment Runtimes

Fan 1427 min

Primary exhaust runtime.

Fan 2422 min

Secondary exhaust runtime.

Vent459 min

Intake vent runtime.

Fog80 min

Fogger runtime.

Heat 1 electric6 min

Electric heater runtime.

Heat 2 gas6 min

Gas heater runtime.

Grow lights956 min

Supplemental lighting runtime.

Mister south0.45h

South mister runtime.

Mister west0.12h

West mister runtime.

Mister center0.66h

Center mister runtime.

Water

  • Total: 231 gal
  • Mister: 39 gal

Hourly Pattern

12:0079.0°F; VPD 1.92 kPa

RH 43.3%.

13:0083.0°F; VPD 2.11 kPa

RH 45.5%.

14:0082.9°F; VPD 1.89 kPa

RH 51.5%.

15:0081.0°F; VPD 1.51 kPa

RH 58.2%.

16:0076.4°F; VPD 1.51 kPa

RH 51.4%.

17:0078.0°F; VPD 1.50 kPa

RH 53.9%.

18:0075.6°F; VPD 1.51 kPa

RH 50.0%.

19:0074.8°F; VPD 1.02 kPa

RH 65.4%.

20:0071.6°F; VPD 1.36 kPa

RH 48.1%.

21:0070.4°F; VPD 1.09 kPa

RH 56.9%.

22:0070.3°F; VPD 1.10 kPa

RH 56.4%.

23:0069.0°F; VPD 0.97 kPa

RH 60.1%.

00:0067.0°F; VPD 0.72 kPa

RH 68.2%.

01:0065.5°F; VPD 0.60 kPa

RH 71.9%.

02:0064.2°F; VPD 0.53 kPa

RH 74.0%.

03:0063.3°F; VPD 0.49 kPa

RH 75.5%.

04:0062.4°F; VPD 0.46 kPa

RH 76.3%.

05:0061.3°F; VPD 0.43 kPa

RH 76.9%.

06:0061.4°F; VPD 0.44 kPa

RH 76.7%.

07:0061.4°F; VPD 0.45 kPa

RH 76.0%.

08:0063.6°F; VPD 0.53 kPa

RH 73.7%.

09:0066.7°F; VPD 0.62 kPa

RH 72.4%.

10:0078.6°F; VPD 1.36 kPa

RH 60.3%.

11:0078.8°F; VPD 1.68 kPa

RH 50.3%.

7-Day Stress Context

2026-03-23Heat 7.3h; VPD high 12.0h

Cold stress 6.2h.

2026-03-24Heat 15.0h; VPD high 12.5h

Cold stress 5.6h.

2026-03-25Heat 17.5h; VPD high 13.4h

Cold stress 3.1h.

2026-03-26Heat 14.5h; VPD high 14.2h

Cold stress 1.6h.

2026-03-27Heat 0.0h; VPD high 2.4h

Cold stress 20.7h.

2026-03-28Heat 11.0h; VPD high 12.2h

Cold stress 11.0h.

2026-03-29Heat 15.0h; VPD high 15.2h

Cold stress 5.1h.