AI Greenhouse Lessons Learned

A curated operations playbook distilled from Verdify’s planner lesson table. The public page leads with durable greenhouse knowledge; noisy machine extraction rows are collapsed below for auditability.

Launch Priorities

  • Gas heat is 3.9x cheaper per BTU than electric for sustained cold.
  • Direct relay control stays in firmware.
  • Shade cloth, not software, is the missing hot-day fix.
  • VPD is the dominant spring constraint.
  • Stale plans must be replaced when forecast regime changes.

Those lessons constrain the bounded control surface listed in AI-Writable Tunables.

Generated 2026-05-10 from 48 active rows and 43 retired rows in planner_lessons.

Operational Playbook

These are the launch-facing operating rules Iris (our OpenClaw AI agent) should read first. They are curated from validated lessons; machine extraction details are intentionally pushed into audit tables.

Heat With Gas; Let Thermal Mass Work

  • Use electric heat for mild dips and gas heat for sustained cold; gas remains the efficient overnight BTU source.
  • Do not chase every spring-morning cold-stress hour with higher heat setpoints. Some score loss comes from crop-band alignment, not plant danger.
  • Plan around a 62-66F overnight equilibrium on 48-55F spring nights, especially when humidity can sag VPD below band before dawn.

Evidence: lesson 2 (High, 13x), lesson 91 (High, 6x), lesson 96 (Medium, 1x), lesson 87 (Medium, 2x).

Cooling Is Physics-Limited

  • Shade cloth is the real hot-day fix; software can pre-cool, mist, and ventilate, but cannot erase 90F+ solar gain.
  • Do not seal the house for humidity trapping when indoor temperature is near the safety ceiling.
  • VENTILATE plus misting is the safe outcome when sealed misting cannot overcome solar load.

Evidence: lesson 4 (High, 6x), lesson 89 (High, 3x), lesson 95 (High, 3x).

Tune Misting To Weather Regime

  • Reserve aggressive misting for warm, dry, high-VPD days. Cold-dry air can still produce manageable indoor VPD.
  • Use moderate mist/fog settings on moderate-dry days to avoid VPD-low overshoot.
  • On cool, cloudy, high-RH days, suppress mist and favor ventilation/dehumidification rather than water-use optimization alone.
  • Treat the 900s closed-vent experiment as an extreme-dry tool, not a general humidity strategy.

Evidence: lesson 1 (Medium, 9x), lesson 10 (Medium, 4x), lesson 27 (Medium, 10x), lesson 88 (Medium, 3x), lesson 90 (Low, 1x), lesson 93 (Medium, 1x), lesson 98 (Low, 1x), lesson 99 (High, 5x), lesson 100 (Low, 1x), lesson 101 (Low, 1x), lesson 102 (Medium, 1x).

Keep Planner Control Bounded

  • Use canonical DB parameter names; ESP32 object IDs create duplicate active-plan rows.
  • Never set timer parameters to zero. Firmware minimums exist to avoid 5-second relay chatter.
  • Do not push unconfirmed zone-specific VPD targets. Use firmware-confirmed global misting tunables instead.
  • Replace stale plans when the forecast regime changes, even if the original plan window has not expired.

Evidence: lesson 5 (High, 3x), lesson 7 (High, 11x), lesson 8 (High, 7x), lesson 94 (High, 1x), lesson 97 (Medium, 1x).

Read Scores Through Structural Constraints

  • Some cold, heat, and combined compliance loss is structural when crop bands are narrower than the greenhouse’s spring operating envelope.
  • Use VPD compliance as the meaningful optimization axis on warm spring days where low temperature compliance is physically unreachable.
  • Separate controller failures from crop-band scoring artifacts before changing tunables.

Evidence: lesson 87 (Medium, 2x), lesson 91 (High, 6x), lesson 92 (Medium, 3x).

Current Validated Signals

Active machine lessons are collapsed by operational signal. Duplicate confirmations count as evidence, not separate public guidance.

SignalOperational readingEvidence
Cold-night bias and moderate-day fog tuningRepeated confirmations collapse to one signal: cold nights need heat/cool bias coordination, while moderate days need fog_escalation around 0.4 to avoid VPD-low overshoot.Low; 19x; lesson rows 66-84
Mild-day baseline mistingBaseline misting around engage 1.4-1.5 with 30-35s gaps works on mild, moderate-RH days; reserve stronger settings for genuinely dry VPD pressure.Low; 6x; lesson rows 45, 56
Gas heat economicsGas heater (heat2, 75K BTU, USD 0.623/hr) is 3.9x more cost-effective per BTU than electric (heat1, 5K BTU, USD 0.167/hr).High; 13x; lesson rows 2
Canonical parameter namesALWAYS use canonical DB parameter names: vpd_high (not set_vpd_high_kpa), mister_engage_kpa (not vpd_mister_engage_kpa), mister_all_kpa (not vpd_mister_all_kpa), temp_low (not…High; 11x; lesson rows 7
DLI sensor correctionSensor DLI reads 25-40% of actual plant-available light due to LDR saturation at ~28K lux + morning tree shadow.High; 8x; lesson rows 3
Timer zero safetyNever set timer parameters to 0.High; 7x; lesson rows 8
Cooling physics limitPhysics-limited: 55,600 BTU/hr solar gain vs 15,000-22,000 BTU/hr cooling capacity.High; 6x; lesson rows 4
Morning crop-band cold scoringCold stress hours are dominated by crop profile band alignment on spring mornings, not actual plant danger.High; 6x; lesson rows 91
Mist suppression plus ventilationMist/fog suppression alone can preserve dew-point safety but leave VPD below band for most of the day.High; 5x; lesson rows 99
Dispatcher owns temp_hightemp_high=82F is enforced by the band dispatcher from crop profiles.High; 3x; lesson rows 5
Sealed mist thermal riskNever seal the greenhouse for humidity trapping when indoor temp exceeds safety_max - 5°F.High; 3x; lesson rows 89
Sealed mist cycles to ventilationSEALED_MIST will cycle to THERMAL_RELIEF within 10 min at these conditions — solar gain outpaces single-zone mister cooling ~7:1.High; 3x; lesson rows 95
Unconfirmed zone VPD targetsZone-specific VPD target setpoints (vpd_target_south, vpd_target_west, vpd_target_center, vpd_target_east, mister_center_penalty) are NOT confirmed by ESP32 readback — they…High; 1x; lesson rows 94
900s closed-vent extreme-dry experimentExtreme-dry evidence supports a longer closed-vent mist window, but superseded duplicates are historical confirmations rather than separate guidance.Medium; 10x; lesson rows 27
Warm-dry misting postureOn dry days, lower mister_engage_kpa to 1.3 (from 1.6) before the morning VPD ramp (6 AM waypoint).Medium; 9x; lesson rows 1
Cold-dry misting postureCold-dry days (outdoor <55F with <25% RH) produce minimal VPD stress because temperature is the dominant VPD driver, not humidity alone.Medium; 4x; lesson rows 10
Moderate-dry fog overshootfog_escalation 0.3 kPa + aggressive misting (engage 1.3-1.4, gap 15-35s) eliminates VPD_high stress but creates 6-7h VPD_low stress on moderate dry days (70°F peak).Medium; 3x; lesson rows 88
Warm-side crop-band scoringOn warm days (outdoor >65°F), the narrow crop band upper limit (69.3°F) guarantees low temp compliance regardless of planner actions.Medium; 3x; lesson rows 92
Structural overnight heat score lossOvernight heat stress (3-4h) when slab retains 62-63F but nighttime temp_high band is 62-65F from crop profiles is structural.Medium; 2x; lesson rows 87
Overcast cold mistingOn overcast cold days, use conservative misting posture (engage 1.6, gap 45s).Medium; 1x; lesson rows 93
Slab overnight equilibriumSlab thermal mass delivers 62-65°F overnight equilibrium when outdoor is 48-55°F, not the commonly predicted 65-70°F.Medium; 1x; lesson rows 96
Stale plan regime changesPlans must be replaced when forecast regime changes (e.g., extreme-dry → cool-overcast cold front).Medium; 1x; lesson rows 97
Cloudy high-humidity dry-ramp avoidanceWhen cloud cover and outdoor humidity are both high, avoid dry-ramp misting posture and raise mist thresholds early enough to prevent VPD-low accumulation.Medium; 1x; lesson rows 102
When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low…When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low over preempting forecast dry-window VPD-high unless outdoor RH is actually below ~30% and…Medium; 1x; lesson rows 103
Tight crop-band misting and heat biasWhen crop bands are unusually tight, misting must engage below the band ceiling and heat periods need cooling bias to avoid oscillation.Low; 1x; lesson rows 65
Moderate-warm over-mistingOn moderate-warm days where outdoor VPD peaks under 2.0 kPa, aggressive misting presets (engage 1.3, gap 15-20s) cause 1-2h VPD-low stress from over-humidification.Low; 1x; lesson rows 90
Cool high-RH recovery postureCool, cloudy, high-RH recovery days are VPD-low and condensation problems; suppress mist and use ventilation when dew-point margin allows.Low; 1x; lesson rows 98
Do not carry dry posture into cool/cloudy periodsDo not carry aggressive dry-day mist/fog posture into cool/cloudy periods.Low; 1x; lesson rows 100
Cool cloudy conservative fogOn cool cloudy spring days, conservative fog and long mist gaps can prevent VPD-high breakouts even if solar briefly exceeds forecast, but can still produce 1-2h VPD-low stress.Low; 1x; lesson rows 101

Machine Extraction Audit

The raw planner_lessons stream is preserved here for traceability. It is not the reading order for operations; row-level dumps stay off the public reading path.

Grouped audit trail: 91 raw rows collapsed into 37 signals
RowsStatusSignalAudit note
66-8419 activeCold-night bias and moderate-day fog tuningRepeated confirmations collapse to one signal: cold nights need heat/cool bias coordination, while moderate days need fog_escalation around 0.4 to avoid VPD-low overshoot.
43-49, 51-562 active, 11 retiredMild-day baseline mistingBaseline misting around engage 1.4-1.5 with 30-35s gaps works on mild, moderate-RH days; reserve stronger settings for genuinely dry VPD pressure.
21 activeGas heat economicsGas heater (heat2, 75K BTU, USD 0.623/hr) is 3.9x more cost-effective per BTU than electric (heat1, 5K BTU, USD 0.167/hr).
71 activeCanonical parameter namesALWAYS use canonical DB parameter names: vpd_high (not set_vpd_high_kpa), mister_engage_kpa (not vpd_mister_engage_kpa), mister_all_kpa (not vpd_mister_all_kpa), temp_low (not…
31 activeDLI sensor correctionSensor DLI reads 25-40% of actual plant-available light due to LDR saturation at ~28K lux + morning tree shadow.
81 activeTimer zero safetyNever set timer parameters to 0.
41 activeCooling physics limitPhysics-limited: 55,600 BTU/hr solar gain vs 15,000-22,000 BTU/hr cooling capacity.
911 activeMorning crop-band cold scoringCold stress hours are dominated by crop profile band alignment on spring mornings, not actual plant danger.
991 activeMist suppression plus ventilationMist/fog suppression alone can preserve dew-point safety but leave VPD below band for most of the day.
51 activeDispatcher owns temp_hightemp_high=82F is enforced by the band dispatcher from crop profiles.
891 activeSealed mist thermal riskNever seal the greenhouse for humidity trapping when indoor temp exceeds safety_max - 5°F.
951 activeSealed mist cycles to ventilationSEALED_MIST will cycle to THERMAL_RELIEF within 10 min at these conditions — solar gain outpaces single-zone mister cooling ~7:1.
941 activeUnconfirmed zone VPD targetsZone-specific VPD target setpoints (vpd_target_south, vpd_target_west, vpd_target_center, vpd_target_east, mister_center_penalty) are NOT confirmed by ESP32 readback — they…
27-29, 32-411 active, 12 retired900s closed-vent extreme-dry experimentExtreme-dry evidence supports a longer closed-vent mist window, but superseded duplicates are historical confirmations rather than separate guidance.
11 activeWarm-dry misting postureOn dry days, lower mister_engage_kpa to 1.3 (from 1.6) before the morning VPD ramp (6 AM waypoint).
101 activeCold-dry misting postureCold-dry days (outdoor <55F with <25% RH) produce minimal VPD stress because temperature is the dominant VPD driver, not humidity alone.
881 activeModerate-dry fog overshootfog_escalation 0.3 kPa + aggressive misting (engage 1.3-1.4, gap 15-35s) eliminates VPD_high stress but creates 6-7h VPD_low stress on moderate dry days (70°F peak).
921 activeWarm-side crop-band scoringOn warm days (outdoor >65°F), the narrow crop band upper limit (69.3°F) guarantees low temp compliance regardless of planner actions.
9, 931 active, 1 retiredOvercast cold mistingOn overcast cold days, use conservative misting posture (engage 1.6, gap 45s).
871 activeStructural overnight heat score lossOvernight heat stress (3-4h) when slab retains 62-63F but nighttime temp_high band is 62-65F from crop profiles is structural.
961 activeSlab overnight equilibriumSlab thermal mass delivers 62-65°F overnight equilibrium when outdoor is 48-55°F, not the commonly predicted 65-70°F.
971 activeStale plan regime changesPlans must be replaced when forecast regime changes (e.g., extreme-dry → cool-overcast cold front).
1021 activeCloudy high-humidity dry-ramp avoidanceWhen cloud cover and outdoor humidity are both high, avoid dry-ramp misting posture and raise mist thresholds early enough to prevent VPD-low accumulation.
1031 activeWhen current indoor humidity is already high on a mild day, prioritize avoiding VPD-low…When current indoor humidity is already high on a mild day, prioritize avoiding VPD-low over preempting forecast dry-window VPD-high unless outdoor RH is actually below ~30% and…
57-651 active, 8 retiredTight crop-band misting and heat biasWhen crop bands are unusually tight, misting must engage below the band ceiling and heat periods need cooling bias to avoid oscillation.
901 activeModerate-warm over-mistingOn moderate-warm days where outdoor VPD peaks under 2.0 kPa, aggressive misting presets (engage 1.3, gap 15-20s) cause 1-2h VPD-low stress from over-humidification.
981 activeCool high-RH recovery postureCool, cloudy, high-RH recovery days are VPD-low and condensation problems; suppress mist and use ventilation when dew-point margin allows.
1001 activeDo not carry dry posture into cool/cloudy periodsDo not carry aggressive dry-day mist/fog posture into cool/cloudy periods.
1011 activeCool cloudy conservative fogOn cool cloudy spring days, conservative fog and long mist gaps can prevent VPD-high breakouts even if solar briefly exceeds forecast, but can still produce 1-2h VPD-low stress.
111 retiredMister water budget zero safetymister_water_budget_gal must NEVER be 0 or below 200.
61 retiredDispatcher reboot correctionThe dispatcher auto-corrects ESP32 reboot corruption (zeroed params) and retries failed batch pushes within 5 minutes.
15, 212 retiredForecast deviation replanningTrigger a same-cycle replan to the maximum validated dry-day misting posture immediately.
251 retiredVent/fog defaultsVent coordination and fog graduation parameters are new (April 2026).
421 retiredOvernight bias_cool oscillation guardOvernight heating without bias_cool causes severe vent oscillation and cold stress.
26, 30-313 retiredWeekend dry experiment placeholderMaintain the experiment targeting weekend dry hours.
501 retiredMild-day misting plus reboot/setpoint splitMixed extraction: the mild-day misting result is separate from reboot/setpoint cold-stress evidence. Do not read this as one causal axis.
861 retiredInternal test rowInternal create-path test retained only for DB audit; not operational guidance.

Lesson Lifecycle

  1. Hypothesis — Planner proposes a theory during a planning cycle
  2. Test — Specific setpoint changes are made with measurable expected outcomes
  3. Validate — Next cycle scores the result (1–10) and extracts findings
  4. Graduate — If finding is significant, it’s added to this page at confidence “low”
  5. Confirm — Each re-validation bumps confidence (low → medium at 3×, high at 5×)
  6. Supersede — If a better approach is found, old lesson is marked superseded