Skip to content

GCB 2025 emissions, IGCC 2025 budgets with peak-warming bands, LULUCF v4, start years from 1850; budget rebase fixes - #22

Merged
setupelz merged 7 commits into
mainfrom
feature/gcb-igcc-lulucf-sources
Oct 1, 2026
Merged

setupelz merged 7 commits into
mainfrom
feature/gcb-igcc-lulucf-sources

Conversation

@setupelz

@setupelz setupelz commented Oct 1, 2026

Copy link
Copy Markdown
Owner

Summary

This PR adds three opt-in data sources and one deduction rule, lifts three limits on early start years, and corrects three accounting errors in the budget rebase. Defaults stay as they are (PRIMAP emissions, melo-2026 LULUCF, the existing budget sources and their AR6 category mapping).

Results change for existing budget sources. Adjusted budgets for sources with a baseline after 2020 rise. ar6_2020 and every allocation share are unchanged.

Source, label co2-ffi before after co2 before after
lamboll_2023 1.5p50 321,980 324,802 219,612 241,477
forster_2024 1.5p50 308,717 312,677 202,075 230,905
ar6_2020 (all labels) unchanged unchanged

Values are Mt CO2 from 2020, PRIMAP with melo-2026.

Decisions for the reviewer

  1. Accept the two rebase corrections below as results-changing fixes in the next release.
  2. Accept the peak-warming band rule for the two new budget sources.
  3. Decide whether rcbs.yaml should become a declared pipeline input (follow-up 1).

Added

  • gcb-2025 emissions source. Global Carbon Budget 2025 national fossil CO2, 1850 to 2024 (Andrew and Peters flat file, doi:10.5281/zenodo.17417124; Friedlingstein et al. 2026, doi:10.5194/essd-18-3211-2026). co2-ffi only. Blank years count as zero. The world row excludes international bunkers and the 1991 Kuwaiti oil fires. Bunkers come from the same file.
  • Coverage rule for gcb-2025. A country is an analysis country only if the source records emissions for it before 1990 and its population series starts in 1850. Nine countries join rest-of-world. The rule is a coverage: block on the source; a source without the block behaves as before.
  • forster_2026 and ar6_wg1_2021 budget sources (Indicators of Global Climate Change 2025, doi:10.5194/essd-18-3889-2026, Table 8; AR6 WGI Table SPM.2, doi:10.1017/9781009157896.001) for 1.5, 1.7 and 2°C.
  • Peak-warming band rule. For the two new sources, the scenario set behind each deduction is every AR6 scenario whose median peak warming lies in [T - 0.05, T + 0.05) and whose CO2 reaches net zero. Band sizes are 14, 111 and 37 scenarios. One band serves every likelihood of its temperature. An unmapped label or an empty band raises.
  • Placeholder fill. When the rebase needs a year after the last observed year of a world series, that year takes the last observed value, for at most rebase_fill_max_years years (default 1), with a warning each time.
  • melo-2026-v4 LULUCF source. NGHGI LULUCF Data Hub v4.0.0, 2000 to 2024 (doi:10.5281/zenodo.22828743).
  • gcb-2025 with melo-2026-v4 for co2 runs end to end. The LULUCF step now runs before the scenario step.

Changed

  • Allocation years from 1850 are accepted (was 1900).
  • With capability_reference_year set, the budget approaches require GDP only at that year.
  • The responsibility-window check for co2 follows the first year of the frame that is passed.

Fixed

  • Bunkers in the rebase. For a baseline after 2020 the rebase added fossil emissions without bunkers and the deduction started in 2020, so bunkers for 2020 to the baseline were deducted and never added. Effect: +2,822 Mt (lamboll_2023), +3,959 Mt (forster_2024).
  • Convention gap for co2. The rebase adds observed inventory LULUCF for 2020 to the baseline, and the gap also converted bookkeeping to inventory from 2020, so those years were converted twice. The gap now runs from the baseline year (Weber et al. 2026, doi:10.1038/s41467-026-69078-9, Methods, Eqs. 2 and 3). Effect: about +19 to +26 Gt for the two post-2020 sources.
  • The world co2 series no longer subtracts bunkers from a fossil series that already excludes them.
  • Bunker deductions use the last observed bunker year in the data.
  • Year-availability checks test values, so a blank-padded series raises.
  • A circular import when fair_shares.library.config.models is the first import.
  • compose_config re-runs when the packaged data-source table changes.
  • Documentation: the income-floor price base (Baer 2013, doi:10.1002/wcc.201), the GDP price base (constant 2021 international dollars), and the description of the co2 rebase.

Tests

821 passed, 16 deselected on the branch head. The first two commits introduce test files in their final form, so those two commits are not green on their own.

tests/fixtures/python_api/ is refreshed in its own commit. The earlier fixtures predated the August Gini-membership and GDP update.

Follow-ups, not in this PR

  1. rcbs.yaml is read by the RCB notebook and is not a declared input of any pipeline rule, so an edit to it does not trigger a re-run.
  2. The pathway approaches still require GDP at the first allocation year when a capability reference year is set.
  3. The bookkeeping side of the convention gap is the scenario AFOLU|Direct flux and the gap is a median across scenarios. Weber et al. use an observed bookkeeping-model mean for 2020 to 2023 and a mean across scenarios. The docs state both differences.

…LULUCF Data Hub v4, start years from 1850; fix bunker accounting in the budget rebase

Adds gcb-2025 (national fossil CO2, 1850-2024) and melo-2026-v4 (LULUCF Data Hub v4.0.0) as opt-in sources.
Adds RCB sources forster_2026 and ar6_wg1_2021 with peak-warming-band scenario selection and rebase_fill_max_years.
Allocation years start at 1850; the parameter grid checks pre-allocation years against the data.
Fixes the bunker accounting in the budget rebase, the world co2 series in the NGHGI builder, and the last observed bunker year.
calculate_budget_from_rcb raises an error when years are missing.
…that test values

Fixes the circular import when fair_shares.library.config is the first import in a process (new test_import_order).
calculate_budget_from_rcb now names the missing years and the last available year, and counts a missing value as a missing year.
A budget label without a numeric temperature raises a ConfigurationError that names the label.
rebase_fill_max_years must be a non-negative integer.
Docs corrections across the science and user guides.
Adjusted co2 budgets of RCB sources with a baseline after 2020 were too low.
The rebase adds observed LULUCF in the NGHGI convention for 2020 to the year before the baseline, and the BM-to-NGHGI convention gap also started in 2020, so the conversion was applied twice for those years.
The gap now runs from the source baseline year to net zero (Weber et al. 2026, Eqs. 2-3).
Notebook 104 writes one median gap per baseline year.
…efore the scenario step

Allows the co2 category with a co2-ffi-only emissions source (gcb-2025) and an active LULUCF source (melo-2026-v4).
Notebook 107 derives co2 as co2-ffi plus national-inventory LULUCF and skips non-CO2 categories the source cannot supply.
The scenario rule now depends on notebook 107, so notebook 104 no longer writes a zero convention gap.
process_rcb_to_2020_baseline raises an error for a co2 budget with a baseline after 2020 when it gets no inventory LULUCF series.
…GDP update

Regenerates the three distributed_*.parquet python-API fixtures.
Moves the fixture sources and source-id derivation into tests/fixtures/python_api_sources.py, shared by the fixture script and the reproduction test.
The reproduction test takes the Gini source from that shared module.
…ale comments)

The pathway-mode scenario rule also reads the co2 NGHGI series as its emissions input (Snakefile).
Notebook 100 comment names the peak-warming band as a scenario set.
Replaces TODO comments in notebooks 602 and 604 with plain statements of the historical start year.
The fixture script scope change is committed with the fixture refresh in the previous commit.
…onfig re-runs when the packaged source table changes

A country is an analysis country for gcb-2025 only if the source records emissions for it before 1990 and its population series starts in 1850.
Nine countries join rest-of-world (AND, LSO, TUV, NAM, FSM, MHL, PLW, TLS, MAC).
Global budget tables and every PRIMAP output are unchanged.
compose_config declares the packaged data-source table as an input.
@setupelz
setupelz merged commit 57de70c into main Oct 1, 2026
3 checks passed
@setupelz
setupelz deleted the feature/gcb-igcc-lulucf-sources branch October 1, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant