# csi-v1.1.0 — RESOLVED production methodology config (pipeline-integration pass).
#
# This is the engine-facing, fully-resolved methodology for the ACTIVATED csi-v1.1.0
# publication (activation record: upt-architecture docs/csi-v1-1-0-activation-gate-status.md,
# "ACTIVATION EXECUTED (2026-06-11)", ADR-011 Reading-A scope). It exists so the engine can
# load and recompute csi-v1.1.0 NATIVELY instead of only through the activation exporter.
#
# Provenance — it resolves the candidate OVERLAY (configs/csi.v1.1.0-candidate.yaml) onto the
# locked configs/csi.v1.yaml (csi-v1.0.0). Only two metrics carry deltas; every other metric
# and every global constant is inherited from csi.v1.yaml byte-for-byte:
#   * animal_product_trade      : per_epoch_cap_fraction_of_baseline 0.050 -> 0.100
#                                 (baseline window 2018-2022; window lives in the baseline
#                                  registry, not here — see data/baselines/csi-v1.1.0.yaml)
#   * consumer_transition_score : smoothing_lambda 0.40 -> 0.50,
#                                 per_epoch_cap_fraction_of_baseline 0.050 -> 0.030
#                                 (CPI relative-basket construction; 2023 anchor)
# The two consumer deltas are confirmed against the certified constants in
# data/candidate-v1-1-0/candidate-composition.json (smoothingLambda 0.50, cap 0.030).
#
# METHODOLOGY-HASH RECONCILIATION (owner decision pending before this feeds the PUBLISHED
# recompute path). Two hashes describe csi-v1.1.0 and they are NOT equal:
#   * engine native config_hash = hash_json(_methodology_hash_material(this config))
#       = sha256:4eeec13bdb90c15fffc0a0ae73cbc8e42b771dc9b2e79ae6efb4de3109ef904d
#     (the same canonical scheme that produced the v1.0.0 published methodologyHash
#      f2e12a52...; reproduced by tests/test_csi_v1_1_0_config.py).
#   * published methodologyHash (upt-web public/data/csi/latest.json)
#       = sha256:5e20924ef908fcefa5c1ba617ae6040b6a63f9701086b3f6b62a621f5355395b
#     which is hash_file(configs/csi.v1.1.0-candidate.yaml) — the candidate OVERLAY file bytes,
#     written by scripts/build_v110_candidate_proof_chain.py. This silently CHANGED what
#     `methodologyHash` means between v1.0.0 (canonical material hash) and v1.1.0 (overlay file
#     hash). Reconcile the published artefact to the engine's native config_hash (or formally
#     adopt file-hash semantics) before recomputing the published headline from this config.
#     This file does NOT alter any published artefact.

methodology_version: csi-v1.1.0
index_base: "100"
index_min: "0"
index_max: "200"
weight_denominator: 101
output_scale: E8
min_final_snapshot_confidence: "0.80"
min_metric_confidence: "0.75"
min_provisional_snapshot_confidence: "0.65"
min_available_weight_for_provisional: "0.80"
cross_metric_max_contradiction_ratio: "0.33"

metrics:
  - id: g20_livestock_population
    raw_priority_weight: 25
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.70"
    per_epoch_cap_fraction_of_baseline: "0.030"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  - id: animal_agriculture_ghg
    raw_priority_weight: 20
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.60"
    per_epoch_cap_fraction_of_baseline: "0.030"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  - id: animal_agriculture_land_use
    raw_priority_weight: 15
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.60"
    per_epoch_cap_fraction_of_baseline: "0.020"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  # OVERLAY 1 (csi-v1.1.0): trade saturation fix. per_epoch_cap 0.050 -> 0.100.
  # Baseline window re-anchored 2000-2004 -> 2018-2022 in data/baselines/csi-v1.1.0.yaml.
  - id: animal_product_trade
    raw_priority_weight: 10
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.40"
    per_epoch_cap_fraction_of_baseline: "0.100"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  - id: livestock_feed_production
    raw_priority_weight: 10
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.50"
    per_epoch_cap_fraction_of_baseline: "0.040"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  - id: animal_product_output
    raw_priority_weight: 10
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.50"
    per_epoch_cap_fraction_of_baseline: "0.040"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  - id: animal_agriculture_employment
    raw_priority_weight: 7
    direction: -1
    canonical_unit: normalised_index
    smoothing_lambda: "0.70"
    per_epoch_cap_fraction_of_baseline: "0.020"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

  # OVERLAY 2 (csi-v1.1.0): consumer redefinition (CPI relative-basket, 2023 anchor).
  # smoothing_lambda 0.40 -> 0.50, per_epoch_cap 0.050 -> 0.030. weight 4/101 and
  # direction +1 inherited unchanged. Confirmed by candidate-composition.json constants.
  - id: consumer_transition_score
    raw_priority_weight: 4
    direction: 1
    canonical_unit: normalised_index
    smoothing_lambda: "0.50"
    per_epoch_cap_fraction_of_baseline: "0.030"
    lower_relative_bound: "-1"
    upper_relative_bound: "1"
    min_raw_source_coverage: "0.50"
    target_raw_source_coverage: "0.90"
    min_available_sources: 2
    agreement_tolerance_fraction_of_baseline: "0.03"
    anomaly_window_epochs: 24
    anomaly_z_threshold: "6"

cross_metric_edges: []
