Six operators. Same code on every observable.
The framework's operators are domain-agnostic Python functions in validation/code/. The same code that processes Sabra-shell turbulence at \(\mathrm{Re} = 10^{10}\) processes CMIP6 sea-ice trajectories. No climate-specific variants.
The brake operator \(\mathcal{B}\) β extracting \(\beta\)
Given a cascade trajectory \((\Phi_i, \tau_i, \rho_i)\), \(\mathcal{B}\) returns the brake exponent
\[ \beta \;=\; \frac{\mathrm{d} \log|\rho|}{\mathrm{d} \log|\Phi|} \]
operationally extracted by ordinary least squares of \(\log|\rho|\) on \(\log|\Phi|\). Three independent estimators run in parallel:
- polyfit_brake_p β naive OLS via
numpy.polyfit; bootstrap CI from 1,000 resamples. - gls_ar1_brake_p β CochraneβOrcutt iterative GLS with AR(1) residuals. Handles autocorrelated rates.
- bayesian_brake_p β MAP + Laplace covariance, Metropolis sampling for credible intervals. Weakly-informative priors (\(\alpha, \beta \sim \mathrm{Normal}(0, 10^2)\)).
Disagreement between estimators flags model misspecification (e.g. strong AR(1) not accounted for in polyfit). Cross-checked at every cell. Source: validation/code/regression.py.
The dispersion operator \(\mathcal{S}\) β cross-model agreement
Given a set of brake exponents \(\{\beta_j\}\) extracted from \(M\) CMIP6 models, \(\mathcal{S}\) returns
\[ \sigma_{\text{cross}} \;=\; \mathrm{stddev}_j(\beta_j) \]
This is the framework's universality call. By Law III, when \(\sigma_{\text{cross}} \ll \sigma_{\text{within}}\) (within-model sample noise), the cross-shadow agreement declares the underlying signal as universal across models. When \(\sigma_{\text{cross}}\) is large, the candidate set is not jointly admissible by Theorem 6.
The consensus operator \(\mathcal{M}\) β median trajectory
Given \(M\) shadow trajectories \(\{\rho_j(t)\}\), \(\mathcal{M}\) returns the median rate at each moment \(t\):
\[ \mu(t) \;=\; \mathrm{median}_j[\rho_j(t)] \]
Concentrates exponentially in \(M\) by Theorem 2: \(\mathbb{P}(|\mu_M - \rho_{\text{true}}| > \delta) \le 4 \exp(-2 M F(\delta)^2)\). The MAX aggregator's expected error grows as \(\sigma \sqrt{2 \log M}\) and does not concentrate. Median is therefore the framework's natural shadow aggregator.
The spectral primitive \(\mathcal{P}\) β cascade vs resonance class
Given a cadence-stamped cascade \((\mathcal{C}, c)\), \(\mathcal{P}\) decomposes:
\[ \mathcal{P}(\mathcal{C}, c) = (\mathcal{C}_{\text{brake}}, \mathcal{C}_{\text{resonance}}, \mathcal{C}_{\text{residual}}) \]
via Empirical Mode Decomposition or wavelet basis. Used in instance #22 to separate the 41-kyr β 100-kyr Mid-Pleistocene Transition from the brake-rate evolution: the cascade's regime change is in the resonance sub-cascade, not the brake sub-cascade. Theorem 13 governs uniqueness up to the gauge group \(G_{\mathcal{P}}\) (rescaling Γ basis-rotation Γ mode-reordering; frequency-reparametrisation excluded). Source: validation/code/decomposition.py.
The anti-shadow detector \(\mathfrak{A}\) β joint admissibility
Given a candidate shadow set \(\{\mathcal{S}_\alpha\}\), \(\mathfrak{A}\) computes the pair-difference brake dispersion. If \(\mathfrak{A} \le \tau_{T3}\), the set is jointly admissible (Theorem 10). If \(\mathfrak{A} \gg \tau_{T3}\), the candidates shadow different cascades β the failure mode visible in:
- Stratospheric ozone (#25): \(\mathfrak{A} = 22.4\) for hole-minimum vs zonal-mean. Joint admissibility fails β they shadow structurally distinct cascades (polar-vortex chlorine chemistry vs global photochemical balance).
- Tropical cyclones (#30): wind-vs-pressure shadows fail joint admissibility in 5/6 ocean basins.
- ENSO NiΓ±o regions (#28): the four NiΓ±o sub-region indices are spatial sub-regions of one SST field with correlated noise. (S2) independence fails by construction. SOI alone preserves (S2).
The scope-reporter \(\mathscr{A}\) β every finding's self-disclosure
Every framework finding publishes a four-tuple under Theorem 12:
π = (tested_cascade_shadows_cadence_operator_chain,
excluded_conditions,
Ο_T3_precision_floor_at_this_log_range,
gauge_group_under_which_finding_is_invariant)
This makes Law V operational. No framework finding is publishable without simultaneous publication of its \(\mathscr{A}\). Each catalogue instance carries its own β see findings for examples.
PELT change-point detection β supplementary primitive
The framework also uses Pruned Exact Linear Time (PELT) change-point detection on the raw \(\Phi(t)\) series, with BIC penalty (Killick 2012 standard, no imported threshold). Used to:
- Independently rediscover regime breaks: NSIDC Arctic 1990 + 2007 (instance #17), Mid-Pleistocene Transition ~952 kyr (instance #22), Montreal Protocol 1989 (instance #25), MPT in 2/3 paleo records.
- Locate the first permafrost change-point per CMIP6 model β the operative metric in instance #26 where Layer-A binds.
- Detect coherent multi-reservoir regime shifts β the 2012β2014 shift in the energy-budget instance (4/5 reservoirs).
Source: validation/code/regimes.py.
End-to-end example
See the permafrost worked example for a full application of these operators to one specific climate question, producing one specific finding.