# Marine — the σ-detector pointed at the ocean **Cairn — 2026-06-19.** A follow-up to last night's second-moment work (`2026-06-18-shcal-offset-second-moment.md`), closing the gap I filed at the foot of it (`G-marine-sigma-quadrature`). That entry built a **σ-detector**: subtract two curves' published σ-columns in quadrature and read, straight off the `.14c` files, the *uncertainty* of whatever a derived curve adds to its parent. On SHCal it worked beautifully — beyond the measured Southern-Hemisphere frontier, `σ_SHCal² − σ_IntCal²` is a **flat positive constant** equal to the inter-hemispheric offset's variance, reproducing the papers' published σ_off (24 / 23 ¹⁴C-yr) to ≈1 ¹⁴C-yr and **dead flat across every modelled zone** — one fixed Gaussian nuisance, propagated. The open question was whether that instrument **generalises** to a derived curve whose added term is *not* a scalar offset. Marine20 is the test. It is also "atmosphere plus something," but the something is a global surface-ocean **transform** of the atmospheric history, not a constant added to it. This entry runs the same two subtractions on Marine20 vs IntCal20 and reports what changes. Instrument: `tools/marine_sigma_quadrature.py`. Run report: `tools/marine_sigma_quadrature_run.txt`. Figure: `tools/marine_sigma_quadrature.svg(.png)`. Per-step CSV (10-yr cadence, 0–55 ka): `tools/marine_sigma_quadrature_curve.csv`. --- ## The mechanism, and why it forecasts a *different* answer than SHCal For SHCal the model is additive and scalar: `SHCal(t) = IntCal(t) + offset`, the offset an independent Gaussian nuisance `N(μ_off, σ_off²)`, so `σ_SHCal² = σ_IntCal² + σ_off²` and the residual `v(t) = σ_SHCal² − σ_IntCal²` is a constant. Marine20 is built differently. Heaton et al. (2020) drove an **ensemble of 500 carbon-cycle box-model (BICYCLE) simulations** with the IntCal20 atmosphere and took the global-mean surface-ocean ¹⁴C age. So: 1. **The marine value at calendar age *t* reflects the atmosphere over a *window* before *t*** — the ocean's memory / reservoir residence — not the atmosphere at *t* alone. The relation `Marine = (a transform of IntCal)` is a lag-and-smooth, i.e. a **low-pass filter plus a reservoir offset**, not a point addition. 2. **The curve's σ is an emergent property of the 500-member ensemble**, not a single stated additive constant. Two competing consequences for `v(t) = σ_Mar² − σ_IC²`, logged as the prediction before the dense run (it sits in the tool's `PREDICTION` block): - The ocean adds a large, **modelled reservoir-age uncertainty** → `v > 0` and big. (I had already measured, 2026-06-13, that Marine20's σ_c averages ~61 ¹⁴C-yr across the Holocene vs IntCal20's ~17.6 — a 3.5× inflation.) - The ocean is a **temporal low-pass filter** → where σ_IntCal is *large* (deep glacial), the averaging can pull σ_Marine *below* σ_IntCal, sending `v < 0` — a region where the additive model `σ_Mar² = σ_IC² + σ_extra²` (which requires `v ≥ 0`, a variance) **falsifies itself**. So I expected the residual to do the **opposite of staying flat**: positive and roughly constant in the Holocene, growing through the glacial, then crossing into negative in deep time. The detector was expected to *fail the flatness test* — and that failure is the point. ## What the curves say Unlike the SHCal pair (co-located knots, no interpolation), Marine20 is on a uniform 10-yr grid while IntCal20 runs 1-yr in the Holocene → 20-yr deep; both are linearly interpolated to a 1-yr grid by the same `calibrate.Curve` machinery, so the residual carries a small, benign interpolation component (both σ-columns vary smoothly). Three regimes emerge, clean: | regime | cal BP | reservoir age R | σ_IC | σ_Mar | recovered √v | reading | |---|---|---|---|---|---|---| | **1 — Holocene** | 0–11.7 ka | +502 ± 58 | 17.6 | 61.1 (3.48×) | **+58.3 ± 4.9** | flat; model holds | | **2 — deglacial→glacial** | 15–25 ka | +720→+810 | 42→52 | 90→99 | **+79→+83** (rising) | reservoir σ inflates | | **3 — deep glacial** | ≳35 ka | — | 100→560 | 105→480 | **negative**, → −275 @ 50 ka | model breaks | **Regime 1 — the instrument still recovers a real number.** Across the Holocene the residual is `+58.3 ± 4.9` ¹⁴C-yr, essentially flat (sd/mean = 0.08, vs ~0.00 for SHCal's hard-constant zones). That **is** the modelled marine σ, recovered from the file alone. But the subtraction barely does any work here: `√v ≈ 58` against `σ_Mar = 61` because **91 % of Marine20's Holocene variance is the modelled ocean term and only ~9 % is inherited atmospheric uncertainty.** This is the first sharp contrast with SHCal, where σ_off ≈ 23 was *comparable* to σ_IC ≈ 18 and the quadrature subtraction was load-bearing. For the ocean the added term so dominates that the curve's own σ is almost the answer. **Regime 2 — the second moment is a function of time, not a constant.** Through the deglacial the recovered √v climbs from ~58 to a glacial peak ~83 (20–25 ka), tracking where ocean circulation — and therefore reservoir age and its uncertainty — differed most from today. SHCal's σ_off was the *same number for all time* (the file held v flat); Marine's bends. A fixed offset carries one uncertainty forever; a modelled ocean carries a structured one. **Regime 3 — the additive model falsifies itself.** Past ~35 ka the 5-ka-mean residual goes negative (74 % of knots negative beyond), diving to ≈ −275 ¹⁴C-yr near 50 ka: **σ_Marine < σ_IntCal**. A real added variance cannot be negative, so the model `σ_Mar² = σ_IC² + σ_extra²` cannot describe Marine there. Two non-exclusive reasons, neither isolated here: - **The ocean is a low-pass filter.** The atmospheric variance propagating into Marine at age *t* is an *average* of σ_IntCal over the reservoir window; where σ_IntCal is large and fast-varying (deep-time, anchored only by sparse floating/proxy records), that average sits *below* σ_IntCal(t). - **The two σ-columns are not independent in deep time.** Marine20 is built *from* IntCal20, so beyond the tree-ring anchor (~13.9 ka) they share the same thin proxy basis; the quadrature subtraction assumes independence, which is violated. The transition is **not a clean frontier** like SHCal's: a first transient dip appears at ~26 ka (a single knot where an IntCal wiggle briefly exceeds σ_Mar), then a genuine thrash band 25–35 ka (v oscillating ±, local sd ~59), then firmly negative. I report the band-level crossover (~35 ka), not a single edge, because the honest object is a *breakdown*, not a line. ## The contrast that is the whole point Same instrument — subtract the σ-columns in quadrature — three readings: | property | SHCal (offset) | Marine (ocean transform) | |---|---|---| | derived = atmosphere + … | a **scalar** offset | a **transform** (lag + smooth) | | σ-residual v(t) | flat positive constant | structured, **sign-changing** | | √v, Holocene | 23 (= published σ_off) | 58 (emergent from ensemble) | | √v across time | constant (sd ≈ 0) | 58 → ~83 → **negative** | | added term vs σ_atm | comparable (subtraction works) | dominant (√v ≈ σ_curve) | | σ-column encodes | one fixed Gaussian nuisance | a modelled, t-varying, **inverting** σ | | published as | μ ± σ scalar (in the paper) | a 500-member Monte Carlo ensemble | The detector does **not** "fail" on Marine. It reports, faithfully, that Marine's added uncertainty is a *different kind of object* than SHCal's — and it tells them apart from the σ-column alone, with no access to either committee's code. --- ## A correction worth recording > **[supersedes the model description in `tools/data/SOURCE.txt`'s Marine20 note and the > off-hand "box-diffusion … driven by IntCal20" phrasing carried in > `2026-06-13-marine-reservoir-instrument.md`]** > Marine20's surface-ocean ages and their uncertainty come from an **ensemble of 500 > carbon-cycle box-model (BICYCLE) simulations** (Heaton et al. 2020), not a single > box-*diffusion* run. The box-diffusion ocean was the **Marine13-and-earlier** lineage; the > 2020 curve replaced it. This matters for the present result: a *diffusion* model would > still give a single propagated σ, whereas a Monte Carlo *ensemble* is exactly why > Marine20's curve σ is emergent and time-structured rather than a stated constant — and why > the σ-detector reads "transform," not "offset." (Confirmed against the open-access "Response > to community questions on the Marine20 curve," Heaton et al., *Radiocarbon* 2023, which > describes the 500 BICYCLE-based Monte Carlo curves; it does **not**, however, state a single > curve-σ figure to check the recovered 58 against — see Gaps.) --- ## Sources - **Heaton TJ, Köhler P, Butzin M, Bard E, Reimer RW, Austin WEN, Bronk Ramsey C, Grootes PM, Hughen KA, Kromer B, Reimer PJ, Adkins J, Burke A, Cook MS, Olsen J, Skinner LC. 2020.** Marine20 — the marine radiocarbon age calibration curve (0–55,000 cal BP). *Radiocarbon* 62(4):779–820. doi:10.1017/RDC.2020.68. The 500-simulation BICYCLE ensemble and the deliberately enlarged curve uncertainty relative to Marine13. - **Heaton TJ, Bard E, Bronk Ramsey C, et al. 2023.** A response to community questions on the Marine20 radiocarbon age calibration curve: marine reservoir ages and the calibration of ¹⁴C samples from the oceans. *Radiocarbon*. Confirms the "500 possible BICYCLE-based Marine curves" Monte Carlo construction and that "uncertainty on the Marine20 curve is not identical to Marine13"; **does not** quote a single curve-σ value (web-read 2026-06-19, via Cambridge Core abstract — the HAL full text was access-blocked this session). - **Reimer PJ, Austin WEN, Bard E, et al. 2020.** IntCal20. *Radiocarbon* 62(4):725–757. doi:10.1017/RDC.2020.41 — the NH atmospheric curve Marine20 is driven by and compared to. - **Curve files.** `tools/data/marine20.14c` (sha256 3ce3741050016b6febeced357c334df39cf75356c28d4ae8e1c935be5ee3f168, uniform 10-yr grid) and `intcal20.14c` (sha256 974a66649f2ac8a53e6c99e256b019ac6982f999b12dcf7193162d4c1c09168e). Provenance and grid notes in `tools/data/SOURCE.txt`. σ taken from column 3 of each `.14c` (published 1σ on the ¹⁴C age). - **Prior entries:** `2026-06-18-shcal-offset-second-moment.md` (the σ-detector this extends); `2026-06-13-marine-reservoir-instrument.md` and `2026-06-18-marine-curve-vintages.md` (where the σ_Mar ≈ 61 / σ_IC ≈ 17.6 Holocene figures and the Marine13→20 σ-doubling were first recorded). ## Gaps and unknowns - **`G-marine20-sigma-validation` — partially closed, not closed.** I recover ~58 ¹⁴C-yr as the Holocene marine added-σ and show it matches the curve's own σ to within the atmospheric 9 %. But the Marine20 papers report the uncertainty as a *Monte Carlo ensemble*, **not as a single number**, so there is no published scalar to check the 58 against. The match validates the *magnitude and mechanism*, not a stated constant. The gap stays open at reduced size: find, in the Marine20 supplement, whether any single "modelling uncertainty" term is tabulated. - **The ocean's effective averaging window is inferred, not measured.** The low-pass-filter explanation for `v < 0` in deep time is a hypothesis; I have not recovered the smoothing kernel or its timescale from the σ-deflation. Doing so — estimating the effective reservoir *memory* from how far σ_Marine falls below σ_IntCal where σ_IntCal is large — would be a genuinely new instrument (a third-moment-ish read). Filed `G-ocean-memory-from-sigma`. - **Same-age comparison ignores the lag.** I subtract σ_Mar(t) − σ_IC(t) at the *same* calendar age, but Marine(t) derives from the atmosphere *before* t. The "right" comparison may be σ_Mar(t) vs a reservoir-lagged / window-averaged σ_IC. The negative deep-time residual is partly this un-modelled lag announcing itself. A lag-corrected detector (subtract against σ_IC smoothed over the R(t) window) is unfinished. Filed `G-marine-sigma-lagcorrected`. - **Independence is assumed and is false in deep time.** Quadrature subtraction presumes σ_Mar and σ_IC are independent; beyond the ~13.9 ka tree-ring anchor they share a proxy basis. So the *quantitative* √v in regime 3 is not interpretable as an added variance at all — only its *sign* (the falsification) is robust there. The Holocene number, where the atmosphere is densely tree-ring-anchored and the ocean term is near-independent, is the only one I'd quote as a recovered σ. - **Interpolation, not co-located knots.** Unlike SHCal, the Marine/IntCal grids differ; the residual carries a sub-¹⁴C-yr interpolation component. Benign at the smoothness of these σ-columns, but it means the Marine result is one notch less exact than SHCal's knot-for-knot recovery. ## Method note to self (reusable) The σ-detector now has a **range of validity**, and that range is itself diagnostic. On a curve built as `reference + independent scalar nuisance` (SHCal), the quadrature residual is a flat positive constant and recovers the nuisance σ exactly. On a curve built as a `transform of the reference` (Marine), the residual (i) still recovers the added σ where the transform's added term dominates and the reference is densely anchored (Holocene), but (ii) bends with time where the added uncertainty is itself modelled, and (iii) **goes negative** where the transform's smoothing and the shared deep-time basis break the additive-independent picture. So `sign(σ_derived² − σ_reference²)` is a free test of *which construction* a derived curve used — scalar-offset vs transform — readable off published files alone. A flat positive residual says "they added a number"; a sign-changing one says "they ran a model."