The risk framework beyond crops — forest & carbon projects
A concept doc: how the ag_risk framework applies to risk on a reforestation / avoided-deforestation project · Environmental Intelligence · 2026-07-16
ag_risk was built for crop risk, but it isn't really "a crop model" — it's a general engine for
risk to a living asset growing in a place over time: get a peril signal → weight it by when
the asset is vulnerable → score how bad the damage is → combine. A reforestation or
avoided-deforestation (carbon) project is just another such asset. You keep the engine and swap
the three inputs — the perils, the timing (WHEN), and the damage curves (HOW BAD) — plus the two
per-asset scaffolds (a lifecycle "calendar" and a project-area "mask"). Nothing about the machinery is
crop-specific. This doc is the concept, not a built product.
1. The reframe — a "risk to a biological asset" engine
Strip out the word "crop" and the framework reads: for each hazard, read a signal on the
grid, phenoweight it by the asset's sensitive window, map the dose to a 0–1 loss on a
shared ruler via a severity function, and combine the hazards into one score — per pixel, forecast and
realised. The asset can be a maize field this season or a 10-year reforestation planting or a
standing forest under a permanence commitment. Same moves; the pieces you plug in change.
The unchanged engine, wired to forest-project inputs: forest perils, a lifecycle WHEN, and carbon-loss severity functions.
2. Translation — crop → forest / carbon project
Framework piece
Crop (v1)
Forest / reforestation project
The asset (crop key)
maize, coffee
the planting / species mix / the project parcel
Dimensions (perils)
drought · heat · cold · water
fire (the big one) · drought / mortality · pest & disease · wind / blowdown · flood · anthropogenic deforestation pressure
WHEN (phenoweight)
growth-stage sensitivity, one season
project lifecycle: seedling establishment is far more vulnerable than a mature stand → a tree-age / stage sensitivity curve
HOW BAD (severity fn)
dose → yield-loss curve
dose → carbon / biomass loss curve (forestry literature); or an exposure measure for observed perils
The ruler (severity = 1)
total attributable yield loss
total attributable carbon / biomass / credit loss
Scaffolds
crop calendar + crop mask
project timeline (planting date / stand age) + project-boundary mask
Output
gridded per-dimension + combined risk
same — gridded risk to the project, per peril + combined, forecast & realised
3. What forests change (and why the framework still fits)
Horizon & permanence, not one season. Crops are annual; a carbon project cares about
multi-decade permanence (will the carbon still be there in 30 years?). The WHEN generalises
from a single growing season to a lifecycle / permanence weighting, and "realised vs forecast"
becomes "monitoring the standing project vs forward reversal risk."
Fire is the dominant reversal risk — and it fits the framework's exposure × conditional-damage
method exactly: burnt fraction (how much of the project burned) × a carbon-loss-given-burn
curve. This is the two-input exposure method already flagged for flood/fire.
Anthropogenic deforestation is an observed, not climatic, peril. Encroachment / illegal
logging isn't a weather dose — it's a detected footprint (satellite change detection). The
framework already handles this: a detection model is a data source whose output enters as a
fraction / exposure measure, with the curve generated upstream — no
engine change. (This is squarely Treefera's core EO strength.)
Same shared ruler, reinterpreted. Severity stays 0–1 = expected fractional loss;
for a project it's fractional carbon / biomass / credit loss instead of yield. The
weight-free combine and banding are unchanged.
4. Who it's for — the use case
Someone assessing risk to a reforestation or avoided-deforestation project — a project
developer, a carbon buyer doing due diligence, an asset manager holding credits, or the insurer of a
permanence buffer — needs a forward-looking, spatial view of what threatens the project and how
badly: will the planting survive establishment, what's the fire / drought / encroachment risk to the
standing carbon, and where within the project is most exposed. That is exactly the shape ag_risk already
produces — a gridded, per-peril + combined 0–1 score, forecast and realised — only pointed at a forest
asset instead of a crop.
Why this is the EI story, not just an ag story. The framework is source-agnostic and
library-backed: the perils, timing and damage curves are swappable data, and the hard,
region-specific science (how bad a fire or a drought is for this species) lives upstream
and feeds the shared severity library — the same separation as the crop case. So one engine + shared
WHEN / HOW-BAD libraries can span crops today and forest / carbon projects next, which is what
makes it an Environmental-Intelligence capability rather than a single-crop tool.
5. What it would take (concept → build)
No engine change — the same modular pattern as adding a crop or a dimension:
Forestry severity functions in the library — fire→carbon-loss, drought→mortality,
pest→loss, keyed by species/system (literature-anchored first, as with crops).
A lifecycle WHEN profile — establishment-weighted for young plantings; near-flat for a
mature stand — in twx-phenoweight.
Feeds — fire (Sentinel-1/MODIS burnt area), EO deforestation detection, climate (the same
weather feeds), wind. Most already exist in the EO / GEE toolkit.
Scaffolds — a project timeline (stand age) and the project-boundary mask.
Status: concept only. v1 is agricultural (maize, weather perils). This doc shows the framework
generalises to forest / carbon projects and what the pieces would be — it is not a claim that
the forestry path is built or validated.
Companion to the modular framework explainer (the engine) and the data-sources / MI-fit doc (how upstream
models feed the libraries). Concept doc — Environmental Intelligence framing.