Skip to content

ADR-0015 — FOREST500 source-instrument clarification and scoring decisions

Status: Accepted (amended 2026-05-22 — D3/cycle-14 scoring revert + label fix, see amendment at end) Date: 2026-05-22
Cycle: C11.5b (FOREST500 seed compilation — both sides)
References: ADR-0013 (seed compilation scope), ADR-0014 (CHRB source-instrument clarification — sibling pattern)


Context

Cycle 11 (2026-05-21) activated FOREST500 as a seed-backed source with an empty scaffold (forest500-entities.json). Cycle 11.5b compiles the full seed — 5 company entries (2025 assessment) and 24 finance entries (2024 assessment) — and migrates to a new file and schema (forest500-companies.json, split company_entries / finance_entries arrays).

This ADR records five decisions required at compile time that were deliberately deferred from the scaffold: dual vintage, scoring thresholds, FI category weighting, methodology drift findings, and LEI provenance.


Decisions

(a) Dual vintage is intentional and per-entry

The company side uses the 2025 assessment (masterfile dated 2026-04-13, 12th annual). The finance side uses the 2024 assessment (republished 2025-08-14), because the finance ranking is published approximately one cycle behind the company ranking. This is a design feature of the Forest 500 programme, not a data gap or compilation error.

Each seed entry carries assessment_year explicitly so the vintage difference is visible at the entry level and never smoothed in aggregation. The next annual refresh opportunity (company 2026, finance 2025) will bring both sides one vintage forward; compile both then.

(b) Scoring thresholds — E7.4 and NF-E6-STAP.2

Context: Forest 500 scores are distributed far lower than CHRB (2025 company side: median ~13.8%, top performer ~84%; 2024 finance side: all in-universe entries score bands 1–2 on F500's own /5 scale, except ING which reaches band 3 at ~47.9%). The CHRB 40/100 poor-performance threshold cannot be transferred.

Decision — finance side (E7.4):
The E7.4 deduction fires simply on presence in the finance_entries list — i.e., being among the top-150 financial institutions by deforestation-risk financing exposure is itself the adverse finding, regardless of F500 score within that cohort. Using the F500 score to further differentiate would imply that high-scoring top-150 financiers are excused of deforestation-risk financing; the programme logic does not support that reading.

The total_score_pct and scoreband_of_5 fields are captured in the seed for transparency and potential future rule refinement, but are not used as binary thresholds in this version. The /5 scoreband (F500's own published classification) is the preferred native scale for any future threshold discussion; do not invent a percentage cut first.

Decision — company side (NF-E6-STAP.2):
NF-E6-STAP.2 is a positive rule: presence in the company_entries list signals that the company is assessed by Forest 500, providing deforestation-exposure data. The rule point is not withheld for low F500 scores at this stage — the coverage fact (the company is in scope and has been assessed) is the signal, not the score magnitude. When the universe grows to include multiple assessed companies and calibration data is available, a score-based differentiation should be considered in a future ADR.

(c) FI category weighting differs from the company side and is not interchangeable

The 2024 FI methodology uses five categories with different maximum-score weightings:

Category FI max Company equivalent
Overall Approach /6 /6
Policy Strength /7.8 "Commitment Strength" /10.4 (different label too)
Human Rights Abuses /19.5 /21
Implementation /52.8 /46.4
Reporting and Verification /14 /16.2

Implementation dominates FI scoring (>56% of max). A company score of 35% and an FI score of 35% are not the same achievement — the distributions are different and the weighting philosophy differs. Do not aggregate or compare scores across the two sides. Seed fields are namespaced accordingly (category_scores_pct on company, category_scores with _of_N suffixes on finance) to make the distinction visible.

(d) Methodology drift since the cycle-11 scaffold (continuity findings)

Four changes were identified between the cycle-11 scaffold description and the compiled seed:

  1. Section count change: The FI methodology moved from 4 sections to 5 sections in 2024 (a new "Overall Approach" section was separated out). The company-side 2025 methodology similarly uses 5 sections aligned to the AFi Common Methodology.

  2. Coverage expansion: The F500 programme expanded from 7 to 9 assessed commodities (rubber and coffee added) and broadened the forest-type scope. The scaffold described "soy, beef, leather, palm, timber, pulp/paper, cocoa" — the current programme adds rubber and coffee.

  3. Split vintage formalised: The company 2025 / finance 2024 vintage split is now explicitly per-entry; the scaffold treated them as a single "annual" cadence.

  4. Adjacent instrument — Floresta 250 (Cattle): Global Canopy launched Floresta 250 as a separate instrument adapted from the F500 FI methodology for Brazilian cattle supply chains. Same organisation, different universe and scope. Not the same as Forest 500. Confirmed: do not conflate. This is the same pattern as CHRB vs WBA Social Benchmark (ADR-0014) — an adjacent instrument from the same publisher that could be mistaken for the primary source.

None of these required a URL-health alarm; the source was continuously accessible and the meaning evolved quietly. This is the second confirmed instance of silent methodology drift (after CHRB/Social Benchmark) that the quarterly source-instrument continuity review (parked backlog item) exists to catch. Log this as evidence that the review is warranted.

(e) LEI provenance — candidate LEIs, name-fallback for nulls

Forest 500 carries no LEI in its published data. FI-side LEIs in the seed are operator-supplied candidates derived from operator knowledge, not from the F500 source. Each must be verified against GLEIF on first ingest before relying on LEI-first matching. Treat as candidate LEIs until verified.

Entries with lei: null (DBS, Invesco, TIAA) rely solely on name-fallback match via forest500_match_name in scraper_config_json. All company-side entries are lei: null (consistent with the CHRB seed and the known Amazon/IKEA LEI absence in scraper_config_json).

The scraper's match logic (updated C11.5b): LEI-first when both sides non-null, but on LEI mismatch fall through to name check rather than short-circuiting to false. This is the lesson from the chrb.js LEI-mismatch incident in C11.5a — candidate LEIs in the seed may differ from the institution's scraper_config_json.lei for legitimate group/subsidiary reasons.


Consequences

  • E7.4 fires for any institution matching a finance_entries entry.
  • NF-E6-STAP.2 fires for any institution matching a company_entries entry.
  • Threshold refinement requires real score-distribution data at expanded universe scale; revisit in a future ADR when cycle 15 expansion is complete.
  • Quarterly source-instrument continuity review should include Forest 500 as a watched source, given the confirmed drift pattern above.
  • The Floresta 250 (Cattle) instrument is explicitly out of scope; if it becomes relevant for a future rule, it requires its own ADR and source registration.
  • Note: E7.4 (FOREST500-finance) and NF-E6-STAP.2 (FOREST500-company) are structurally asymmetric — E7.4 sits inside a multi-source deduction rule alongside BankTrack/NGO/news sub-rules, while NF-E6-STAP.2 is a dedicated single-source rule. The asymmetry is intentional: on the financial side, FOREST500 deforestation financing is one element of E7's broader environmental-controversy deduction, not a standalone criterion.

Amendment — D3 / cycle 14 (2026-05-22)

Chat-session review of the original E7.4 mapping revealed a label/semantic mismatch.

E7 = "Project finance controversies (24m lookback)" — a 24-month event/controversy deduction sourced from BankTrack, NGOs, and news. FOREST500-finance is a standing deforestation policy and exposure assessment published annually; it is not a time-windowed controversy event. The original mapping was mechanically valid (right deduction family) but the rule label misrepresents what feeds it. Rejected: no existing financial-side rule honestly covers financed deforestation (E2 is fossil-specific; E5 is a positive biodiversity/TNFD disclosure rule).

First attempt: E7.4 retired; new dedicated rule E8.1 created (migration 041, b79f6f3).

Creating E8.1 as an independent top-level rule (rule_weight=0.1, base_score=5) introduced an unintended scoring regression: institutions with both E7.3 (NGO-target) and E8.1 (FOREST500) violations rose +4.29 ESG points. The root cause is that splitting E7.4 out of E7 broke the base_score compounding shared across E7's sub-rules — two violations within one rule produce 5−1−1=3 (score_value=60); two violations in two independent rules produce two 5−1=4s (score_value=80 each), which is less penalising in the weighted mean. No weight for E8 achieves net-neutrality (required w_E8=−0.030 for dual-violation, which is impossible in the schema).

Reversal: E8.1 retired; E7.4 restored; label fixed in display layer only (migration 042, this commit).

  • E7.4 restored (source_id='FOREST500' reinstated; description updated to note standing annual assessment, not 24m-windowed).
  • E7 sub_criterion relabelled across all 4 sub-rules: "Environmental controversies (24m lookback)" → "Environmental controversies & deforestation financing". "(24m)" dropped because E7.3 (NGO campaign lists are standing) and E7.4 (annual assessment) are not time-windowed. The 24m window for E7.1/E7.2 is preserved in their per-sub-rule description fields.
  • E8.1 retired (source_id set to NULL). Cannot be deleted — FK constraint from signal rows in runs 30/31/32. Row persists as an inert audit trail.
  • FOREST500 feeds_rules reverted from ["NF-E6-STAP","E8"] to ["NF-E6-STAP","E7"].
  • forest500.js financial-side emit reverted from E8/1 back to E7/4.
  • methodology.js: E8 display entry removed; E7 relabelled "Environmental controversies & deforestation financing"; signals updated to include Forest 500.
  • NF-E6-STAP.2 untouched throughout — confirmed correct; no changes to NF path.
  • Scores: run_id=29 scores unchanged (byte-identical to post-D1 baseline 5d041e6). E7 compounding within E7 is preserved; raw score_value range 0.0–26.7 (fin), 0.0–17.5 (NF).

Verification (run_id=33, FOREST500 dry-run, 2026-05-22): - 14 financial institutions matched on E7.4 ✓ - 3 NF institutions matched on NF-E6-STAP.2 (unchanged) ✓ - 5 correctly-not-found unchanged ✓

Continuity catch: The E7 label-vs-feed drift (standing policy assessment housed in a time-windowed controversy rule) is the 4th source-instrument continuity catch, alongside (1) CHRB/Social Benchmark, (2) FOREST500 vintage/Floresta 250, (3) InfluenceMap/CA100+. The fix is a display-layer relabel; the scoring compounding structure is retained. Note: ADR-0016 described the InfluenceMap Measure A/B finding as "the 4th confirmed continuity finding"; the cycle-14 task instruction treats ADR-0016 as a single #3 catch, making D3 the #4. The numbering ambiguity is recorded here for clarity.