# csi-v1.1.0 CANDIDATE metric-unit registry (gate point 4) — NOT consumed by the production
# engine.
#
# Candidate track artefact (ADR-009 discipline, ADR-011 scope; owner delegation 2026-06-11).
# The engine-facing canonical unit is `normalised_index` for every metric in csi-v1.0.0
# (configs/csi.v1.yaml) and that does not change in this candidate. What this registry adds is
# the per-metric MEASUREMENT FAMILY underneath the normalised index — the unit discipline the
# overlays must honour — so unit drift between a metric and its bridge is detectable.

methodology_version: csi-v1.1.0-candidate.2
canonical_units:
  g20_livestock_population: normalised_index
  animal_agriculture_ghg: normalised_index
  animal_agriculture_land_use: normalised_index
  animal_product_trade: normalised_index
  livestock_feed_production: normalised_index
  animal_product_output: normalised_index
  animal_agriculture_employment: normalised_index
  consumer_transition_score: normalised_index

measurement_families:
  # Six metrics inherit their v1.0.0 measurement family unchanged.
  g20_livestock_population: { family: head_count, inherited: true }
  animal_agriculture_ghg: { family: tonnes_co2e, inherited: true }
  animal_agriculture_land_use: { family: hectares, inherited: true }
  livestock_feed_production: { family: tonnes, inherited: true }
  animal_product_output: { family: tonnes, inherited: true }
  animal_agriculture_employment: { family: persons_employed, inherited: true }
  # Candidate overlay 1: the trade family is UNCHANGED (quantity), and the overlay makes the
  # bridge unit-consistent with it — the activation blocker the value bridge failed.
  animal_product_trade:
    family: tonnes_product_equivalent
    inherited: true
    harmonised_series_unit: million_tonnes_product_equivalent (FAOSTAT TCL export quantity)
    operational_bridge_unit: kg_net_weight (UN Comtrade HS6 leaf records; matched-panel
      relative factors only, so the kg/tonne scale difference cancels in the ratio)
    forbidden: value-denominated bridges (USD/EUR) as composition inputs — evidence only
  # Candidate overlay 2: the consumer family CHANGES from a share to a price-basket score.
  consumer_transition_score:
    family: dimensionless_score
    inherited: false
    v1_0_0_family: protein_share_fraction (FBS plant-protein share — preserved untouched as
      the historical record of the old definition)
    construction: cpi_relative_price_basket_v1
    score_unit: "-1 * ln(plant_basket_index / animal_basket_index) * expenditure_scaler"
    components:
      basket_indices: HICP I25 / BLS CPI index points (dimensionless within each series)
      expenditure_scaler: ratio of per-mille HICP item weights (EU blocs) or CE annual USD
        expenditures (USA) — dimensionless
    transformation_to_index: "aggregated_index[t] = 100 * (1 + (metric_annual[t] - metric_annual[2023]))"

provenance:
  inherited_from: configs/csi.v1.yaml (locked, untouched)
  overlay_definitions: configs/csi.v1.1.0-candidate.yaml
  replay_evidence: data/candidate-v1-1-0/candidate-composition.json
