# EEFA F4.0 filter/map/reduce — Shanghai, Landsat 5 era, per-scene EVI -> mean/median.
# CORRECT-RADIOMETRY arm: the dataset doc owns the SR transform (x2.75e-5 - 0.2),
# applied per band before the expression; fill -> NaN; NaN-aware reducers.
spec_version: folia/0.1
name: eefa-f40-evi
version: "0.1.0"
description: >
  EEFA chapter F4.0 reproduction: filter (bbox, 2000-2010, cloud<50), map
  (per-scene EVI), reduce (mean + median) over Landsat C2 L2 at Shanghai.
layers:
  compute/evi-scenes:
    type: raster
    uri: "@usgs/landsat/c2-l2"
    params:
      scenes: true
      bands: [N, R, B]
      expression: "2.5*(b1-b2)/(b1+6*b2-7.5*b3+1)"
      bbox: [121.39, 31.16, 121.55, 31.30]
      temporal: ["2000-01-01", "2010-01-01"]
      cloud_lt: 50
      limit: 200
  compute/evi-mean:
    type: raster
    compute:
      op: temporal_reduce
      inputs: { data: { layer: compute/evi-scenes } }
      params: { method: mean }
  compute/evi-median:
    type: raster
    compute:
      op: temporal_reduce
      inputs: { data: { layer: compute/evi-scenes } }
      params: { method: median }

outputs:
  evi_mean:
    layer: compute/evi-mean
    value_kind: raster
  evi_median:
    layer: compute/evi-median
    value_kind: raster

# Shelf facets. A governed recipe carries these under `extensions:`, never at the
# top level: AuthorRecipe is deny_unknown_fields, so a top-level `category:` stops
# the recipe binding at all.
extensions:
  folia/category: time-series-trends
  folia/themes: [vegetation, imagery]
  folia/family: spectral-index-map-timeseries
