crop-phenophase

unverified
v0.1 AOI: San Joaquin Valley cropland block — Fresno County · bbox -120.05, 36.55, -119.85, 36.72

Per-pixel and per-field phenophase transition dates from a Sentinel-2 NDVI season: green-up (spring upward threshold crossing at 50 % of seasonal amplitude), peak greenness (day-of-year of maximum NDVI from the harmonic fit), senescence (autumn downward crossing at 50 % of amplitude), and season length (senescence DOY minus green-up DOY). Crop-calendar detail that raw harmonic phase alone does not give: the phase tells you when the season peaks, but phenophase dates tell you when it starts and ends — the information growers, insurers, and agronomists need for planting-date compliance, growing-degree-day audits, and yield-gap attribution. Builds directly on crop-monitoring (same S2 source + harmonic_fit + zonal_stats graph) by adding the amplitude-threshold extraction layer between the harmonic fit and the field aggregation. Swap the threshold fraction (default 0.50) or the index (NDVI -> EVI/SAVI) without touching the rest.

Primary outputs
compute/field_phenophase
Show your work
compute/ndvi compute/harmonic compute/phenophase_dates
Provenance
source_scene_ids
License
recipe
Apache-2.0
outputs
CC-BY-4.0
Map preview and live runs are available in the workbench.

The contract

legacy dialectcandidate

Read from this recipe's own declarations — parameters:, outputs:, requires:, and the ops its layers name. Not from its style blocks and not from any benchmark: a colour ramp is not a contract, and a measured run is evidence about one AOI rather than a domain.

Parameters

The legacy dialect has no typed parameter schema. Read the folia.yaml for what this recipe takes; nothing here can type-check it.

Outputs

outputkindlayerwhat it is
primary not declared ['compute/field_phenophase']
show_your_work not declared ['compute/ndvi', 'compute/harmonic', 'compute/phenophase_dates']
provenance not declared ['source_scene_ids']

Capabilities it requires

The legacy dialect has no requires: block.

Where it runs

  • Browser preview does not run here compute/field_phenophase: carries an unsubstituted ${...} template; compute/harmonic: carries an unsubstituted ${...} template; compute/ndvi: layer type "raster_timeseries" is not one folia-view parses; and 2 more
  • Local CLI (folia run) runs here runs locally through the legacy (no spec_version) parser
  • Operated fleet (POST /plan, /run) runs here legacy dialect: a lock binds by the cut's layer names, not by digest
open in Workbench from registry/recipes/crop-phenophase/folia.yaml