SAR Multi-Crop Acreage Estimator

Reproduce

← Back to outcome

REPRODUCE

Every number is reproducible with the commands below. No network access or external dependencies are required (Node 18+; developed on Node 24).

0. Environment

cd delivery-package/sar-crop-acreage
node --version    # >= 18

1. Reproduce the synthetic benchmark numbers

node verify.mjs

Deterministic (seed=7). Writes verification-report.json / .md and evidence/verification-results.json. Expected headline numbers — authoritative copy in verification-report.json#/syntheticBenchmark:

MetricValueSource
Checks12 / 12 PASS#/passed,total
MSE15434.42 ha²#/syntheticBenchmark/mse
Naive baseline MSE37724.81 ha²#/syntheticBenchmark/baselineMse
Skill vs baseline0.5909 (59.1%)#/syntheticBenchmark/skillVsBaseline
Pooled R²0.5887#/syntheticBenchmark/r2
Total-area corr0.897#/syntheticBenchmark/totalAreaCorr

Calculation: meanSquaredError, r2Score, baselineMSE, totalAreaCorr in src/pipeline.mjs and src/evaluation.mjs. Input: generateDataset({ n: 1200, T: 12, seed: 7 }), 70/30 split.

2. Reproduce the demo submission

node run.mjs    # -> data/submission.csv, data/metrics.json

3. Reproduce the official-PATH self-test (synthetic-derived fixture)

node tools/synth-to-official.mjs data/official --n 1000 --T 12 --test 0.2 --seed 21
node verify.mjs       # report.evaluatedOn == "official + synthetic"; writes data/official/submission.csv
rm -r data/official   # remove fixture; re-run `node verify.mjs` to restore synthetic-only report

DISCLOSED_SEAM: inputs are synthetic-derived, not official data (proof/LIMITATIONS.md).

4. Reproduce on the REAL official dataset (when available)

# Stage A (external; see run-deploy-instructions.md) produces:
#   data/official/zonal.csv         village_id,date,pol,backscatter_db,village_area_ha
#   data/official/train-labels.csv  ID,Rice_ha,Cotton_ha,Maize_ha,Bajra_ha,Groundnut_ha
node verify.mjs       # real out-of-fold CV MSE + data/official/submission.csv
node run.mjs --zonal data/official/zonal.csv --labels data/official/train-labels.csv --cv

5. Regenerate the full proof package

# from the repository root:
node tools/forge-proof.mjs --outcome delivery-package/sar-crop-acreage \
     --verify "node verify.mjs" --report verification-report.json \
     --outcome-seam "official competition leaderboard submission (dataset unavailable)"
# or, including the official-fixture evidence capture:
cd delivery-package/sar-crop-acreage && node tools/proof.mjs

6. Verify integrity of the proof package

# from the repository root:
node tools/forge-proof-verify.mjs --outcome delivery-package/sar-crop-acreage
# -> "all N checksums OK"