- Paper: https://doi.org/10.1088/1748-9326/aea34d
- Archive of record: https://zenodo.org/badge/latestdoi/1307941228 (every release is archived on Zenodo)
- Interactive explorer: https://setupelz.com/faircoop/
- Summary page: https://setupelz.com/work/faircoop.html
Replication archive for:
Pelz, S., Fricko, O., Riahi, K., Pachauri, S., Brutschin, E., Rogelj, J., Krey, V., Johnstone, I., Vinca, A., Schleussner, C.-F., Kikstra, J. and Gidden, M.J. (2026). Equitable cooperation deepens the solution space for high ambition pathways. Environmental Research Letters. https://doi.org/10.1088/1748-9326/aea34d
Affiliations: IIASA (Laxenburg, Austria); Imperial College London; University of Oxford; Center for Global Sustainability, University of Maryland. Corresponding author: Setu Pelz, pelz@iiasa.ac.at.
The archive assembles MESSAGEix-GLOBIOM-GAINS scenario reporting output into one tidy dataset and generates every code-based figure and table in the paper and its supplementary information. Figure 1 is a conceptual schematic and is not generated by code.
Requires R 4.2.3. The scenario workbooks are not in git and must be downloaded
before make assemble (see Data availability).
git clone https://github.com/setupelz/repl_2026_faircoop
cd repl_2026_faircoop
Rscript -e 'renv::restore()' # installs the pinned R packages
# Download the 32 reporting workbooks from the v1.0.0 release assets
# (https://github.com/setupelz/repl_2026_faircoop/releases/tag/v1.0.0) into
# Data/, then verify them against Data/MANIFEST.md5.
make assemble # Data/*.xlsx -> Data/scenario_set_reporting.csv
make all # all figures and SI tablesmake main-figures and make si-figures build the two halves separately.
make clean removes generated figures and tables.
Data/README.md describes the workbook layout and the manifest check.
Data/*.xlsx (one reporting workbook per model run)
│ Code/100_assemble.R
▼
Data/scenario_set_reporting.csv
│ Code/2xx (main figures), Code/3xx (SI)
▼
Manuscript/Figures/*.png + <fig>-data/*.csv, Manuscript/Figures/SI/*.png + si<N>-data/*.csv,
Manuscript/Tables/*
Scenario labels are parsed from each workbook's own Model and Scenario strings, so there are no hand-maintained scenario lists.
| In the data | In the paper | Meaning |
|---|---|---|
800fm / 500fm |
2 °C / 1.5 °C | Global net CO2 budget, 800 or 500 Gt over 2020-2100 |
ecpc |
ECPC | Equal cumulative per capita allocation |
pc_cap |
CAPC | Capability-adjusted cumulative per capita allocation |
1990 / 2015 / 2025 |
responsibility start | First year of the cumulative accounting window |
tce_el |
covered emissions | Kyoto-gas basket: CO2 + CH4 x 25 + N2O x 0.298 |
no suffix, U. |
unlimited transfers | Interregional transfers unconstrained |
_limited, L. |
lowest-feasible transfers | Transfers at the lowest feasible volume |
novel_cdr, -CDR |
CDR-only cooperation | Transfers restricted to novel CDR |
delay2040, -Delay |
10-year delay | Cooperation onset moved from 2030 to 2040 |
dr1p, -DR1 |
1% discount rate | Welfare discount sensitivity (default 5%) |
baseline |
NoPol | No-policy reference |
bare budget (800fm) |
Source | Cost-effective pathway, no allocation constraint |
Assembled scenario_set is <budget>_<principle><start>, for example
800fm_ecpc2015. Assembled variant is
<U|L>. <SSP>-<temp>-<PRINCIPLE><start>[-modifier], for example
L. SSP2-2C-ECPC2015-CDR.
To add a scenario, put its workbook in Data/ and run make assemble. A new
budget token also needs a line in the temp recode in Code/100_assemble.R;
the assembler stops on an unrecognised budget.
The reporting workbooks (Data/*.xlsx) and the assembled CSV are too large for
git. They are attached to the v1.0.0 release of this repository
(https://github.com/setupelz/repl_2026_faircoop/releases/tag/v1.0.0): the 32
workbooks and scenario_set_reporting.csv.gz, which gunzip restores to the
assembled CSV so make assemble can be skipped.
Tracked in the repository:
Data/MANIFEST.md5, checksums of the 32 workbooks. Verify a deposited copy withcd Data && md5 -r *.xlsx | sort | diff - <(sort MANIFEST.md5)(macOS, sorted because the shell glob order is locale-dependent) orcd Data && sed 's/^\([0-9a-f]\{32\}\) /\1 /' MANIFEST.md5 | md5sum -c -(Linux).Data/fairshare_allocations.csv, regional fair-share budget shares read byCode/301_si_allocations.R. Regenerate only if the SSP2 800 Gt workbooks change: aftermake assemble, runuv run --project <fair-shares-repo> python Code/tools/compute_fairshares.py(needs the fair-shares library).
repl_2026_faircoop/
├── Code/
│ ├── 000_setup.R # Shared data loading, constants, helpers
│ ├── 100_assemble.R # Data/*.xlsx -> scenario_set_reporting.csv
│ ├── 202_figure_2.R # Figure 2, the physical transition
│ ├── 203_figure_3.R # Figure 3, financial and economic outcomes
│ ├── 204_figure_4.R # Figure 4, cooperation restricted to CDR
│ ├── 205_figure_5.R # Figure 5, 2C -> 1.5C comparative statics
│ ├── 301_si_allocations.R # SI Fig 1, fair-share allocations
│ ├── 302_si_ssp_drivers.R # SI Fig 2, SSP socioeconomic drivers
│ ├── 303_si_ssp_comparison.R # SI Fig 3, SSP1 vs SSP2 comparison
│ ├── 304_si_dr.R # SI Fig 4, discount-rate sensitivity
│ ├── 305_si_regional_consumption.R # SI Fig 5, per-region consumption
│ ├── 306_si_ppp_consumption.R # SI Fig 6, consumption on MER vs PPP
│ ├── 307_si_equivalence.R # SI Fig 7, Source/unlimited equivalence
│ ├── 308_si_scenario_table.R # SI Table 1, scenario inventory
│ ├── 309_si_text_numbers.R # SI Tables 2-5, in-text numbers workbook
│ └── tools/compute_fairshares.py # Data/fairshare_allocations.csv
├── Data/ # Workbooks (untracked), README, MANIFEST.md5, allocations
├── Manuscript/
│ ├── Figures/ # 202..205_figure_N.png + figN-data/ CSVs per panel (README there)
│ │ └── SI/ # SI_Figure_N_*.png + siN-data/ CSVs per panel
│ └── Tables/ # SI_Table_1_Scenarios.csv, SI_text_numbers.xlsx
├── renv.lock # Pinned R package versions
├── DESCRIPTION # Package metadata
├── CITATION.cff # Machine-readable citation (paper and archive)
├── CITATION.md # Paper citation, data sources, licensing
├── Makefile # Build targets
├── LICENSE # MIT
└── README.md
The figures and tables rebuild byte-identically from a clean tree on the platform they were produced on. The shipped figures were rendered on macOS 15 (Apple Silicon) with R 4.2.3 and the pinned packages, in Helvetica.
Two caveats. SI_text_numbers.xlsx gets a new checksum on every run because
writexl stamps a creation time into the workbook metadata; the four sheets
themselves are unchanged. PNG bytes still depend on the installed fonts, so
checksums are comparable within a platform, not across platforms.
Figures are rasterised with ragg so the device is the same everywhere. On Linux
ragg needs the freetype, libpng, libtiff and libjpeg development packages
(libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev on Debian or Ubuntu,
freetype-devel libpng-devel libtiff-devel libjpeg-turbo-devel on Fedora).
Helvetica is a macOS font; elsewhere the system substitutes a metric-compatible
sans (usually Nimbus Sans or Arial), which shifts text extents slightly.
Claude Code (Anthropic) was used to refactor and document the analysis scripts, to build the figure code and the interactive explorer from the assembled scenario data, and to draft the archive's documentation. The scenario design, the model runs, the methods and the results are the authors' own. Every number in the paper and on the explorer is computed by the code in this archive from the deposited model output, and the authors reviewed and are responsible for all code and text.
Cite the paper above. To cite the archive itself, use CITATION.cff (GitHub
shows it under "Cite this repository"). Data sources and licensing are in
CITATION.md. MIT (code); CC-BY 4.0 (processed data).