Calibrated from GEE execution on 2026-03-29 (actual: 1.462%). Rondonia is one of the most active deforestation fronts in the Brazilian Amazon. Cross-platform variation expected from threshold handling and pixel counting methods. Hansen GFC is a static image product so cross-platform data differences should be minimal.
| Workflow | Model | Backend | Status | Answer | Error | Cost | Latency |
|---|---|---|---|---|---|---|---|
| exec | gold | folia-rust | PASS | 1.8735 | 28.3% | --- | 17ms |
| exec | gold | gee | PASS | 1.4619343475365103 | 0.1% | $0.000025 | 446ms |
| exec | gold | qgis | FAIL | 1.8735 | 28.3% | --- | 200ms |
Known-correct folia spec for this problem. This is the reference implementation used for backend quality testing.
# Platform Comparison: Hansen Forest Loss -- Gold Spec
#
# Compute percentage of originally forested area lost in 2020
# using the Hansen Global Forest Change 2024 dataset.
# Rondonia, Brazil.
# Ground truth: ~1.46% forest loss in 2020.
#
# This spec is designed to run through both the Python backend and
# browser-wasm executor (folia bench exec -b browser-wasm).
name: hansen-forest-loss
version: "1.0"
description: >
Hansen Global Forest Change analysis: percentage of forest (>50%
tree cover in 2000) lost in year 2020. Rondonia, Brazil.
Ground truth: ~1.46% (calibrated from GEE).
settings:
default_bbox: [-63.0, -11.0, -62.0, -10.0]
default_crs: EPSG:4326
layers:
# ============================================================
# SOURCE LAYERS
# ============================================================
source/gfc:
uri: catalog://umd/hansen/gfc-2024-v1-12
type: raster
description: >
Hansen Global Forest Change 2024 v1.12.
Bands: treecover2000, lossyear, gain, datamask.
params:
bbox: [-63.0, -11.0, -62.0, -10.0]
# ============================================================
# COMPUTE: FOREST MASKS
# ============================================================
compute/forest-2000:
type: raster
description: >
Binary mask: tree cover > 50% in year 2000.
compute:
op: raster_threshold_mask
inputs:
data: { layer: source/gfc, band: treecover2000 }
params:
threshold: 50
operator: gt
compute/loss-2020:
type: raster
description: >
Binary mask: pixels with loss year = 20 (year 2020).
compute:
op: raster_calc
inputs:
lossyear: { layer: source/gfc, band: lossyear }
params:
expression: "where(lossyear == 20, 1, 0)"
compute/forest-lost-2020:
type: raster
description: >
Binary mask: originally forested pixels lost in 2020.
compute:
op: raster_calc
inputs:
forest: { layer: compute/forest-2000 }
loss: { layer: compute/loss-2020 }
params:
expression: "forest * loss"
# ============================================================
# RESULT: LOSS PERCENTAGE
# ============================================================
result/forest-total:
type: table
description: >
Total number of forested pixels in 2000.
compute:
op: analysis_zonal_stats
params:
stats: [sum]
inputs:
raster: { layer: compute/forest-2000 }
result/loss-total:
type: table
description: >
Total number of forested pixels lost in 2020.
compute:
op: analysis_zonal_stats
params:
stats: [sum]
inputs:
raster: { layer: compute/forest-lost-2020 }
result/loss-pct:
type: table
description: >
Percentage of originally forested area lost in 2020.
Ground truth: ~1.46%.
compute:
op: raster_calc
inputs:
lost: { layer: result/loss-total }
total: { layer: result/forest-total }
params:
expression: "(lost / total) * 100"
The prompt given to LLMs in single-shot workflow benchmarks.
Problem: Compute the percentage of originally forested area lost
in 2020 using the Hansen Global Forest Change dataset.
Methodology:
- Tree cover > 50% in year 2000 = forested
- Loss year band value 20 = lost in 2020
- Compute: (forested pixels lost in 2020) / (total forested pixels) * 100
- Report as percentage of originally forested area
Study area: -63.0, -11.0, -62.0, -10.0 (Rondonia, Brazil).
Data: Hansen Global Forest Change 2024 v1.12.
Expected answer: approximately 1.46% forest loss in 2020.