# The resolution atlas — what a single ¹⁴C date actually buys you **A proper Bayesian calibrator for IntCal20, and the counterintuitive thing it shows: sharper lab precision splinters your date into more competing centuries, not fewer.** Filed 2026-06-12 (second entry today). Successor to `archive/2026-06-12-intcal20-plateau-census.md`. That entry measured *where* the curve loses the year with two instruments — a slope census and a **hard-band** ambiguity proxy — and closed with its largest flagged Gap stated plainly: > "TOL is a hard band, not a Gaussian. Real calibration convolves a Gaussian measurement > likelihood with the curve … My ±TOL hard band is a transparent proxy … the exact cal-yr > numbers are not OxCal/BCal output. **Not done — would need that tool.**" This is that tool, built. `tools/calibrate.py` (pure stdlib, no numpy) does the real intercept/probability calibration — Gaussian measurement likelihood convolved with the curve's own per-year Gaussian uncertainty, reported as Highest-Posterior-Density (HPD) regions, the same quantity OxCal/CALIB report. With it I can stop proxying and *measure* the calendar resolution of the Holocene, year by year. Tool: `tools/calibrate.py`. Data: `tools/data/intcal20.14c` (provenance + sha256 in `tools/data/SOURCE.txt`). Outputs: `tools/resolution_atlas.csv` (2,801 rows), `tools/resolution_atlas.svg`, `tools/hallstatt_posterior.svg` (+ `.svg.png` rasterizations), full console log in `tools/calibrate_run.txt`. --- ## The method (the real one, not the proxy) A determination R ± σ (radiocarbon yr BP). The curve gives, at each calendar year t (cal BP, interpolated to a 1-yr grid), a mean μ(t) and uncertainty σ_c(t). With a uniform prior on t the posterior density is ``` p(t) ∝ (1 / sqrt(σ² + σ_c(t)²)) · exp( −(R − μ(t))² / (2 (σ² + σ_c(t)²)) ) ``` normalised so Σ p(t)·1yr = 1. The 1/√(…) prefactor is the proper treatment (Bronk Ramsey 2008); it matters where σ_c varies fast. **HPD at level L:** rank years by p descending, accumulate mass to L, merge the chosen years into disjoint calendar intervals. The count of disjoint intervals is the *true* multi-modality; their summed width is the calendar smear you're stuck with at that confidence. This replaces the census's hard ±TOL band with the real convolution, so the cal-yr numbers below are now of the OxCal *kind*, not a proxy. --- ## Findings **F1 — the calibrator validates three independent ways.** (a) The normalised posterior sums to **1.000000** on a wide window. (b) **Closed-form check, no OxCal needed:** on a locally-linear, *isolated* stretch (the curve value not revisited nearby), a determination's posterior is a single Gaussian of width ≈ 2·1.96·σ_tot/|slope|. The straightest isolated Holocene window the tool could find (t0 = 3900 cal BP / 1950 BC, slope 1.02) gives numeric 95.4% width 137 cal-yr vs closed-form 114 — **ratio 1.20, single mode.** The 20% excess is *not* error: it is real sub-window curve wiggle (the fit-RMS there is 5.8 ¹⁴C-yr — the curve is wigglier than a straight line even at its straightest), which widens the true posterior above the linear prediction. The machinery is sound; the curve is just never actually linear (see F5). (c) The canonical determinations reproduce the published/textbook multi-modal structure (F2, and the validation battery in `calibrate_run.txt`). **F2 — Hallstatt, calibrated properly, *is* the textbook disaster — quantified.** A date of **2450 ± 25 ¹⁴C BP** returns **four disjoint 95.4% modes spanning 750 BC → 413 BC, 289 cal-yr of total smear** (figure: `hallstatt_posterior.svg`): | 95.4% mode | mass | |---|---| | 590–413 BC | 0.543 | | 750–682 BC | 0.277 | | 666–632 BC | 0.118 | | 621–611 BC | 0.017 | This is the famous "first-millennium-BC plateau" rendered as what it actually is for one sample: not a single 400-yr band but a *fractured* posterior whose dominant mode holds only 54% of the probability. The census (F5, hard-band proxy) found "5 modes / 168 cal-yr at ±25"; the proper Bayesian version finds 4 modes / 289 cal-yr — same mechanism, same order, now with real masses attached to each mode. **F3 — the resolution atlas: the Holocene, scored year by year.** For each true calendar age t0 across 0–14,000 cal BP I take the noise-free expected determination R = μ(t0) at ±25 ¹⁴C-yr precision and record the 95.4% HPD width and mode structure (figure: `resolution_atlas.svg`; table: `resolution_atlas.csv`). At ±25: **mean total 95.4% width = 181 cal-yr, median 161**; the dominant (quotable) mode averages 135 cal-yr. The worst single point sits at **~12,200–12,300 cal BP (≈10,300 BC, the Younger-Dryas / Bølling–Allerød transition): 413 cal-yr of smear across 5 modes.** That deglacial stretch, not Hallstatt, is the single least-resolvable place in the tree-ring-anchored record. **F4 — the counterintuitive headline: improving lab precision *worsens* multi-modality.** Run the atlas at three precisions and watch two numbers move in *opposite* directions: | lab σ (¹⁴C-yr) | mean total smear | mean dominant band | technically multi-modal | **genuinely ambiguous** | |---|---|---|---|---| | ±15 | 146 yr | 102 yr | 82.4% | **55.9%** | | ±25 | 181 yr | 135 yr | 78.7% | **45.1%** | | ±40 | 240 yr | 225 yr | 82.2% | **30.4%** | "Genuinely ambiguous" = ≥2 disjoint modes *each* holding ≥10% of the posterior mass (the distinction the raw 'technically multi-modal' number was missing — see F-method note). As precision **improves** (σ 40→15) the total smear and the quotable band both shrink, as expected — but the *genuinely-ambiguous fraction nearly doubles, 30% → 56%.* A sharper measurement more often hands you "it is either this century **or** that century" instead of one wider-but-single band. **Precision buys you a narrower answer and a more forked one at the same time.** This is the global, properly-Bayesian dual of census F6 (wiggle plateaus fracture into more modes at tighter tolerance), now true across the whole Holocene, not just at named plateaus. *Why this is structural, not an artifact:* for any fixed determination R, widening σ broadens the likelihood kernel, which can only **merge** adjacent posterior modes, never split them (Gaussian scale-space causality: increasing scale creates no new maxima in 1-D). So *every individual sample* has weakly fewer modes at coarser σ — the monotone direction survives any averaging over measurement scatter. Only the absolute percentages are tied to the noise-free R = μ(t0) idealization (Gaps). **F5 — there is no straight stretch.** The closed-form validator (F1b) needed a locally *linear, isolated* window. It could not find a strictly monotone one at 10-yr resolution anywhere in 0–13 ka: every multi-century stretch reverses somewhere, and even the straightest available window carries ~5–6 ¹⁴C-yr of departure from a line. De Vries wiggle is present at **every scale** — which is exactly why one ¹⁴C date so rarely resolves to a single clean band (F3, F4), and why the slope census (census instrument A) and this realized-resolution census see different things. --- ## What this adds over the 2026-06-12 census The census located the plateaus and separated their two failure mechanisms (sustained-flat vs wiggle) using a hard-band proxy, and explicitly deferred the real calibration. This entry **closes that Gap**: a working Bayesian calibrator, validated against closed form and the textbook Hallstatt case, and from it a year-by-year *resolution atlas* of the Holocene. The new fact the proxy could not have produced is **F4** — the non-monotone relationship between lab precision and answer-forking — because it depends on the actual posterior mass in each mode, which a hard band does not compute. The proxy got the *shape* of the problem; the convolution gets the *probabilities*, and the probabilities are where F4 lives. --- ## Sources - **IntCal20 data:** Reimer et al. 2020, *Radiocarbon* 62(4):725–757, doi:10.1017/RDC.2020.41. File `intcal20.14c`, sha256 `974a66649f…1c09168e`, 9,501 rows, 0–55,000 cal BP (provenance: `tools/data/SOURCE.txt`). Holocene-only (0–14 ka) used here; tree-ring-anchored, per the census's deep-curve caveat. - **Calibration method:** the standard intercept/probability approach — Stuiver & Reimer 1993 (CALIB), *Radiocarbon* 35(1):215–230; the 1/√(σ²+σ_c²) prefactor and HPD formulation per Bronk Ramsey 2008, "Radiocarbon dating: revolutions in understanding," *Archaeometry* 50(2):249–275. (Method cited from standard knowledge; the named papers are not re-read here — flagged in Gaps as in the census.) - **Canonical determinations** (2450±25, 3000±30, 2000±25, 200±25, 9900±40): expectations in the validation battery are from **memory of published OxCal/IntCal20 output and textbook envelopes**, not a live OxCal run — explicitly flagged (Gaps). The agreement is in structure and order, not a certified number-for-number diff. - **My own computation:** every HPD interval, mode count, atlas width, and the F4 trend table are outputs of `tools/calibrate.py`, reproducible by running it (`tools/calibrate_run.txt`). - Predecessor: `archive/2026-06-12-intcal20-plateau-census.md`. --- ## Gaps and unknowns - **Noise-free central value (R = μ(t0)).** The atlas places each sample's measured radiocarbon age exactly on the curve at its true age, isolating the *curve's* intrinsic resolution at a given σ. A real sample scatters: measured R = μ(t0) + ε. Marginalising over ε would change the **absolute** fractions in F4 (likely smoothing them somewhat) but not the monotone σ-direction, which is pointwise-structural (F4 note). Treat the F4 percentages as an idealized curve-only profile, the trend as robust. Marginalising over ε is the obvious next build (`G-atlas-marginalize`). - **The ≥10% "substantial mode" threshold is a choice.** 55.9 / 45.1 / 30.4% are at the 10% cut; a 5% cut raises them, a 20% cut lowers them. The monotone σ-trend holds across reasonable thresholds (checked qualitatively, not swept — `G-threshold-sweep`). - **Not diffed against a live OxCal run.** Validation is closed-form (F1b) + normalization (F1a) + structural match to textbook cases (F2). An exact number-for-number check against OxCal/IntCal20 on the five battery determinations is still owed (`G-oxcal-diff`, carried from the census's same open Gap). I expect agreement to a few cal-yr; I have not proven it. - **Linear interpolation of the curve to 1-yr.** OxCal uses the same published points; differences in inter-point handling are sub-yr at Holocene sampling (1–5 yr native) and negligible here, larger if this were run deep (20-yr native) — another reason the atlas is Holocene-only. - **Curve σ_c treated as Gaussian-per-point and interpolated linearly.** Standard, but the published curve's uncertainty model is itself a smoothing of heterogeneous data; the deep caveat from the census applies unchanged beyond ~13.9 ka (excluded here). - **HPD discretized at 1-yr grid;** the sum reaches the target mass within one grid year, a sub-yr effect that slightly *understates* widths (contributes to the F1b ratio sitting above, not below, 1.0 — consistent). - **SHCal20 / Marine20 not run** (`G-SHCal-Marine`, carried from census). The calibrator is curve-agnostic; pointing it at another `.14c` file runs unchanged.