# Data choices — china-co2-peak story

**Source.** The Global Carbon Project's national fossil CO2 emissions dataset (Andrew and Peters, CICERO), the national series behind the Global Carbon Budget, latest version on Zenodo (2026v11 at the snapshot, published 26 October 2026, CC BY 4.0). Emissions are territorial, in million tonnes of CO2, by fuel: coal, oil, gas, cement (process emissions), flaring and other carbonates. National totals exclude international shipping and aviation; the `Global` row includes them. Not used: consumption-based emissions, land-use emissions, other greenhouse gases.

**Latest year.** Each edition ends in the year before its version number. For non-Annex I countries, including China, the last two years are extrapolated from CDIAC-FF using energy growth rates, mostly from the Energy Institute's Statistical Review (method document §2.2.32). `calculate.mjs` reads which years these are from the sources file (any China year whose `Total` source names the Energy Institute: 2024 and 2025 here) and refuses to run if the latest year is not among them. The post calls them "preliminary" and draws them as a dashed line.

**Leap years.** 2024 had 366 days, so 2025's calendar-year change (+0.1%, +16 Mt) understates growth. The Global Carbon Budget adjusts its growth rates for leap years ("All annual growth rates presented are adjusted for the leap year", Friedlingstein et al. 2026), and the post follows that convention for percentages. The adjusted changes in tonnes are our own calculation, not a GCB convention: we rescale the previous year to the current year's length, giving adjusted differences rather than changes between calendar-year totals: growth = (E_y / days_y) / (E_{y−1} / days_{y−1}) − 1, and the change in tonnes = E_y − E_{y−1} × days_y / days_{y−1} (columns `*_adj_mt` in `china-vs-rest.csv`). For 2025 this gives China +0.4% (+50 Mt) and the rest of the world +1.5% (+403 Mt), 8 times China's change; on calendar totals it would be +16 Mt and +331 Mt, 20 times. The calendar figure for China is given once, in "How this was made". Average growth over several years (the start-year sweep) is plain compound annual growth of calendar-year totals; leap days change it by less than 0.1 point.

**Rest of the world.** `Global` minus `China`. It therefore includes international shipping and aviation (about 3% of the world total in 2024 according to the Global Carbon Budget 2025) and every other country. The post says so where it uses it.

**EU27 per person.** The dataset has no EU row. `calculate.mjs` sums emissions of the 27 current member states (by ISO code) and divides by the sum of their populations, each population derived as total ÷ per-capita from the same file. Per-capita figures use GCP's population series, primarily UN data with national-source exceptions (method document §2.3: Finland, Iceland, Sweden, the Netherlands, Norway, Spain and the USA use national series for some or all years); recent UN population values are projections. Since the 13 November rewrite the post does not quote per-person figures; it quotes coal's share (about 71%) from `china-by-fuel.csv` / `statistics.json`.

**Earlier plateau.** `calculate.mjs` finds the latest year (2005 on, at least four years before the end) after which emissions fell two years running: 2014 (10,050 Mt), falling to 2016 (−2.1%) and passed again in 2017. It is shown as a precedent, not a prediction.

**The 2026 projection (new on 13 November 2026).** The Global Carbon Budget 2026 report (10 November 2026) projects China's 2026 fossil CO2 at −0.9% (range −2.6% to +0.8%). The range "relates only to the estimated growth rate, and excludes the uncertainty of the baseline (i.e., 2025) level". No GCB data file has national 2026 values (PROVENANCE.md), so the figures are transcribed into `gcb2026-report-figures.json` and attributed in the post. Chart 1 draws the 2026 point at 2025 × (1 − 0.009) = 12,306 Mt, with the range applied the same way (12,095–12,517). Both years have 365 days, so no leap adjustment is needed. The report rounds the same level to "around 12.3 GtCO2". 12,306 is within 3 Mt of 2023's 12,303, but the post does not lean on that.

**What the projection can and cannot show.** One projected annual fall is not a peak. The post tests the projection against three things. (1) **The range**, which includes a rise. (2) **The budget's own track record for China**, from supplement Table S6 (`gcb-china-projection-track-record.csv`): GCB projected a fall four times, in 2015, 2016, 2020 and 2022. The first actual estimate showed falls in 2015 and 2016 (−0.7%, −0.3%) and rises in 2020 (+1.4%; the COVID year, whose projection had no range) and 2022 (+0.9%). Misses, as first actual minus projection, ran from −2.4 to +3.2 points; the mean absolute miss is 1.5 points. "Missed in both directions" refers to this. (3) **The precedent**: emissions fell in 2015 and 2016 and passed the 2014 level again in 2017 (in 2026v11: 2014 10,050 Mt; 2016 9,837, −2.1%; 2017 10,097). The last annual fall in 2026v11 is 2016, so a 2026 fall would be the first since then. The "first actual" values are themselves later revised (2022 is +3.5% in 2026v11); the post says "the first estimate from actual data".

**Revisions of preliminary years.** `revisions.csv` compares the last year of five earlier editions (the final version of each, 2021v34 to 2025v15) with the same year in 2026v11. Growth revisions run from −0.7 to +2.9 points. The post uses only the largest ("revised by as much as 2.9 points"), to say that the two preliminary years behind "almost stopped" can still move. The revisions chart was cut on 13 November in favour of the projection track record, which answers the new question more directly. These are subsequent revisions to selected editions, not to first estimates, and five comparisons are not a confidence interval.

**Ties and records.** 2025 is 16 Mt (0.13%) above 2024 on calendar totals, which is smaller than most revisions, so the post calls it "nominally China's highest year" (values from 1907), not a record.

## Sentences that change with a new edition

Every number in the post, the front matter and the alt text is filled in by `render-readme.mjs`: from `statistics.json`, which `calculate.mjs` builds from the Zenodo snapshot and the two transcribed GCB 2026 files. Do not edit README.md by hand. `npm run update` re-fetches the newest Zenodo version; `render-readme.mjs --check` runs before the charts and README are overwritten. Guards (in `render-readme.mjs`) stop the build if a premise fails:

| Wording | Guard |
|---|---|
| Title, opening, close: "projected to fall", "range runs from a fall to a rise", "first annual fall since 2016" | China projection < 0; range spans 0; last fall year in the data is before the preliminary years |
| "twice since 2015 a fall it projected for China turned out to be a rise"; "missed by up to 3.2 points, more than three times the fall now projected" | track record: ≥ 2 projected falls with a rise; max miss > 3 × the projection |
| "Oil and cement are projected to fall; coal is still rising"; "global fossil CO2 will drop 0.4% as well"; Carbon Monitor "points the same way" | fuel projections' signs; global and Carbon Monitor projections < 0 |
| "two years in which growth almost stopped"; "nominally China's highest year"; "since a 5.2% rise in 2023" | both leap-adjusted growth rates ≤ 0.5%; 2025 is the maximum, by under 1%, over 2024; 2023 growth > 3% |
| "fell for two years after 2014, then passed that level again in 2017"; "the budget projected those falls at the time" | plateau found; 2015 and 2016 are projected falls that were falls |
| "The balance has flipped: in 2025 the rest of the world added 8 times as much as China" | China > rest in 2022–23; rest > China in 2024–25; ratio ≥ 2 |
| The whole post | the edition is 2026 and the report file projects the year after the data ends |

A new Zenodo version within GCB 2026 that changes 2024–2025 re-runs everything; if a guard fails, rewrite the named sentence and get the change re-reviewed. GCB 2027 (data to 2026) fails the first guard on purpose: the projection must be re-transcribed and the post rewritten.

**Size.** About 4.2 MB archived: the 2026v11 emissions file (3.2 MB), its method document (0.9 MB) and small extracts. The sources file (8.6 MB) and earlier editions (about 3 MB each) are not archived in full; their SHA-256s are in PROVENANCE.md.
