SAR Multi-Crop Acreage Estimator
Reproduce
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:
| Metric | Value | Source |
|---|---|---|
| Checks | 12 / 12 PASS | #/passed,total |
| MSE | 15434.42 ha² | #/syntheticBenchmark/mse |
| Naive baseline MSE | 37724.81 ha² | #/syntheticBenchmark/baselineMse |
| Skill vs baseline | 0.5909 (59.1%) | #/syntheticBenchmark/skillVsBaseline |
| Pooled R² | 0.5887 | #/syntheticBenchmark/r2 |
| Total-area corr | 0.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"