Two parallel forward-projection branches per observable.
For each climate observable, the framework runs two independent projection types and reports both. The branches are designed to fail differently — when both agree, the finding is robust; when they diverge, the divergence itself is the finding.
Branch A — Statistical extrapolation fans
For observables with a long observational record (CO₂, Arctic sea-ice, GMSL, RAPID AMOC, ozone), the framework fits ARIMA or AR(2) + linear-drift to the historical series and extrapolates 50 years forward. Then perturbs the forecast rate by ±0%, ±10%, ±25%, ±50% to generate 9 statistical scenarios.
This branch tests "what if the historical drift continues, with a perturbation". It is a model-free baseline. The 9 scenarios provide cross-shadow consensus.
Specific configurations per observable
- CO₂ (Mauna Loa): ARIMA(2,2,2), AIC = 99.5. Central forecast 2074 = 562.3 ± 27.0 ppm (95% CI [509.5, 615.2]).
- Arctic sea-ice (NSIDC): AR(2) + drift. 9 rate perturbations ±0%, ±10%, ±25%, ±50%, plus zero-rate and rate-flip.
- RAPID AMOC: AR(1) + linear trend, μ = +203.077 Sv, κ = -0.092 Sv/yr (small relative to noise σ² = 8.4). Five rate-perturbation scenarios ±25%, ±50%.
- GMSL: ARIMA(0,1,1) per shadow. Five rate-perturbation factors 0.5, 0.75, 1.00, 1.25, 1.50.
- Ozone: separate decline-rate (1980–88) and recovery-rate (2000–24) per shadow. Five recovery scalings (0.50, 0.75, 1.00, 1.25, 1.50) + counterfactual no-Montreal scenario.
Branch B — CMIP6 SSP fans
For observables present in the Pangeo CMIP6 zarr archive, the framework streams the model output for each SSP and applies the same brake-extraction and PELT pipeline as Branch A. Multi-model ensembles per SSP provide the cross-model dispersion \(\sigma_{\text{cross}}\).
Catalogue coverage by SSP
| Observable | SSP1-1.9 | SSP1-2.6 | SSP2-4.5 | SSP3-7.0 | SSP5-8.5 |
|---|---|---|---|---|---|
| siconc | 12 models | 12 | 12 | 12 | 12 |
| msftmz | 0 | 13 | 14 | 0 | 19 |
| npp | 0 | 26 | 25 | 1 | 25 |
| cSoil | 1 | 6 | 6 | 6 | 6 |
"0 models" cells are honest catalogue gaps — the Pangeo cache does not include those SSP/observable combinations. Reported as "no models in cache" on the atlas.
Three brake estimators run in parallel
Every brake-extraction call runs all three estimators and reports the result side-by-side. Disagreement signals model misspecification.
| Estimator | Model | Confidence interval | Use case |
|---|---|---|---|
| polyfit_brake_p | OLS | Bootstrap (1000 resamples) | Naive baseline. Works when residuals are white. |
| gls_ar1_brake_p | Cochrane–Orcutt GLS with AR(1) | Asymptotic GLS | Correct CI when residuals are autocorrelated. |
| bayesian_brake_p | MAP + Laplace + Metropolis | Posterior credible interval | Sharper CI under known priors; robust to small-sample. |
An example of cross-checking: the original (v1) Wunderling cascading-tipping coupling test (instance #19) reported AMOC↔Amazon Pearson r = -0.55. Bayesian-AR(1) cross-check collapsed it to r = -0.18 — the antiphase signal was largely autocorrelation artefact. Reported honestly. Verdict downgraded.
The three-criterion best-pathway test
For each observable's SSP fan, the framework tests three orthogonal criteria to identify a "best pathway":
- Cross-model tightness: \(\sigma_{\text{cross}}(\beta) \le\) within-model sample noise (Law III).
- Sub-rate β: consensus β 68% credible interval upper bound < 1 (Theorem 1).
- No mid-century regime change: PELT detects no change-point in consensus \(\Phi(t)\) before 2050 (single-regime cascade).
For sea-level rise, SSP1-1.9 wins on rank-sum aggregation 7 of 24. For sea-ice, no SSP clears all three — the framework reports "no best pathway" honestly. The σ_cross paradox surfaces here.
Theorem 3 forward-binding
A subtle consequence: Theorem 3's precision floor binds forward as well as backward. Extending the projection horizon does NOT enlarge \(\log(\Phi_{\max}/\Phi_{\min})\) unless \(\Phi\) approaches zero. For sea-ice and AMOC at narrow log-range, β extraction precision is intrinsically poor at year 2075 just as at year 2025. Forward extrapolation does not fix the precision floor. The framework reports this honestly under Law V.
Sources: domains/climate/experiments/scenario_fan_*.py (8 scripts) + regression.py + regimes.py.