SAR Multi-Crop Acreage Estimator

Verification Report

← Back to outcome

Verification Report — SAR Multi-Crop Acreage Estimator

Strictness: IRS_AUDITOR | Proof status: PROOF_INCOMPLETE (synthetic benchmark only; official dataset is a disclosed seam)

Checks: PASS 12 / 12 (100%) | Evaluated on: synthetic | Generated: 2026-06-25T21:37:36.385Z

Disclosed seams & limitations

  • DISCLOSED_SEAM: Official competition dataset (X-band SAR tiles, village boundaries, labels) is NOT present in this workspace; no official leaderboard MSE was produced.
  • DISCLOSED_SEAM: Raster -> zonal-statistics (Stage A) is documented (run-deploy-instructions.md) but NOT executed here; it requires a geospatial stack (GDAL/rasterio/SNAP/GEE).
  • SIMULATED: All reported metrics use a synthetic, physically-motivated Kharif benchmark (src/synth.mjs), not field observations.
  • Official evaluation path present but inactive (no data/official/ inputs this run).

What is verified

One verification structure runs against two possible benchmarks. The synthetic Kharif benchmark always runs (so the suite passes anywhere). If the official competition data is dropped into data/official/, the identical evaluation checks also run on it via out-of-fold cross-validation (an unbiased leaderboard-aligned MSE estimate, since the test labels are hidden), and a real data/official/submission.csv is produced.

Synthetic benchmark

MetricValue
Train / test villages840 / 360
Acquisitions12
MSE (all crops, all villages)15434.42 ha²
Naive baseline MSE37724.81 ha²
Skill vs baseline59.1%
Pooled R²0.5887
Total-area recovery (r)0.8975
Train time210 ms

Per-crop RMSE (synthetic)

CropRMSE (ha)
Rice115.74
Cotton102.04
Maize95.33
Bajra128.79
Groundnut166.4

Official benchmark

_Not present in this run._ Drop data/official/zonal.csv (long-format zonal statistics) and data/official/train-labels.csv (ID,Rice_ha,…) to evaluate on real data with the identical checks above.

Checks

CheckDetailResult
dB <-> linear power conversion is invertiblemax err < 1e-6 over -25, -18, -12, -6 dBPASS
Temporal Lee filter cuts speckle variance >40% and preserves meanvarRatio=0.09, meanDrift=0.6%PASS
Agricultural-extent score: cropland dynamics > stable coverstable=0.051 < cropland=0.695PASS
[synthetic] Model beats naive baseline by >30% MSE reductionMSE=15434 vs baseline=37725 (skill 59.1%)PASS
[synthetic] Pooled R^2 above 0.45R^2=0.589PASS
[synthetic] All predicted areas are >= 0 and <= village area0 violations / 1800 cellsPASS
[synthetic] Total cultivated-area estimate correlates with truth (r>0.6)r=0.897PASS
[synthetic] Submission CSV matches the required header + row schemaheader:true row:true rows:360=360PASS
Reproducible: same seed -> identical MSE15434.42 == 15434.42PASS
Trains end-to-end in < 8 s (closed-form ridge unmixing)210 ms on 840 villagesPASS
Ingestion seam parses long-format zonal CSV into ordered stacksT=12 co0✓ crossT✓ area✓ = truePASS
Official dataset evaluation (drop data/official/{zonal,train-labels}.csv to enable)official data not present — synthetic benchmark onlyPASS