Architecture
Cairn is built like a data pipeline, not a dashboard. Every figure on this site is the output of one fixed chain: an official source, pinned by hash, transformed by reviewed code, into a versioned warehouse the site reads from. This is the structural view — where each stage lives in the repo. For the provenance and limitations of individual figures, see Methodology & sources →.
The pipeline
sha256 in an append-only manifest. A data change without a manifest change is impossible.scripts/materialize_warehouse.py. The single source the exports and the site read from.meta.json audit trail (source pin, methodology commit, warehouse version, SHA256 of the CSV).The CI rail
Running alongside every stage, not as an afterthought:
- A weekly job re-verifies the pinned raw files against their manifest hashes — a mismatch is an integrity alarm, not flakiness.
- A reconciliation test checks the ETS total against the EEA Union Registry aggregate; both derive from the EUTL and match to ~0.02%.
scripts/verify_reproducibility.pyconfirms the warehouse rebuilds identically from the pinned sources.scripts/benchmark_diff.pysurfaces the numeric impact of any mapping change in the pull request that makes it.
The guarantee
Because each stage consumes only a hash-pinned input from the stage before it, no number can drift from its source without a manifest change and a failing CI build. That property — not the benchmark itself — is what separates Cairn from a dashboard.
See Methodology & sources → for per-figure provenance, or the repository for the code behind each stage.
