{
  "dataset": "plant-targets",
  "source": "Open Agriculture Technology plant keystone (oat_plants.plant_requirement) — published snapshot",
  "license": "CC BY 4.0",
  "note": "WHAT the plant wants by stage, all domains (light, chemistry, environment, root_zone, phenology). Only crops complete under the KEEP rule (a stage + light + environment + root-zone rows) are published here; the full catalog incl. incomplete published-source crops is described in plant-targets.quality.json. Each property carries a recommended [low,high] band + four control/alarm bands. Targets are curated CEA reference; verify against your cultivar and your meters.",
  "generated_utc": "2026-09-15T19:24:03Z",
  "count": 6,
  "plants": [
    {
      "slug": "basil",
      "name": "Basil (herbs)",
      "category": "herb",
      "photoperiod_response": "day_neutral",
      "cycle_days": 60,
      "stages": [
        {
          "key": "growth",
          "order": 1,
          "label": "Growth",
          "duration_days": 45,
          "trigger": "calendar",
          "trigger_detail": null,
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 16.0,
                "high": 25.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 28.75,
                "alert_high": 32.5,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 16.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 200.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 230.0,
                "alert_high": 260.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 250.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 287.5,
                "alert_high": 325.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 180.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 207.0,
                "alert_high": 234.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 30.0,
                "high": 50.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 90.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 103.5,
                "alert_high": 117.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 20.0,
                "high": 40.0,
                "alert_low": 14.0,
                "warn_low": 17.0,
                "warn_high": 46.0,
                "alert_high": 52.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 20.0,
                "high": 26.0,
                "alert_low": 14.0,
                "warn_low": 17.0,
                "warn_high": 29.9,
                "alert_high": 33.8,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 17.0,
                "high": 20.0,
                "alert_low": 11.9,
                "warn_low": 14.45,
                "warn_high": 23.0,
                "alert_high": 26.0,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 700.0,
                "high": 1000.0,
                "alert_low": 490.0,
                "warn_low": 595.0,
                "warn_high": 1150.0,
                "alert_high": 1300.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 55.0,
                "high": 65.0,
                "alert_low": 38.5,
                "warn_low": 46.75,
                "warn_high": 74.75,
                "alert_high": 84.5,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.8,
                "high": 1.1,
                "alert_low": 0.56,
                "warn_low": 0.68,
                "warn_high": 1.26,
                "alert_high": 1.43,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 45.0,
                "high": 65.0,
                "alert_low": 31.5,
                "warn_low": 38.25,
                "warn_high": 74.75,
                "alert_high": 84.5,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "phenology": {
              "npn_phenophase_482": {
                "unit": "npn_seq",
                "target": 10.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_488": {
                "unit": "npn_seq",
                "target": 30.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              }
            }
          }
        }
      ],
      "cycle": {
        "light": {
          "dli_canopy": {
            "unit": "mol/m2/d",
            "target": null,
            "low": 12.0,
            "high": 25.0,
            "alert_low": null,
            "warn_low": 12.0,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "chemistry": {
          "n_ppm": {
            "unit": "ppm",
            "target": 175.0,
            "low": 125.0,
            "high": 175.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "phenology": {
          "npn_phenophase_200": {
            "unit": "npn_seq",
            "target": 150.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_201": {
            "unit": "npn_seq",
            "target": 190.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_202": {
            "unit": "npn_seq",
            "target": 300.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_390": {
            "unit": "npn_seq",
            "target": 300.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_500": {
            "unit": "npn_seq",
            "target": 170.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_501": {
            "unit": "npn_seq",
            "target": 190.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_504": {
            "unit": "npn_seq",
            "target": 330.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          },
          "npn_phenophase_516": {
            "unit": "npn_seq",
            "target": 280.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          }
        }
      }
    },
    {
      "slug": "cannabis",
      "name": "Cannabis",
      "category": "cannabis",
      "photoperiod_response": "short_day",
      "cycle_days": 120,
      "stages": [
        {
          "key": "vegetative",
          "order": 1,
          "label": "Vegetative",
          "duration_days": 28,
          "trigger": "photoperiod",
          "trigger_detail": "18/6 light",
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 25.0,
                "high": 40.0,
                "alert_low": 17.5,
                "warn_low": 21.25,
                "warn_high": 46.0,
                "alert_high": 52.0,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 18.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 180.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 207.0,
                "alert_high": 234.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 220.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 253.0,
                "alert_high": 286.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 200.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 230.0,
                "alert_high": 260.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 60.0,
                "high": 90.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 103.5,
                "alert_high": 117.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 30.0,
                "high": 60.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 22.0,
                "high": 28.0,
                "alert_low": 15.4,
                "warn_low": 18.7,
                "warn_high": 32.2,
                "alert_high": 36.4,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 24.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 27.6,
                "alert_high": 31.2,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 800.0,
                "high": 1200.0,
                "alert_low": 560.0,
                "warn_low": 680.0,
                "warn_high": 1380.0,
                "alert_high": 1560.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 55.0,
                "high": 70.0,
                "alert_low": 38.5,
                "warn_low": 46.75,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.8,
                "high": 1.2,
                "alert_low": 0.56,
                "warn_low": 0.68,
                "warn_high": 1.38,
                "alert_high": 1.56,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              }
            }
          }
        },
        {
          "key": "flower",
          "order": 2,
          "label": "Flower",
          "duration_days": 63,
          "trigger": "photoperiod",
          "trigger_detail": "flip to 12/12",
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 35.0,
                "high": 55.0,
                "alert_low": 24.5,
                "warn_low": 29.75,
                "warn_high": 63.25,
                "alert_high": 71.5,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 12.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 180.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 207.0,
                "alert_high": 234.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 200.0,
                "high": 320.0,
                "alert_low": 140.0,
                "warn_low": 170.0,
                "warn_high": 368.0,
                "alert_high": 416.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 50.0,
                "high": 80.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 92.0,
                "alert_high": 104.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 100.0,
                "high": 150.0,
                "alert_low": 70.0,
                "warn_low": 85.0,
                "warn_high": 172.5,
                "alert_high": 195.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 60.0,
                "high": 90.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 103.5,
                "alert_high": 117.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 80.0,
                "high": 120.0,
                "alert_low": 56.0,
                "warn_low": 68.0,
                "warn_high": 138.0,
                "alert_high": 156.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 30.0,
                "high": 60.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 20.0,
                "high": 26.0,
                "alert_low": 14.0,
                "warn_low": 17.0,
                "warn_high": 29.9,
                "alert_high": 33.8,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 16.0,
                "high": 22.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 900.0,
                "high": 1300.0,
                "alert_low": 630.0,
                "warn_low": 765.0,
                "warn_high": 1495.0,
                "alert_high": 1690.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 40.0,
                "high": 55.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 63.25,
                "alert_high": 71.5,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 1.0,
                "high": 1.5,
                "alert_low": 0.7,
                "warn_low": 0.85,
                "warn_high": 1.72,
                "alert_high": 1.95,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 40.0,
                "high": 55.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 63.25,
                "alert_high": 71.5,
                "confidence": "medium",
                "source": "curated"
              }
            }
          }
        }
      ],
      "cycle": {}
    },
    {
      "slug": "lettuce",
      "name": "Lettuce",
      "category": "leafy_green",
      "photoperiod_response": "day_neutral",
      "cycle_days": 45,
      "stages": [
        {
          "key": "growth",
          "order": 1,
          "label": "Growth",
          "duration_days": 35,
          "trigger": "calendar",
          "trigger_detail": null,
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 12.0,
                "high": 17.0,
                "alert_low": 8.4,
                "warn_low": 10.2,
                "warn_high": 19.55,
                "alert_high": 22.1,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 16.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 180.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 207.0,
                "alert_high": 234.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 220.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 253.0,
                "alert_high": 286.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 30.0,
                "high": 50.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 100.0,
                "high": 150.0,
                "alert_low": 70.0,
                "warn_low": 85.0,
                "warn_high": 172.5,
                "alert_high": 195.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 30.0,
                "high": 50.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 80.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 92.0,
                "alert_high": 104.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 15.0,
                "high": 30.0,
                "alert_low": 10.5,
                "warn_low": 12.75,
                "warn_high": 34.5,
                "alert_high": 39.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 24.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 27.6,
                "alert_high": 31.2,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 15.0,
                "high": 18.0,
                "alert_low": 10.5,
                "warn_low": 12.75,
                "warn_high": 20.7,
                "alert_high": 23.4,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 700.0,
                "high": 1000.0,
                "alert_low": 490.0,
                "warn_low": 595.0,
                "warn_high": 1150.0,
                "alert_high": 1300.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.6,
                "high": 1.0,
                "alert_low": 0.42,
                "warn_low": 0.51,
                "warn_high": 1.15,
                "alert_high": 1.3,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              }
            }
          }
        }
      ],
      "cycle": {
        "light": {
          "dli_canopy": {
            "unit": "mol/m2/d",
            "target": 17.0,
            "low": 12.0,
            "high": 17.0,
            "alert_low": null,
            "warn_low": 12.0,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "chemistry": {
          "b_ppm": {
            "unit": "ppm",
            "target": 0.16,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "ca_ppm": {
            "unit": "ppm",
            "target": 84.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "cu_ppm": {
            "unit": "ppm",
            "target": 0.03,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "fe_ppm": {
            "unit": "ppm",
            "target": 0.94,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "k_ppm": {
            "unit": "ppm",
            "target": 215.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mg_ppm": {
            "unit": "ppm",
            "target": 24.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mn_ppm": {
            "unit": "ppm",
            "target": 0.14,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mo_ppm": {
            "unit": "ppm",
            "target": 0.03,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "n_ppm": {
            "unit": "ppm",
            "target": 125.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "p_ppm": {
            "unit": "ppm",
            "target": 31.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "s_ppm": {
            "unit": "ppm",
            "target": 35.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "zn_ppm": {
            "unit": "ppm",
            "target": 0.13,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "environment": {
          "air_temperature_day": {
            "unit": "°C",
            "target": 24.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "air_temperature_night": {
            "unit": "°C",
            "target": 19.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "co2_air": {
            "unit": "ppm",
            "target": 1500.0,
            "low": 390.0,
            "high": 1500.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "relative_humidity": {
            "unit": "%",
            "target": null,
            "low": 50.0,
            "high": 70.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "root_zone": {
          "dissolved_oxygen_root": {
            "unit": "ppm",
            "target": 7.0,
            "low": 4.0,
            "high": 10.0,
            "alert_low": 3.0,
            "warn_low": 4.0,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "ec_root": {
            "unit": "dS/m",
            "target": null,
            "low": null,
            "high": 1.3,
            "alert_low": null,
            "warn_low": null,
            "warn_high": 2.1,
            "alert_high": 3.2,
            "confidence": "high",
            "source": "published"
          },
          "ph_root": {
            "unit": "pH",
            "target": 5.8,
            "low": 5.6,
            "high": 6.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "root_zone_temp": {
            "unit": "°C",
            "target": 24.0,
            "low": null,
            "high": 25.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": 25.0,
            "alert_high": 26.0,
            "confidence": "high",
            "source": "published"
          }
        },
        "phenology": {
          "kc_end": {
            "unit": "ratio",
            "target": 0.95,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_ini": {
            "unit": "ratio",
            "target": 0.7,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_mid": {
            "unit": "ratio",
            "target": 1.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        }
      }
    },
    {
      "slug": "microgreens",
      "name": "Microgreens",
      "category": "microgreen",
      "photoperiod_response": "day_neutral",
      "cycle_days": 14,
      "stages": [
        {
          "key": "growth",
          "order": 1,
          "label": "Growth",
          "duration_days": 12,
          "trigger": "calendar",
          "trigger_detail": null,
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 6.0,
                "high": 12.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 13.8,
                "alert_high": 15.6,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 16.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 15.0,
                "high": 30.0,
                "alert_low": 10.5,
                "warn_low": 12.75,
                "warn_high": 34.5,
                "alert_high": 39.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 24.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 27.6,
                "alert_high": 31.2,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 16.0,
                "high": 20.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 23.0,
                "alert_high": 26.0,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 400.0,
                "high": 800.0,
                "alert_low": 280.0,
                "warn_low": 340.0,
                "warn_high": 920.0,
                "alert_high": 1040.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 65.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 74.75,
                "alert_high": 84.5,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.6,
                "high": 1.0,
                "alert_low": 0.42,
                "warn_low": 0.51,
                "warn_high": 1.15,
                "alert_high": 1.3,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              }
            }
          }
        }
      ],
      "cycle": {
        "light": {
          "dli_canopy": {
            "unit": "mol/m2/d",
            "target": null,
            "low": 9.0,
            "high": 12.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        }
      }
    },
    {
      "slug": "strawberry",
      "name": "Strawberry",
      "category": "berry",
      "photoperiod_response": "facultative",
      "cycle_days": 120,
      "stages": [
        {
          "key": "production",
          "order": 1,
          "label": "Production",
          "duration_days": 90,
          "trigger": "observation",
          "trigger_detail": null,
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 17.0,
                "high": 22.0,
                "alert_low": 11.9,
                "warn_low": 14.45,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 14.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 120.0,
                "high": 180.0,
                "alert_low": 84.0,
                "warn_low": 102.0,
                "warn_high": 207.0,
                "alert_high": 234.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 180.0,
                "high": 260.0,
                "alert_low": 126.0,
                "warn_low": 153.0,
                "warn_high": 299.0,
                "alert_high": 338.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 100.0,
                "high": 150.0,
                "alert_low": 70.0,
                "warn_low": 85.0,
                "warn_high": 172.5,
                "alert_high": 195.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 30.0,
                "high": 50.0,
                "alert_low": 21.0,
                "warn_low": 25.5,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 50.0,
                "high": 90.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 103.5,
                "alert_high": 117.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 20.0,
                "high": 40.0,
                "alert_low": 14.0,
                "warn_low": 17.0,
                "warn_high": 46.0,
                "alert_high": 52.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 24.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 27.6,
                "alert_high": 31.2,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 10.0,
                "high": 13.0,
                "alert_low": 7.0,
                "warn_low": 8.5,
                "warn_high": 14.95,
                "alert_high": 16.9,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 700.0,
                "high": 1000.0,
                "alert_low": 490.0,
                "warn_low": 595.0,
                "warn_high": 1150.0,
                "alert_high": 1300.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 60.0,
                "high": 75.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 86.25,
                "alert_high": 97.5,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.5,
                "high": 0.9,
                "alert_low": 0.35,
                "warn_low": 0.42,
                "warn_high": 1.03,
                "alert_high": 1.17,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 9.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 10.35,
                "alert_high": 11.7,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 16.0,
                "high": 20.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 23.0,
                "alert_high": 26.0,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              }
            }
          }
        }
      ],
      "cycle": {
        "root_zone": {
          "ec_root": {
            "unit": "dS/m",
            "target": null,
            "low": null,
            "high": 1.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": 1.3,
            "alert_high": 1.8,
            "confidence": "high",
            "source": "published"
          }
        },
        "phenology": {
          "kc_end": {
            "unit": "ratio",
            "target": 0.75,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_ini": {
            "unit": "ratio",
            "target": 0.4,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_mid": {
            "unit": "ratio",
            "target": 0.85,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        }
      }
    },
    {
      "slug": "tomato",
      "name": "Tomato",
      "category": "fruiting",
      "photoperiod_response": "day_neutral",
      "cycle_days": 120,
      "stages": [
        {
          "key": "vegetative",
          "order": 1,
          "label": "Vegetative",
          "duration_days": 35,
          "trigger": "calendar",
          "trigger_detail": null,
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 20.0,
                "high": 30.0,
                "alert_low": 14.0,
                "warn_low": 17.0,
                "warn_high": 34.5,
                "alert_high": 39.0,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 16.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 200.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 230.0,
                "alert_high": 260.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 200.0,
                "high": 300.0,
                "alert_low": 140.0,
                "warn_low": 170.0,
                "warn_high": 345.0,
                "alert_high": 390.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 200.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 230.0,
                "alert_high": 260.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 60.0,
                "high": 100.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 115.0,
                "alert_high": 130.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 25.0,
                "high": 50.0,
                "alert_low": 17.5,
                "warn_low": 21.25,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 21.0,
                "high": 26.0,
                "alert_low": 14.7,
                "warn_low": 17.85,
                "warn_high": 29.9,
                "alert_high": 33.8,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 16.0,
                "high": 18.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 20.7,
                "alert_high": 23.4,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 800.0,
                "high": 1000.0,
                "alert_low": 560.0,
                "warn_low": 680.0,
                "warn_high": 1150.0,
                "alert_high": 1300.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 60.0,
                "high": 75.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 86.25,
                "alert_high": 97.5,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.6,
                "high": 1.0,
                "alert_low": 0.42,
                "warn_low": 0.51,
                "warn_high": 1.15,
                "alert_high": 1.3,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "phenology": {
              "npn_phenophase_482": {
                "unit": "npn_seq",
                "target": 10.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_488": {
                "unit": "npn_seq",
                "target": 30.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              }
            }
          }
        },
        {
          "key": "fruiting",
          "order": 2,
          "label": "Fruiting",
          "duration_days": 70,
          "trigger": "observation",
          "trigger_detail": "first flower set",
          "targets": {
            "light": {
              "dli_canopy": {
                "unit": "mol/m2/d",
                "target": null,
                "low": 25.0,
                "high": 35.0,
                "alert_low": 17.5,
                "warn_low": 21.25,
                "warn_high": 40.25,
                "alert_high": 45.5,
                "confidence": "medium",
                "source": "curated"
              },
              "photoperiod_hours": {
                "unit": "h",
                "target": 14.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "chemistry": {
              "ca_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 220.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 253.0,
                "alert_high": 286.0,
                "confidence": "medium",
                "source": "curated"
              },
              "k_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 300.0,
                "high": 400.0,
                "alert_low": 210.0,
                "warn_low": 255.0,
                "warn_high": 460.0,
                "alert_high": 520.0,
                "confidence": "medium",
                "source": "curated"
              },
              "mg_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "n_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 150.0,
                "high": 200.0,
                "alert_low": 105.0,
                "warn_low": 127.5,
                "warn_high": 230.0,
                "alert_high": 260.0,
                "confidence": "medium",
                "source": "curated"
              },
              "p_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 40.0,
                "high": 60.0,
                "alert_low": 28.0,
                "warn_low": 34.0,
                "warn_high": 69.0,
                "alert_high": 78.0,
                "confidence": "medium",
                "source": "curated"
              },
              "s_ppm": {
                "unit": "ppm",
                "target": null,
                "low": 80.0,
                "high": 120.0,
                "alert_low": 56.0,
                "warn_low": 68.0,
                "warn_high": 138.0,
                "alert_high": 156.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "environment": {
              "air_circulation": {
                "unit": "ACH",
                "target": null,
                "low": 25.0,
                "high": 50.0,
                "alert_low": 17.5,
                "warn_low": 21.25,
                "warn_high": 57.5,
                "alert_high": 65.0,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_day": {
                "unit": "°C",
                "target": null,
                "low": 22.0,
                "high": 26.0,
                "alert_low": 15.4,
                "warn_low": 18.7,
                "warn_high": 29.9,
                "alert_high": 33.8,
                "confidence": "medium",
                "source": "curated"
              },
              "air_temperature_night": {
                "unit": "°C",
                "target": null,
                "low": 16.0,
                "high": 18.0,
                "alert_low": 11.2,
                "warn_low": 13.6,
                "warn_high": 20.7,
                "alert_high": 23.4,
                "confidence": "medium",
                "source": "curated"
              },
              "co2_air": {
                "unit": "ppm",
                "target": null,
                "low": 800.0,
                "high": 1000.0,
                "alert_low": 560.0,
                "warn_low": 680.0,
                "warn_high": 1150.0,
                "alert_high": 1300.0,
                "confidence": "medium",
                "source": "curated"
              },
              "relative_humidity": {
                "unit": "%",
                "target": null,
                "low": 60.0,
                "high": 70.0,
                "alert_low": 42.0,
                "warn_low": 51.0,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              },
              "vpd_air": {
                "unit": "kPa",
                "target": null,
                "low": 0.8,
                "high": 1.2,
                "alert_low": 0.56,
                "warn_low": 0.68,
                "warn_high": 1.38,
                "alert_high": 1.56,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "root_zone": {
              "dissolved_oxygen_root": {
                "unit": "mg/L",
                "target": null,
                "low": 6.0,
                "high": 8.0,
                "alert_low": 4.2,
                "warn_low": 5.1,
                "warn_high": 9.2,
                "alert_high": 10.4,
                "confidence": "medium",
                "source": "curated"
              },
              "root_zone_temp": {
                "unit": "°C",
                "target": null,
                "low": 18.0,
                "high": 22.0,
                "alert_low": 12.6,
                "warn_low": 15.3,
                "warn_high": 25.3,
                "alert_high": 28.6,
                "confidence": "medium",
                "source": "curated"
              },
              "substrate_moisture": {
                "unit": "%",
                "target": null,
                "low": 50.0,
                "high": 70.0,
                "alert_low": 35.0,
                "warn_low": 42.5,
                "warn_high": 80.5,
                "alert_high": 91.0,
                "confidence": "medium",
                "source": "curated"
              }
            },
            "phenology": {
              "npn_phenophase_201": {
                "unit": "npn_seq",
                "target": 190.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_202": {
                "unit": "npn_seq",
                "target": 300.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_390": {
                "unit": "npn_seq",
                "target": 300.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_500": {
                "unit": "npn_seq",
                "target": 170.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_501": {
                "unit": "npn_seq",
                "target": 190.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_504": {
                "unit": "npn_seq",
                "target": 330.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              },
              "npn_phenophase_516": {
                "unit": "npn_seq",
                "target": 280.0,
                "low": null,
                "high": null,
                "alert_low": null,
                "warn_low": null,
                "warn_high": null,
                "alert_high": null,
                "confidence": "medium",
                "source": "external_api"
              }
            }
          }
        }
      ],
      "cycle": {
        "light": {
          "dli_canopy": {
            "unit": "mol/m2/d",
            "target": null,
            "low": 14.0,
            "high": 30.0,
            "alert_low": 10.0,
            "warn_low": 14.0,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "chemistry": {
          "b_ppm": {
            "unit": "ppm",
            "target": 0.28,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "ca_ppm": {
            "unit": "ppm",
            "target": 170.0,
            "low": 170.0,
            "high": 212.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "cu_ppm": {
            "unit": "ppm",
            "target": 0.05,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "fe_ppm": {
            "unit": "ppm",
            "target": 2.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "k_ppm": {
            "unit": "ppm",
            "target": 341.0,
            "low": 281.0,
            "high": 351.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mg_ppm": {
            "unit": "ppm",
            "target": 48.0,
            "low": 48.0,
            "high": 65.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mn_ppm": {
            "unit": "ppm",
            "target": 0.55,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "mo_ppm": {
            "unit": "ppm",
            "target": 0.05,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "n_ppm": {
            "unit": "ppm",
            "target": 189.0,
            "low": 125.0,
            "high": 224.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "p_ppm": {
            "unit": "ppm",
            "target": 39.0,
            "low": 39.0,
            "high": 47.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "zn_ppm": {
            "unit": "ppm",
            "target": 0.33,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          }
        },
        "environment": {
          "air_temperature_day": {
            "unit": "°C",
            "target": null,
            "low": 20.0,
            "high": 25.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": 33.0,
            "confidence": "high",
            "source": "published"
          },
          "air_temperature_night": {
            "unit": "°C",
            "target": null,
            "low": 15.0,
            "high": 17.0,
            "alert_low": 10.0,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "co2_air": {
            "unit": "ppm",
            "target": 800.0,
            "low": 400.0,
            "high": 1000.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "relative_humidity": {
            "unit": "%",
            "target": null,
            "low": 55.0,
            "high": 85.0,
            "alert_low": null,
            "warn_low": null,
            "warn_high": 85.0,
            "alert_high": 90.0,
            "confidence": "high",
            "source": "published"
          },
          "vpd_air": {
            "unit": "kPa",
            "target": null,
            "low": 0.35,
            "high": 1.43,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "derived"
          },
          "vpd_air_night": {
            "unit": "kPa",
            "target": null,
            "low": 0.26,
            "high": 0.87,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "derived"
          }
        },
        "root_zone": {
          "ec_root": {
            "unit": "dS/m",
            "target": null,
            "low": null,
            "high": 2.5,
            "alert_low": null,
            "warn_low": null,
            "warn_high": 3.5,
            "alert_high": 5.0,
            "confidence": "high",
            "source": "published"
          }
        },
        "phenology": {
          "kc_end": {
            "unit": "ratio",
            "target": null,
            "low": 0.7,
            "high": 0.9,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_ini": {
            "unit": "ratio",
            "target": 0.6,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "kc_mid": {
            "unit": "ratio",
            "target": 1.15,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "high",
            "source": "published"
          },
          "npn_phenophase_200": {
            "unit": "npn_seq",
            "target": 150.0,
            "low": null,
            "high": null,
            "alert_low": null,
            "warn_low": null,
            "warn_high": null,
            "alert_high": null,
            "confidence": "medium",
            "source": "external_api"
          }
        }
      }
    }
  ]
}