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-22

Initial 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.