# CARBONBENCH PROTOCOL CHANGE PACKAGE No. 2 — FINAL DECISION TEXT
## Strategy/Risk Maturity Score (SRMS) v1.0 — the risk → metric → target chain and the independent assessment protocol
*English translation of 6-degisiklik-paketi.md; the Turkish text is authoritative.*
*Session: Panel 4 · 2026-10-07 · Rapporteur: Panel 4 rapporteur · Machine-readable counterpart: `config/strateji_v1.json`*

*This package defines the methodology that will replace Strategy Score v0.1 (`pipeline/strateji.py`). Entry into force depends on Founder approval and on passing the §C.4 pilot agreement study. Standard paragraph numbers marked "(to be verified)" were given from the panelists' memory and must be checked against the primary text before publication.*

---

### SECTION 0 — DEFINITION AND SCOPE

**0.1 (What is measured).** SRMS measures, on a 0–100 scale, how completely and verifiably a company's published report builds the **risk → metric → measurement → target → progress** chain for climate-related risks.

**0.2 (What is not measured — mandatory statement).** Fixed text directly beneath the score on the profile: *"This score measures disclosure maturity; it does not measure the size of the risk or whether the company manages the risk well."*

**0.3 (Separation).** SRMS is computed entirely separately from the Transparency Score, the Accuracy Estimate and Target Quality. No existing score field changes; new fields are added.

**0.4 (Scope).** Climate-related risks only (physical: acute/chronic; transition: policy-legal/technology/market/reputation). Opportunities are outside v1. Non-climate sustainability risks (packaging, waste, biodiversity, etc.; channel and subtype cannot be classified) do not enter SRMS; they are shown on the profile in an "other sustainability risks" list.

---

### SECTION A — MATURITY LADDER AND RISK SCORE

**A.1 (Ladder — displayed level).** For each risk, the level is the highest level in the chain below whose prerequisites are all met without interruption:

| Level | Name | Meaning | Chain points (cumulative) |
|---|---|---|---|
| L0 | No disclosure | No climate risk in the report read (company level) | — |
| L1 | Named | Has identified the risk, has not defined a metric | 10 |
| L2 | Metric defined | Has defined a metric, has never measured it | 25 |
| L3 | Measured | Has measured, has not set a target | 45 |
| L4 | Target-linked | Has set a target, has not reported progress | 60 |
| L5 | Progress reported | Progress against target reported or computable | 70 |

Beside the chain, three **side dimensions** are scored and appear in their own columns on the profile: Assessment (15), Series (10), Governance (5). Chain 70 + side dimensions 30 = 100.

**A.2 (Scoring items — 100 per risk; dependency-gated sum).** An item's points are awarded only if its prerequisite is met. Items are binary (awarded/not awarded); partial points arise only from the A.4 uniformity test.

| Code | Item | Points | Prerequisite | Evidence criterion (quote + page mandatory) |
|---|---|---|---|---|
| `A` | Naming | 10 | — | Risk name and channel (physical/transition) in the report; presented as a climate risk. |
| `D_ufuk` | Time horizon | 5 | A | Short/medium/long term or a year range for this risk (table row or the risk's paragraph). A general company-level horizon definition alone is not sufficient. |
| `D_olasilik` | Likelihood | 5 | A | Likelihood statement for this risk: qualitative wording, matrix value, percentage or return period. |
| `D_etki` | Impact | 5 | A | Impact/magnitude statement for this risk: qualitative class or financial amount. |
| `M` | Metric definition | 15 | A | Name of a measurable quantity + unit; link to the risk (A.5 compatibility matrix ✓, or a risk–metric linking quote in the report). "We track/monitor" is not sufficient. |
| `O` | Measurement | 20 | M | ≥1 numeric value with `tur = olcum`, `yil ≤ raporlama_yili` and `yil ≥ raporlama_yili − 2`, single unit; or a relative change (`deger + baz_yil + yil`); or an explicitly written zero-baseline statement in the report. The A.6 target-leak rule applies. |
| `S` | Series | 10 | O | (a) ≥2 `olcum` values in different years with the same unit, or (b) absolute base-year value + current-year value. A relative change alone does not build a series. |
| `H` | Target | 15 | O | Numeric target value + target year + (base year or base value), same metric and compatible unit (relative target ↔ relative/absolute measurement compatible). "Net zero 2050" alone or a number-less statement of intent is not sufficient. |
| `I` | Progress | 10 | H | Progress reported or computable: base, current and target values in the same unit (progress = (base − current)/(base − target)), or relative current change / relative target. |
| `Y` | Governance | 5 | H | The body/role overseeing the target or progress is named (board committee, sustainability committee, link to remuneration). A company-level statement of climate-target oversight is applied to all risks with targets. |

**A.3 (Rationale — votes).** Assessment is a side dimension, not a gate (A1, 5-2). Weights (A2, 6-1). The "assessed-as-low" exception was rejected (A3, 3-4). The first-TSRS-year series exemption was rejected; the series is satisfied via route (a) or (b) (A4, 3-4). The target depends on measurement; a zero baseline written in the report counts as a measurement (A5, 6-1).

**A.4 (Uniform assessment test).** If the likelihood statement is identical and the impact statement is identical (normalized text) across **all** of a company's ≥5 climate risks, `D_olasilik` and `D_etki` drop to 2.5 for each risk. `D_ufuk` is unaffected. Flag: "uniform assessment".

**A.5 (Compatibility matrix — risk subtype × metric family).** The metric family is assigned in code from the metric name + unit using a published dictionary (the model does not classify). ✓ = compatible; ● = only if the report contains a risk–metric linking quote; ✗ = strictly prohibited (a linking statement does not pass it either).

| Subtype ↓ / Family → | ghg | enerji | yenilenebilir | karbon_maliyet | su | fiziksel_maruziyet | kesinti_kayip | urun_portfoy | capex_iklim | tedarik | itibar | diger |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| fiziksel_akut | ✗ | ● | ✗ | ✗ | ● | ✓ | ✓ | ● | ✓ | ✓ | ● | ● |
| fiziksel_kronik | ✗ | ✓ | ● | ✗ | ✓ | ✓ | ✓ | ● | ✓ | ✓ | ● | ● |
| politika_hukuk | ✓ | ✓ | ✓ | ✓ | ● | ● | ● | ● | ● | ● | ● | ● |
| teknoloji | ✓ | ✓ | ✓ | ● | ● | ● | ● | ✓ | ✓ | ● | ● | ● |
| pazar | ✓ | ✓ | ✓ | ✓ | ● | ● | ● | ✓ | ● | ✓ | ● | ● |
| itibar | ✓ | ● | ● | ● | ● | ● | ● | ✓ | ● | ● | ✓ | ● |

(Family keys: ghg = GHG emissions; enerji = energy; yenilenebilir = renewables; karbon_maliyet = carbon cost; su = water; fiziksel_maruziyet = physical exposure; kesinti_kayip = disruption/loss; urun_portfoy = product portfolio; capex_iklim = climate capex; tedarik = supply; itibar = reputation; diger = other. Subtypes: fiziksel_akut = physical acute; fiziksel_kronik = physical chronic; politika_hukuk = policy/legal; teknoloji = technology; pazar = market; itibar = reputation.)

If the subtype is null, the channel-level row applies: physical = the ✓s of the acute ∪ chronic rows, ✗s retained; transition = the ✓s of the four transition rows. Rationale: S2 §29(c) defines the metric for physical risk as assets/activities vulnerable to the risk; emissions are the company's impact on the climate, not the climate's impact on the company (Echeverría Lund; unanimous).

**A.6 (Target leak).** A value does not count toward item `O` when: (i) `yil > raporlama_yili`; (ii) `tur = hedef`; (iii) the value's quote is the same sentence as the same metric's target quote and that sentence contains no past/achievement wording. Flag: "target leak". The value is not deleted; if the `hedef` field is empty it is proposed there as a candidate (second-read queue).

**A.7 (Deduplication — B5, unanimous).**
(i) If the same risk (normalized name + subtype) appears in several rows, they are merged; evidence is merged.
(ii) If a risk has several metrics, the risk score is taken from **the metric with the highest chain score**; metrics are not summed. Other metrics are listed on the profile.
(iii) If the same metric (normalized name + unit) is linked to several risks, item `M` is awarded for each risk; items `O`, `S`, `H`, `I`, `Y` count only for the **single** risk that reaches the highest chain with that metric (ties: the first risk in the report). Flag: "shared metric".

**A.8 (Risk score).** sᵢ = Σ points of awarded items (0–100). Level Lᵢ from the A.1 chain.

---

### SECTION B — COMPANY-LEVEL AGGREGATION

**B.1 (Formula).**

  **SRMS = C × (0.85 · D + 0.15 · Sen)**

  **D = Z · mean(s) + (1 − Z) · min(mean(s), p),  Z = min(1, n / n_F),  n_F = 4,  p = 20**

- n: number of climate risks remaining after A.7 deduplication and the 0.4 non-climate exclusion (after the §C.3 reconciliation).
- mean(s): equally weighted mean of the risk scores (B3, 5-2: no materiality weighting in v1).
- The result is rounded to one decimal; intermediate values are not rounded.

**B.2 (Credibility — limited fluctuation, asymmetric; B1, 5-2).** If a company discloses fewer than n_F = 4 risks, its mean is not fully credible. n_F is derived from the four main risk channels (physical acute, physical chronic, transition policy/legal, transition market/technology). The prior anchor p = 20: named (10) + two assessment sub-items (10) — a typical TSRS heat-map row. The prior **only pulls downward** (`min(mean, p)`): a score cannot rise through absence of data (Panel 2, Clause D.6).

**B.3 (Channel coverage C; B4, 6-1).** For each of the physical and transition channels: the channel is covered ⇔ ≥1 climate risk (L1+) in that channel OR a **reasoned exclusion** meeting the structural definition. If both channels are covered, C = 1.00; if one is silent, C = 0.85.
Structural definition of a reasoned exclusion: the exclusion quote must contain at least one of — (i) a scenario name (NGFS/IEA/SSP/RCP dictionary), (ii) a location/site coverage expression ("all sites", "X locations", a site name), (iii) hazard type + result ("flooding … no significant impact was identified"). "An assessment was performed and found not material" alone is not sufficient.

**B.4 (Evidence-base discount — breakdown wording; Arıkan-Moreau's condition).** If n < 4, a separate line in the breakdown: *"Evidence base: n climate risks; full credibility requires 4. Narrow-evidence-base discount: −X points."* (X = 0.85 · C · (mean − D)). The wording "virtual risk" or "assumed risk" is not used.

**B.5 (Scenario component Sen; B7, 5-2).** Cumulative; if a test is failed, higher levels are not awarded.

| Level | Points | Test (quote mandatory) |
|---|---|---|
| S0 | 0 | No scenario disclosure, or a single scenario |
| S1 | 25 | **Divergence:** ≥1 low-warming scenario (≤2°C: IEA NZE, NGFS Net Zero 2050 / Below 2°C, SSP1-1.9/1-2.6, RCP2.6) AND ≥1 high-warming scenario (current-policies family: NGFS Current Policies / Hot House, IEA STEPS, SSP3-7.0, SSP5-8.5, RCP8.5) |
| S2 | 50 | **Parameter:** horizon year (four-digit year) AND ≥1 numeric parameter value (carbon price, °C, hazard indicator, percentage). A number-less source attribution ("NGFS prices were used") does not pass. |
| S3 | 75 | **Linkage:** a scenario result in ≥1 risk row, with quote (`senaryo_bagi`) |
| S4 | 100 | **Quantification:** financial effect or resilience result under the scenario, with number + unit/currency |

> **Founder amendment 2026-10-08 (scenario dictionary 1.0 → 1.1).** Spelling variants added to the low-warming family: "2°C altı" (Below 2°C), "Net Zero by 2050" (IEA NZE), "SSP1-RCP1.9" (SSP1-1.9). The family is assigned from the scenario name + dictionary only; the temperature text written by the model does not determine the family (RCP4.5 ≈ 2.5–3°C is in neither family).

> **Founder amendment 2026-10-08 (scenario dictionary 1.1 → 1.2 — temperature in the name).** A numeric °C value written in the scenario **name** determines the family (not the model's `sicaklik` field): ≤ 2.0°C → low-warming, ≥ 2.5°C → high-warming; where a range is written ("3.5–4 °C", "1.5-2 °C") the lower bound is used; between 2.0 and 2.5°C no family. Combined (union) with dictionary matches. Effect (pilot, Opus primary): 4 scenarios / 4 reports gained a family; scenario level changed for 1 record (Afyon Çimento S0 → S4, SRMS 15.0 → 30.0).

**B.6 (Special cases).**
- Text read, no climate risk disclosure (n = 0) → SRMS = 0, level L0. The scenario score alone does not produce a score.
- Text not read or reading coverage insufficient → no score is produced: "could not be computed".
- An item that fails the §C.4 agreement threshold is not published; its weight drops out of the risk score denominator and the risk score is rescaled to 100 over the measured weight. If the measured item weight is < 50, no score is produced (`config/scoring.json` → `olcum_kapsami.min_olculen_agirlik` principle).

**B.7 (Breakdown — lines shown on the profile).** SRMS · level distribution (how many risks at L1…L5) · D and mean(s) · evidence-base discount (if n < 4) · channel coverage (C and the name of the silent channel) · scenario level and the first failed test · **lowest-maturity risk** (information only; does not enter the score — B2, 6-1) · flags (target leak, shared metric, uniform assessment, truncated, unverified) · the 0.2 statement.

> **Founder amendment 2026-10-09 (separate indicator — Panel 4 v2 candidate; NOT part of SRMS).** At the top of the Strategy & Risk section the profile shows three separate notes: **Scenario analysis** (B.5 Sen level, `strateji_v1.senaryo`), **Risk identification** (per risk, items A + D over the weight measured under the κ publication gate, /100, averaged over climate risks; `strateji_v1.risk_belirleme`) and **Opportunity identification** (IFRS S2 §10/§13 "risks and opportunities"; `strateji_v1.firsat`). Opportunity ladder (cumulative): F0 no opportunity · F1 named (quote verified, 25) · F2 TCFD class (resource efficiency / energy source / products and services / markets / resilience) + time horizon (50) · F3 metric defined (name + unit, 75) · F4 quantified financial effect (number + currency, 100). The company score is the mean of opportunity scores with the same credibility as risk D: Z = min(1, n/3), D_F = Z·mean + (1 − Z)·min(mean, 25). Reading: Opus, opportunity prompt f1.0, at most 15 opportunities, verbatim quotes. Constants in `config/strateji_v1.json → firsat`. Opportunities do not enter the SRMS formula (0.4 unchanged); v2 candidate as a weighted component.

> **Founder amendment 2026-10-09 (opportunity class dictionary — D.1 principle: classification in code).** If the report/model gives an opportunity class it is kept; otherwise the opportunity name, then its quote, is scanned with `config/strateji_v1.json → firsat.sinif_sozlugu` (TR+EN patterns; order: energy source → products/services → resilience → markets → resource efficiency) and the first matching class is assigned with the label `sinif_cikarim: true`; it satisfies the class requirement of F2. The time-horizon requirement is unchanged (no horizon in the report → no F2); levels remain cumulative. Effect (pilot): class inferred for 98 opportunities, 43 remain unclassified; opportunity levels F1 155 → 106 · F2 8 → 49 · F3 2 → 7 · F4 0 → 3; company F1 43 → 39 · F2 0 → 4; median company score 25.0 → 31.3.

**B.8 (Constants commitment).** n_F, p, C, 0.85/0.15, item weights and the S-scale are version-locked in `config/strateji_v1.json`. After the pilot a **sensitivity table** is published: n_F ∈ {3, 4, 5}; p ∈ {10, 20, 25}; C_silent ∈ {0.70; 0.85; 0.90}; w_Sen ∈ {0.10; 0.15; 0.20}. If any constant changes, the version increments and past scores are recomputed (Panel 2, Clause C).

---

### SECTION C — INDEPENDENT ASSESSMENT PROTOCOL

**C.1 (Flow — the order is binding).**
1. **Reading** (§D schema, single Haiku pass; prompt version recorded).
2. **Quote verification** (C.2) — zero tokens.
3. **Risk count reconciliation** (C.3).
4. **Normalization and classification** (code): channel/subtype dictionary, including all spelling variants `geçiş/geçis/gecis` → `gecis`; metric family; likelihood/impact scale translation (published dictionary; does not affect points, display only).
5. **Rules:** A.4 uniformity, A.5 compatibility, A.6 target leak, A.7 deduplication.
6. **Scoring** (A.2, B.1–B.6).
7. **Second-read sample** (C.5) and agreement monitoring.
8. **Publication** — only with items that passed the §C.4 thresholds.

**C.2 (Quote verification; C4, unanimous).** The quote for every point-earning item must be found in the report text as an **exact substring** after whitespace/line-break/hyphen/quotation-mark normalization. If not found: item 0, flag "unverified", second-read queue. The page number is verified if it can be verified from the text layer; if not, the page field stays null (the item is not dropped).

> **Founder amendment 2026-10-08 (C.2 additional paragraph).** Verification is against the text, not the reader: if the quote of **either** of the two readers is found as an exact substring in the report text (same normalization), the item counts as verified. Value fields (statement, number, year, unit) come from the primary reader and remain subject to inter-reader agreement. Readers: primary Opus 5.5 (prompt v2.0), second Haiku (prompt v2.1: "copy the quote from the report LETTER BY LETTER; do not change a single character; show any addition/shortening with '…'"). Implementation: `pipeline/strateji_v1.py` `capraz_dogrula`; config `uyum_protokolu.alinti_dogrulama.capraz`.

**C.3 (Risk count reconciliation).** The main read's risk list (`payload.climate_risks`) is compared with the risk read (normalized name matching). If |n_main − n_risk| / max(n_main, n_risk) > 0.30, the risk section is re-read with a targeted second pass. Main-read risks still unmatched are added to the risk list with item `A` (L1) if their quote verifies; if it does not verify they are not added and a flag is raised. Row limit 25; a read reaching the limit returns `kesildi: true` (truncated) and triggers a second pass.

**C.4 (Attribute agreement study — publication precondition; C1, C3 unanimous).**
- Pilot: 50 reports, **100% double reading**, second reader is **a different model** (a second run of the same model measures repeatability, not reproducibility).
- For each binary item, Cohen's κ ≥ **0.75**; for the risk level (L0–L5), weighted (quadratic) κ ≥ **0.80**; for risk count, median absolute inter-reader difference ≤ 1.
- Diverging items are resolved by a third reader (human); the decision and rationale are written to the append-only log.
- An item that fails the threshold is not published (B.6). When the model version or prompt version changes, the study is repeated (Panel 1 §8.5 principle).

> **Founder amendment 2026-10-08 (C.4 threshold).** Binary item pass rule: **Cohen κ ≥ 0.75 OR PABAK (2·agreement − 1) ≥ 0.75** (prevalence paradox: for items concentrated in one class, κ collapses despite high raw agreement). Both measures are published in the report. Quadratic κ ≥ 0.80 for the level and median risk-count difference ≤ 1 unchanged.

> **Founder amendment 2026-10-08 (publication with a pilot label).** SRMS is published **with a "pilot" label** using the items that pass the item threshold; until the overall measures (quadratic level κ ≥ 0.80, median risk-count difference ≤ 1) are met, the record output carries an `uyum` field: `{"durum": "pilot", "basamak_kappa", "basamak_hedef", "risk_sayisi_medyan_fark", "risk_sayisi_hedef", "kalem_gecen", "kalem_toplam", "okuyucular", "rapor"}` — values come from the latest agreement measurement (`pipeline/metrik_uyum.py`), never hard-coded. Once all thresholds pass, `durum: "tam"`. Pilot measurement: level κ 0.63 · median risk-count difference 2 · 8/10 items (D_ufuk, D_etki not published) · Opus 5.5 primary, Haiku v2.1 second (`docs/panel4/9-pilot-uyum-raporu.md`).

**C.5 (Production monitoring; C2, 5-2).** 10% random second reading + 100% of edge cases: SRMS ≥ 80; year-on-year change ≥ 20 points; C.3 difference > 30%; `kesildi`; appeal. κ is recomputed and published quarterly; if an item falls below threshold for two consecutive quarters, it is withdrawn from publication.

**C.6 (IFRS S1/S2 elements → protocol mapping; C7, unanimous).**

| Element | Paragraph | Place in the protocol |
|---|---|---|
| Governance: oversight of target setting and progress | S2 §6 (sub-paragraph to be verified) | item `Y` |
| Identification of climate risks; physical/transition distinction | S2 §10(a)–(b) | item `A`; channel; C.3 |
| Time horizon per risk; definition of horizons | S2 §10(c)–(d) | `D_ufuk` |
| Business model and value chain effects | S2 §13 | not scored in v1 (initiatives table read in the same pass) |
| Strategy, decision-making, transition plan | S2 §14 | not scored separately in v1; partly via target items |
| Current and anticipated financial effects | S2 §15–21 | `D_etki` (financial amount field is read; v2 weighting candidate) |
| Climate resilience, scenario analysis | S2 §22; application guidance Appendix B (around §B1–B18, to be verified) | `Sen` component |
| Process for assessing likelihood and magnitude | S2 §25 (sub-paragraph to be verified) | `D_olasilik`, `D_etki` |
| Cross-industry metric categories | S2 §29(a)–(g) | metric families; physical risk → §29(c) exposure |
| Industry-based metrics | S2 §32 | metric families |
| Targets and approach to target setting | S2 §33–34 | item `H` |
| Performance against targets | S2 §35 | item `I` |
| GHG target details (scope, gross/net) | S2 §36 | Section E (Target Quality) |
| Material information | S1 around §17–19 (to be verified) | reasoned exclusion (B.3); non-climate row exclusion (0.4) |
| First-year comparative information relief | S1 Appendix E, around §E3 (to be verified) | A4 rejected; Arıkan-Moreau reservation |
| TSRS 1/2 (KGK) | Content largely identical to S1/S2; application scope thresholds set by KGK board decisions (to be verified) | does not enter scoring; profile context |

**C.7 (Taken from / rejected from CDP and ratings).**
- **Taken:** tiered scoring logic (Disclosure → Awareness → Management → Leadership ≈ L1 → L5); risk row fields (driver, horizon, likelihood, magnitude, financial impact — former C2 module; 2024 integrated questionnaire module numbers to be verified); the idea of the company writing its own quantitative definition of "substantive financial impact" (`D_etki` financial amount field for v2); the concept of the exposure/management distinction (MSCI) — in the profile explanation of why SRMS is not an exposure measure.
- **Rejected:** questionnaire-based self-reporting (we read the report); points for process descriptions ("risks are assessed annually"); points for memberships/initiative statements; closed sector weights; treating the existence of a policy as evidence of management (common flaw of MSCI/Sustainalytics "management" scores); embedding sector-relative normalization inside the risk score (sector comparison is shown as a separate percentile).

**C.8 (Appeal route; C6, unanimous).** The company submits only **evidence**: page number + quote. Carbonbench re-reads that page with the same prompt version and applies C.2 verification; if it passes, the item is updated. Thresholds, weights, dictionaries and the matrix are not negotiable. Every appeal, its outcome and the score difference are written to the append-only log; the quarterly number of appeals and acceptance rate are published.

**C.9 (Three-state distinction; C5, unanimous).**
| State | Field | Item | Score |
|---|---|---|---|
| Not in the report | null | 0 points | computed |
| Text not read / coverage insufficient | — | — | "could not be computed" |
| Quote could not be verified | value kept, flagged | 0 points | computed + second read |

The model never estimates a value in any state; the code never converts null into a number in any state.

---

### SECTION D — READING SCHEMA (single Haiku pass, `metrik_v2`)

**D.1 (Principle; D1, unanimous).** The model extracts only what is written in the report, in raw wording, with quote and page. Classification (channel spelling variants, metric family, scale translation), derivation (annual value dictionary, last measurement year, progress ratio) and scoring are done in code. The legacy `risk_metrikleri` fields are flattened by code and written to **the same file** (backward compatibility).

**D.2 (Model output — JSON schema).**

```json
{
  "sema_surumu": "metrik_v2",
  "raporlama_yili": 2024,
  "riskler": [
    {
      "risk_id": "R1",
      "risk": "name of the risk in the report (short, faithful to the report's wording)",
      "kanal": "fiziksel | gecis | null",
      "alt_tip": "akut | kronik | politika_hukuk | teknoloji | pazar | itibar | null (null if not written in the report)",
      "zaman_ufku": {"beyan": "e.g. 'medium term (3-10 years)' | null", "alinti": "... | null", "sayfa": 41},
      "olasilik": {"beyan": "e.g. 'high', '4/5', '30%', '1-in-100-year' | null",
                   "olcek_turu": "nitel | matris | yuzde | getiri_donemi | null",
                   "alinti": "... | null", "sayfa": null},
      "etki": {"beyan": "e.g. 'medium', '3/5' | null",
               "olcek_turu": "nitel | matris | finansal | null",
               "finansal_tutar": null, "para_birimi": null,
               "alinti": "... | null", "sayfa": null},
      "senaryo_bagi": {"senaryo": "e.g. 'SSP5-8.5' | null", "sonuc": "... | null",
                       "alinti": "... | null", "sayfa": null},
      "metrikler": [
        {
          "metrik_id": "R1-M1",
          "ad": "name of the metric in the report",
          "birim": "e.g. tCO2e/t product, %, m³, TL | null",
          "risk_baglanti_alintisi": "sentence linking the risk and the metric in the same place | null",
          "degerler": [
            {"yil": 2024, "deger": 0.612, "tur": "olcum | baz", "alinti": "...", "sayfa": 88}
          ],
          "goreli_degisim": {"deger": -11.0, "baz_yil": 2021, "yil": 2024, "alinti": "...", "sayfa": 88},
          "sifir_baslangic": {"alinti": "if the report explicitly says 'none yet/0' | null", "sayfa": null},
          "hedef": {"deger": -42.1, "birim": "%", "tip": "mutlak | yogunluk | oran | null",
                    "yil": 2033, "baz_yil": 2021, "baz_deger": null,
                    "ara_hedefler": [{"yil": 2030, "deger": null}],
                    "alinti": "...", "sayfa": 88},
          "ilerleme": {"beyan": "progress sentence | null", "deger": null, "yil": null,
                       "alinti": "... | null", "sayfa": null},
          "yonetisim": {"organ": "e.g. 'Sustainability Committee' | null", "alinti": "... | null", "sayfa": null}
        }
      ],
      "kanit": {"alinti": "direct quote in which the risk is named", "sayfa": 40}
    }
  ],
  "kanal_dislama": [
    {"kanal": "fiziksel | gecis", "alinti": "exclusion/immateriality rationale", "sayfa": null}
  ],
  "senaryolar": [
    {"ad": "e.g. 'NGFS Net Zero 2050'", "sicaklik": "e.g. '1.5°C' | null", "ufuk_yili": 2050,
     "parametreler": [{"ad": "carbon price", "deger": 140, "birim": "USD/tCO2e", "yil": 2030}],
     "alinti": "...", "sayfa": null}
  ],
  "kesildi": false,
  "genel_not": "1 sentence | null"
}
```

**D.3 (Prompt rules — to be given to the model).**
1. Any field not explicitly written in the report is null; no estimation, rounding or unit conversion.
2. Every filled field's quote must be **word for word** from the report (at most ~300 characters).
3. A target figure is never written into `degerler`; a future year's figure is a `hedef`.
4. Wording like "decreased/increased by X% compared to" goes into `goreli_degisim`, not `degerler`.
5. Also write risks without a metric (`metrikler: []`) — the finding "named the risk, set no metric" is valuable.
6. Do not write non-climate risks (packaging, waste, biodiversity, etc.).
7. At most 25 risks; if there are more, `kesildi: true`.
8. Return JSON only.

**D.4 (Fields derived by code).** `kanal_norm` (including spelling variants), `alt_tip_cikarim` (from the dictionary if absent in the report, labelled "inferred", used only for the compatibility matrix), `metrik_ailesi`, `yillik_degerler {year: value}` (only `tur = olcum|baz`), `son_olcum_yili`, `ilerleme_orani`, `olasilik_5li`/`etki_5li` (published dictionary; display only), item points, flags, `alinti_dogrulandi` (for each quote).

**D.5 (Backward compatibility — legacy `risk_metrikleri`).** One row per risk × metric pair; a single row with `metrik_adi: null` for a risk without a metric:
`risk` ← `risk` · `risk_tipi` ← `kanal_norm` · `metrik_adi` ← `ad` · `deger` ← value at `son_olcum_yili` (null if none) · `birim` ← `birim` · `hedef` ← `hedef.alinti` · `hedef_yili` ← `hedef.yil` · `kanit` ← metric value quote, otherwise `kanit.alinti`. `genel_not` unchanged. v0.1 code continues to work with these fields.

**D.6 (Other fields extracted in the same pass — not Panel 4's subject, note only).** In the same reading pass, under separate top-level keys: `girisimler` [name; S1/S2/S3 effect yes/no/null; affected S3 category numbers; quote, page] · `hedefler_scope` [target text; scopes covered; absolute/intensity; value, year, base year; base-year emissions by scope; LB/MB method for S2; SBTi statement; S3 categories covered; quote, page] · `s3_kategori_degerleri` [category 1–15; tCO₂e; year; quote, page]. These fields feed Section E and the profile's initiatives/S3 tables.

---

### SECTION E — TARGET QUALITY SCOPE SPLIT (secondary agenda; E1, 6-1)

Founder decision (VAULT 2026-10-07): Target Quality as three separate 100-point scores for S1 / S2 / S3; a scope without a target shows "no target" (not 0). The existing `target_quality_v2` is retained; new fields are added.

| Component | S1 | S2 | S3 |
|---|---|---|---|
| Target exists | 25 | 25 | 25 |
| Base year + target year | 20 | 20 | 20 |
| **Replacing scope coverage** | **Target clarity 20:** (a) absolute/intensity explicit, denominator defined if intensity — 10; (b) S1 base-year emissions disclosed as a number — 10 | **Target clarity 20:** (a) absolute/intensity + **LB/MB method** explicit — 10 (0 if method not stated); (b) S2 base-year emissions as a number — 10 | **Category coverage 20:** categories covered by the target ≥67% of S3 → 20; less, proportional; ratio not computable but categories named → 10 |
| SBTi | 20 — if the SBTi target explicitly covers S1 | 20 — if it explicitly covers S2 | 20 — if it explicitly covers S3 |
| Pace | 15 — 4.2%/yr linear (1.5°C) | 15 — 4.2%/yr | 15 — 2.5%/yr (SBTi minimum S3 ambition "well-below 2°C"; to be verified) |

**Rules.**
- A **combined "Scope 1+2" target** is credited to both scopes; if separate per-scope base emissions are not disclosed, clarity (b) = 0 in both scopes and a "combined target" flag is set. A company that sets separate targets is thus 10 points ahead (Founder: "cutting S2 is easy, S1 is hard").
- An **S2 MB-only target** enters the pace calculation and carries an "MB" label on the profile (Panel 2 A.4: the emissions score is LB only; here the target itself is scored).
- **Net zero alone**: pace is not computed (the `scoring.json` ITR rule unchanged).
- The SBTi S3 coverage threshold (67%) and the S3 pace value are to be verified against the SBTi criteria text before publication.
- *Reservation (Raghunathan-Hale):* a combined target should not enter the S2 pace item at all.

---

### SECTION F — WORKED EXAMPLES (hand-calculated)

#### F.1 — Real report: Afyon Çimento Sanayi T.A.Ş. (`afyon_cimento_sanayi_t_a_s_2025`, reporting year 2024)

**Input.** Risk read (`data/metrik/…json`, legacy schema): 2 rows, both transition. Main read (`payload.climate_risks`): 7 risks — physical: extreme weather events; changes in weather patterns and sea-level rise; water access risks · transition: possible disruptions in the alternative fuel supply chain; increasing pricing of greenhouse gas emissions; need to transition to a low-carbon product portfolio; local and international climate policy changes. Scenarios (`payload.scenarios`): "<2°C (IPCC SSP1-2.6, RCP2.6, IEA NZE, NGFS 2°C)" and "3.5-4°C (IPCC SSP3/SSP5, RCP7.0/RCP8.5, Current Policies)".

**C.3 reconciliation.** 2 / 7 → difference 71% > 30% → re-read triggered. The calculation below was made **before** the re-read, with the legacy schema's fields; fields not read in the legacy schema (horizon, likelihood, impact, governance, scenario parameters) are "not read", not "not in the report" — the result is therefore a **lower bound**. The risk-read row "insufficient free allocations in the emissions trading system" is treated as the same risk as the main-read "increasing pricing of greenhouse gas emissions" (A.7(i), subtype politika_hukuk). n = 7.

| # | Risk (subtype) | A | D | M | O | S | H | I | Y | sᵢ | Level | Note |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| R1 | Alternative fuel supply disruption (pazar) | 10 | 0* | 15 | 0 | 0 | 0 | 0 | 0 | 25 | L2 | Metric "biomass share in alternative fuel, %" (yenilenebilir family; pazar ✓). The quote for value "30 %" is a target sentence ("targeted … by 2028") → **A.6 target leak**, O = 0; H lacks its prerequisite. |
| R2 | Carbon pricing / ETS allocation (politika_hukuk) | 10 | 0* | 15 | 20 | 0 | 15 | 10 | 0* | 70 | L5 | Metric "Scope 1+2 intensity per cementitious product" (ghg; policy ✓). O: relative change −11%, base 2021, year 2024 ✓. S: relative change does not build a series → 0. H: −42.1%, 2033, base 2021 ✓. I: relative/relative computable: 11 / 42.1 = 26% of the target path ✓. |
| R3 | Low-carbon product portfolio (pazar) | 10 | 0* | 0 | 0 | 0 | 0 | 0 | 0 | 10 | L1 | |
| R4 | Climate policy changes (politika_hukuk) | 10 | 0* | 0 | 0 | 0 | 0 | 0 | 0 | 10 | L1 | |
| R5 | Extreme weather events (akut) | 10 | 0* | 0 | 0 | 0 | 0 | 0 | 0 | 10 | L1 | |
| R6 | Weather patterns / sea level (kronik) | 10 | 0* | 0 | 0 | 0 | 0 | 0 | 0 | 10 | L1 | |
| R7 | Water access (kronik) | 10 | 0* | 0 | 0 | 0 | 0 | 0 | 0 | 10 | L1 | |

\* field not read; 0 in the lower-bound calculation.

- Σsᵢ = 25 + 70 + 5 × 10 = **145**; mean(s) = 145 / 7 = **20.714**
- n = 7 ≥ 4 → Z = 1 → D = **20.714**
- Channels: physical 3 risks, transition 4 risks → C = **1.00**
- Sen: S1 divergence ✓ (≤2°C family + "Current Policies"/SSP5). S2: "3.5–4°C" is a numeric parameter, but the legacy read has no horizon year → not passed (not read) → Sen = **25**
- **SRMS (lower bound) = 1.00 × (0.85 × 20.714 + 0.15 × 25) = 17.607 + 3.750 = 21.4**
- **Ceiling (if every field not read by the legacy schema received full points):** D +15 × 7 = +105; for R2, Y +5 and (if an absolute base value is found) S +10 → Σ = 265, mean = 37.857; Sen = 100 → 0.85 × 37.857 + 15 = **47.2**.
- **v0.1 = 92.0.** The difference has two sources: (i) v0.1's denominator is 2 risks, not 7 (recall gap); (ii) R1's "measurement" is a target figure. If the re-read finds no metric for R3–R7, Afyon stays below 50 even under the most generous assumption.
- Profile breakdown: "7 climate risks: 5 named (L1), 1 metric defined (L2), 1 progress reported (L5) · lowest-maturity risk: extreme weather events (L1) · flags: target leak (R1), truncation/reconciliation (2/7)".

#### F.2 — Synthetic: "Many risks, zero metrics"

**Input.** 12 climate risks (3 acute, 3 chronic, 3 politika_hukuk, 2 pazar, 1 teknoloji). Each risk in a heat map: horizon, likelihood and impact written, values varying from risk to risk. No metric for any risk. Scenario: "NGFS Net Zero 2050, Delayed Transition and Current Policies scenarios were used" — no parameters.

- Each risk: A 10 + D 15 = **25** (L1). Σ = 300; mean = 25; n = 12 → Z = 1 → D = **25.0**
- C = 1.00 (two channels). Sen: S1 ✓ (Net Zero 2050 + Current Policies); S2 ✗ (no numeric parameter) → **25**
- **SRMS = 1.00 × (0.85 × 25.0 + 0.15 × 25) = 21.25 + 3.75 = 25.0**
- Variant — uniform heat map ("medium term · likelihood medium · impact medium" identical for all 12 risks): A.4 → D_olasilik and D_etki drop to 2.5; sᵢ = 10 + 5 + 2.5 + 2.5 = 20; D = 20 → **SRMS = 17.0 + 3.75 = 20.8**
- **v0.1 = 30.0** (risk disclosure 20 + scenario 10; three metric components 0).
- Reading: the company has run a risk process (earns assessment points) but has never built the chain. Profile: "12 of 12 risks unmeasured."

#### F.3 — Synthetic: "Single risk, perfect measurement"

**Input.** A single climate risk: carbon pricing (politika_hukuk). Horizon, likelihood, impact written. Metric: "Scope 1 emissions under the ETS, tCO₂e" and "free allocation shortfall, tCO₂e"; four years of values 2021–2024; target: reduce the allocation shortfall by 50% vs 2021 by 2030 (base value written); 2024 progress written; target overseen by the Board Sustainability Committee. Physical risk never mentioned, no reasoned exclusion. Scenario: NGFS Net Zero 2050 and Current Policies, 2030 carbon price assumptions in numbers, EBITDA effect linked to this risk in numbers → S4.

- Risk: A 10 + D 15 + M 15 + O 20 + S 10 + H 15 + I 10 + Y 5 = **100** (L5)
- n = 1 → Z = 1/4 = 0.25 → D = 0.25 × 100 + 0.75 × min(100, 20) = 25 + 15 = **40.0**
- C = **0.85** (physical channel silent). Sen = **100**
- **SRMS = 0.85 × (0.85 × 40.0 + 0.15 × 100) = 0.85 × 49.0 = 41.7**
- Breakdown: "Evidence base: 1 climate risk; full credibility requires 4. Narrow-evidence-base discount: −0.85 × 0.85 × (100 − 40) = −43.4 points. Channel coverage: physical channel silent (×0.85)."
- **v0.1 = 92.0** (single type 12 + 35 + 20 + 15 + 10).
- Comparison: if the same company built the same chain for all of four risks, including one from the physical channel: D = 100, C = 1, **SRMS = 100**. The ceiling is reachable (B1 rationale).

#### F.4 — Known limits (from the panel's own examples; on record)

1. **Small cost of naming an unmeasurable risk (Doğanay, Okonkwo-Lindqvist reservations).** If the F.3 company added three transition risks only by naming them (physical channel still silent): mean = (100 + 30)/4 = 32.5, Z = 1 → SRMS = 0.85 × (0.85 × 32.5 + 15) = 36.2 < 41.7. Hiding the risks gains ~5.5 points here. If it also names one physical-channel risk, C = 1 and SRMS = 42.6 > 41.7 — hiding loses. The gap is inherent to averaging; it closes in v2 with a mandatory sector × subtype risk table.
2. **"Measure the easy risk, name the hard one"** is not closed by equal weighting (B3 minority). Partial brakes: non-climate row exclusion (0.4), compatibility matrix (A.5), metric deduplication (A.7).
3. **Reasoned exclusions cannot be verified against external data** (Echeverría red team S2). v2: reconciliation against past disaster/disruption records (the physical-risk counterpart of the Panel 2 K0 principle).
4. **Ceiling without scenarios is 85** (Echeverría reservation). v2 candidate: ceiling 75 for S0.

---

### SECTION G — IMPLEMENTATION NOTES

1. `pipeline/metrik_extract.py` → prompt `metrik_v2` (§D.2–D.3); row limit 25; `kesildi`; post-processing that flattens legacy fields (§D.5). Output to the same `data/metrik/{report_id}.json` file; old files are archived, not overwritten (append-only principle).
2. New `pipeline/strateji_v1.py` (the v0.1 file remains as archive): reads `config/strateji_v1.json`; no constants in code.
3. Quote verifier: report text from `parse_cache.text_path`; normalization rules in config.
4. Dictionaries in config: channel/subtype spelling variants, metric family, scenario names (low/high-warming families), reasoned-exclusion structural expressions, likelihood/impact 5-point translation.
5. Pilot: the same 50 reports; second reader a different model; κ report under `docs/panel4/` (separate task).
6. Database: new `strateji_v1` table (record_id, srms, d, z, c, sen, n_risk, basamak_dagilimi_json, kirilim_json, bayraklar_json, surum, hesap_zamani). The v0.1 table is retained.

**Defects identified in v0.1 (panel finding; fix subject to Founder approval — C8):**
- Type normalization: the spellings `geçiş`/`geçis` are not recognized; a −8-point systematic error in 9 of 48 scored reports (invest_az, katmerciler, koc_metalurji, sanko, sinpas_gyo, tupras_2022, turk_traktor, ulusoy_un, ziraat_gyo).
- Target leak: in 12 of the 44 rows with a value, the quote contains "hedef/target" (raw upper bound; manual verification needed).
- Recall: in 28 of 48 reports the risk read sees fewer risks than the main read (270 vs 339).

---

### SECTION H — RESERVATIONS, VOTES, SIGNATURES

**Reservations (summary; full text in 5-imzalar.md).**
- **Arıkan-Moreau:** horizon weight should exceed likelihood/impact (7/4/4); the first-TSRS-year relief should not be taken back through scoring — profile note.
- **Wendland:** in v2, assessment should be a prerequisite at least at the horizon level; governance as "tolerance threshold + escalation"; reopen the assessed-as-low exception.
- **Raghunathan-Hale:** a combined S1+2 target should not enter the S2 pace item.
- **Echeverría Lund:** ceiling 75 for S0; channel multiplier 0.70.
- **Doğanay:** mandatory sector × subtype risk table and a weakest-material-risk indicator entering the score in v2.
- **Okonkwo-Lindqvist:** half series points for a single first-year measurement; p = 10 alternative in the sensitivity table.
- **Reinholt:** 20% second reading in the first year; v0.1 to be withdrawn from publication.

**Votes.** A1 5-2 · A2 6-1 · A3 3-4 (rejected) · A4 3-4 (rejected) · A5 6-1 · B1 5-2 · B2 6-1 · B3 5-2 · B4 6-1 · B5 7-0 · B6 7-0 · B7 5-2 · C1 7-0 · C2 5-2 · C3 7-0 · C4 7-0 · C5 7-0 · C6 7-0 · C7 7-0 · C8 6-1 (recommendation) · D1 7-0 · D2 7-0 · E1 6-1.

**Submitted for Founder decision.** (1) The fate of v0.1 (C8); (2) the pilot second-reader model and token budget (C1); (3) entry into force: v1.0 goes live once the §C.4 pilot agreement study is passed.

**SIGNATURES:** Prof. Dr. Selin Arıkan-Moreau (APPROVE, with reservation) · Dr. Tobias Wendland (APPROVE, with reservation) · Dr. Priya Raghunathan-Hale (APPROVE, with reservation) · Prof. Matías Echeverría Lund (APPROVE, with reservation) · Kerem Doğanay, CFA (APPROVE, with reservation) · Prof. Beatrice Okonkwo-Lindqvist (APPROVE, with reservation) · Dr. Marcus Reinholt (APPROVE, with reservation)

*Panel joint finding — most valuable output: the score's denominator is now as large as what the report writes, not as large as what the reader saw (risk count reconciliation + quote verification); v0.1's highest-scoring record (92) was produced without these two rules.*
