An open cryptographic evidence ledger that holds environmental claims and carbon market baselines accountable to raw Earth observation. Submitters package reproducible Sentinel-2 satellite telemetry, automated quality gates detect cherry-picked scenes and hidden calibration offsets, and every audit trail, challenge, and supersession is anchored immutably on Ethereum Sepolia — with zero backend trust.
Real Copernicus Sentinel-2 L2A 20 m COGs via AWS Open Data. Drag slider to wipe between 25 June pre-fire baseline and 5 July contained burn scar. Raster dNBR is computed by the open CLI; the browser hashes, gates and anchors. No simulated panels.
Drafts you build in Submit live only here until you anchor them with your wallet.
New submission →Honest boundary: the browser verifies envelopes, method disclosure and anchored evidence. Pixel-level dNBR for a new tile is computed by the open CLI (izmir_dnbr.py pattern) and its outputs are hashed into the package — the UI never invents raster results.
Traditional climate reporting presents a static burn hectare headline. CCEL allows you to independently wipe between satellite acquisitions, inspect the 4-date multi-temporal census, and drag the burn-severity threshold to expose hidden sensitivity and calibration biases.

Intact pine forest and maquis, four days before the 29 June 09:57 UTC ignition.

1,957.5 ha under active smoke / dark char (SCL 2 & 7). Fire B still spreading.

Smoke-free perimeter. +1,917.6 ha (+24.6%) of post–30 June expansion revealed.

1-year anniversary (25 June 2026): Mean NBR over burned scar shifted from −0.6205 to +0.1619 (herbaceous rebound, not replanting).
Drag the threshold slider to see how a single reported hectare number is unscientific without publishing the full curve and calibration offset.
Across dNBR 0.15–0.44 the estimate spans 7,963.1 → 7,227.7 ha (735.4 ha). Omitting ESA Processing Baseline 05.xx additive offset (BOA_ADD_OFFSET = −1000) causes an artificial undercount of −1,703.6 ha (−23.6%). Publishing the curve — not a point — is the reproducibility requirement.
Four deterministic verification guarantees executed directly in your browser and anchored on Ethereum Sepolia — replacing unaudited PDF claims with verifiable satellite telemetry.
Anti-Cherry-PickingMulti-catalog STAC pagination (284 scenes) flags omitted clearer or post-containment overpasses automatically.
Anti-Single-Point BiasMandates 6-tier USGS curves and ESA baseline calibration (BOA = −1000), eliminating hidden offset distortion.
Permanent Audit TrailDisputes and supersessions stay permanently on Sepolia in an acyclic DAG. Retrospective rules are flagged POST_HOC.
Zero-Backend TrustBrowser WebCrypto computes canonical JSON (RFC 8785) and Merkle roots (RFC 6962) with Python byte parity.
Every step of the verification pipeline is deterministic, client-verifiable, and reproducible. Click any architecture node below to inspect its data routing, mathematical formulas, and cryptographic invariants.
Exhaustive STAC pagination across AWS & Planetary Computer (284 scenes). HTTP Range streaming of 20m COGs.
Applies ESA Baseline 05.xx offset (BOA = −1000). Publishes full 6-tier USGS sensitivity curve.
Pure client-side canonicalization (JCS) and RFC 6962 binary Merkle tree with Python byte parity.
Runs 5 automated gates in browser: Merkle integrity, bounding, STAC census timing, sensitivity, recovery scope.
Anchors submission, watchdog disputes, adjudications (NEEDS_EVIDENCE), and immutable supersession DAG.
Queries AWS Earth Search and Microsoft Planetary Computer STAC APIs with paginated exhaustion across the monitoring window. Streams only the required bounding-box pixel blocks of 20m Cloud-Optimized GeoTIFFs (B8A, B12, SCL, TCI) via HTTP Range requests without downloading gigabytes of unneeded spectral bands.
MGRS Tile 35SMC · S2B_35SMC_20250705_0_L2A
Why it matters: Eliminates selective scene omission (cherry-picking dates with heavy smoke or before the full perimeter was contained).
Every anchored package and every local draft in this browser. Anchored verdicts come from Sepolia; drafts are explicitly unanchored until a wallet signs them.
No cases match. Clear the search or submit the first claim for a new tile.
The submitter packages boundary commitments, satellite scene IDs and radiometric metrics into a canonical envelope. Pick a package — the gatekeeper in Step 2 re-evaluates instantly.
0x…
0x…
Honest prototype boundary: this build implements one module — Sentinel-2 L2A Wildfire Disturbance & Recovery on tile 35SMC. Arbitrary documents without spatial / radiometric parameters are rejected by the gatekeeper. No fake generic upload.
Five independent gates run against the public Sentinel-2 archive, reproducible query logs and the submitted method. Hover any card — every verdict traces to a number in Step 3.
Multi-date census, single-tile bounding, calibration offset, and recovery boundaries verified.
Checking observation timing, active smoke coverage and threshold sensitivity disclosure…
How much land appears burned, how sensitive is that estimate to imagery and method, and can another reviewer reproduce it? — NERO Research Brief (Coskuner & Papavasileiou, 1 July 2025) vs. reproducible CCEL dNBR.
BOA_ADD_OFFSET = −1000 underestimates dNBR ≥ 0.44 by 23.6%.Why a single number is not reproducible without its threshold and calibration offset.
| dNBR threshold | 30 June total | 30 June A / B | 5 July total | 5 July A / B | Expansion | 30 June raw DN |
|---|
Across dNBR 0.15–0.44 the 30 June estimate spans 7,963.1 → 7,227.7 ha (735.4 ha). Publishing the curve — not a point — is the reproducibility requirement.
Pre-fire baseline → active-fire smoke → contained perimeter → exact 1-year anniversary. Spectral rebound is shrub resprouting — not proof of replanting or carbon recovery.

Intact pine forest and maquis, four days before the 29 June 09:57 UTC ignition.

1,957.5 ha under active smoke / dark char (SCL 2 & 7). Fire B still spreading.

Smoke-free perimeter. +1,917.6 ha (+24.6%) of post–30 June expansion revealed.

Exact calendar-day match. Persistent scar vs. herbaceous resprouting — not replanting proof.
PDF reports erase failed audits. Here, submission, watchdog challenge, adjudication (NEEDS_EVIDENCE), supersession and approval stay permanently on Ethereum Sepolia — including the honest POST_HOC timing flag.
Demonstration Disclosure: The Submitter, Independent Wildfire Auditor, and Lead Verification Reviewer roles are demonstration wallets controlled by the team for this testnet deployment.
| Event / Transaction | Actor | Status | Cryptographic link |
|---|---|---|---|
| Loading on-chain events from Sepolia… | |||
Single tile 35SMC (EPSG:32635) · rows [3434:4542] × cols [4036:5352] · 1,108 × 1,316 px at 20 m · 16 COGs range-fetched with SHA-256 provenance.
Canonical JSON (JCS) and domain-separated Merkle trees with byte-for-byte Python ↔ TypeScript parity. One flipped byte breaks the Sepolia commitment.
canonicalize → SHA-256 → Merkle root → on-chainESA PB 05.xx calibration applied. Skipping it costs −1,703.6 ha at dNBR ≥ 0.44.
Paginated STAC to exhaustion — AWS Earth Search × Planetary Computer, hash-logged.
PYTHONPATH=packages/cli ./.venv/bin/python \ packages/cli/ccel_cli/izmir_dnbr.py bash scripts/verify_all.sh # 6 stages
A rule committed today cannot prove it predates historical imagery. The chain says so.
Corrupt one byte of the reported hectares and watch RFC 8785 hashing diverge — Check 1 in Step 2 flips to TAMPER DETECTED.
Registries embed <climatechain-badge> to hydrate status live from Sepolia RPC.
Build a real evidence envelope in your browser. CCEL canonicalises it (RFC 8785), hashes it with WebCrypto, previews the five gates, and saves it as a draft you can anchor on Sepolia with your wallet. Raster dNBR for new tiles is computed by the CLI — the generated command is part of your package.
The contract is the system of record — there is no CCEL backend database. Submissions, challenges, adjudications and approvals are wallet-signed transactions; anyone can re-read them.
Tx 0 rule (POST_HOC) · Tx 1 submit · Tx 2 challenge · Tx 3 NEEDS_EVIDENCE · Tx 4 supersede · Tx 5 APPROVED
Full event table in workspace →Connect to anchor drafts, challenge packages or (as reviewer) record decisions.
Timing honesty is enforced in the contract: a selection rule registered after the monitoring window is permanently marked POST_HOC. Full hashes, actors and Etherscan links are in the case workspace (Step 4).
Nothing here is hard-coded theatre: Claim A–C verdicts are recomputed from izmir_orhanli_audit.json at runtime; Claim D runs the production serial-overlap detector (detectSerialOverlaps) — the double-counting guard for carbon retirements. A credible market needs all four behaviours.
Each row executes in your browser against the real fixtures and Sepolia RPC — the same code paths the workspace uses. Server-side suites (Python dNBR, Foundry, on-chain state) run via bash scripts/verify_all.sh.
bash scripts/verify_all.sh # [1] secret guard · [2] pytest (dNBR) · [3] forge test · [4] web tests + build # [5] CLI package + census replay · [6] Sepolia on-chain state