Methodology changelog
Every change to the KarbonLens integrity-score weights, thresholds, and overrides is recorded here so any historical score can be traced back to the exact methodology version that produced it. Current methodology: v1.
v1
calibrating2026-04-22Initial public release of the integrity-score framework. Composite of four sub-scores: reversal risk (35 %), validation recency (25 %), community flags (20 %), transparency (20 %).
- WEIGHTS established: reversal_risk=0.35, validation_recency=0.25, community_flags=0.2, transparency=0.2
- Reversal-risk sub-score: 0–100 scale derived from GFW Integrated Alerts (RADD + GLAD-S2) intersected with the project polygon over the prior 90 days. Bucket thresholds documented at /methodology.
- Validation-recency sub-score: 0–100 scale derived from the time elapsed since the most recent third-party validation against the project methodology.
- Community-flags sub-score: hardcoded override list maintained in lib/score.ts (`COMMUNITY_OVERRIDES`). Projects publicly disputed by community organisations or covered by negative-precedent press coverage receive an override down to a floor value.
- Transparency sub-score: presence/recency of issuance, retirement, and methodology metadata across cross-referenced registries.
- Composite clamped to [0, 100]. Re-evaluated daily via the score-compute cron.
How we version
The methodology follows a single integer version (v1, v2, …). A new major version is cut when any of the four WEIGHTS values, any sub-score bucket threshold, or the composite formula itself changes. Cosmetic adjustments (renaming a sub-score, refactoring code without changing numbers) do not bump the version.
Daily score recomputation writes the methodology version into project_scores.components.methodology_version, so historical scores remain traceable to the exact framework that produced them even after the live methodology has moved on.
Source of truth for live weights: lib/score.ts · scrapers/scoring/weights.py.