# Calibration pre-registration anchors

External, tamper-evident anchoring of the SONAR pre-registered calibration artifacts, so that the
AZ shadow prediction and the promotion / interpretation policies are provably fixed **before** the
2026-07-21 Arizona result exists — verifiable by an outsider, not merely asserted.

## What is anchored

| File | SHA-256 (at anchoring time) | Proof |
|------|------------------------------|-------|
| `calibration/shadow_adjustments.json` | `663025e396c111ec16b809343d9cc09d9fa251102448996319d2ed77fc38a101` | `calibration/shadow_adjustments.json.ots` |
| `calibration/hypothesis_log.md` | `3ce29f1c026bfae316d68fd3aae8cc0fc0f8bf775a28b2354e5f8844e6c2aad0` | `calibration/hypothesis_log.md.ots` |
| `calibration/interpretation_addendum_2026-07-10.md` | `adce7c44a95184a1b58de48c443cbe8643d79526f29f2698491b35710af714d1` | `calibration/interpretation_addendum_2026-07-10.md.ots` |
| `calibration/confidence_shadow_preregistration_2026-07-10.md` | `172a868e120caeb55062efc627a4a66301c1e4076c7b633c39c3388660d5b63f` | `calibration/confidence_shadow_preregistration_2026-07-10.md.ots` |
| `calibration/county_pair_methodology_2026-07-10.md` | `2ec36a4c3a46c6bcdd61126b7cb02a7e604a779a9844f3b6bbc114d976e59567` | `calibration/county_pair_methodology_2026-07-10.md.ots` |
| `calibration/identity_linking_2026-07-11.md` | `51d7f3bdf086d12c8b553f95480a5c53b2f67d38d5e1fbb95dcec6a5565287d8` | `calibration/identity_linking_2026-07-11.md.ots` |
| `calibration/identity_linking_correction_2026-07-11.md` | `2374ffa452a7d2f2b5056de1253afd05986689831fc105f5f7e5b876daf0bea5` | `calibration/identity_linking_correction_2026-07-11.md.ots` |
| `calibration/comparator_addendum_2026-07-13.md` | `f2ff50545bd620e3f6f46647f34c09ca5c127e7505ecd2ccb67f14c11c2ba24f` | `calibration/comparator_addendum_2026-07-13.md.ots` |
| `calibration/zm_weighting_variants_2026-07-15.md` | `731958081555e86df6a9774779c62ea7e05698d4f2538ff210bd46deb9a384fd` | `calibration/zm_weighting_variants_2026-07-15.md.ots` |

`hypothesis_log.md` at this digest contains, blind to the AZ result:
- the logit-space magnitude-compression shadow (`k = 0.5286`, AZ shadow Biggs 78.3 / Schweikert 21.7);
- the **shadow promotion rule** (3 prospective in-regime pairs, shadow beats raw on margin error
  without flipping a correct winner call — mechanical, no operator discretion);
- the **AZ interpretation policy** for all four outcomes (raw wins / shadow wins / NPI beats both /
  everyone misses the winner), fixed before the result;
- the **pre-registered T-7 lock policy** (a market clearing the density threshold by T-7 locks
  automatically, no discretion — Wave 1 item 7).

`shadow_adjustments.json` at this digest contains the write-once AZ shadow prediction itself.

`interpretation_addendum_2026-07-10.md` at this digest contains, also blind to the AZ result, a
**boundary tie-break**: the anchored falsification text sets the overshrink bright line at
`actual >= 85` while glossing it as `shadow_mae > raw_mae`, but the exact raw/shadow midpoint is 85.1
— so on `[85.0, 85.1)` the two clauses disagree. The addendum fixes, in advance, that the bright line
governs there (REJECTED — overshrink, no promotion credit), resolving the conflict against our own
hypothesis. It **adds** to the anchored record; it modifies nothing. The two digests above are
unchanged by it, which is checkable with the `shasum` command below.

`confidence_shadow_preregistration_2026-07-10.md` at this digest fixes, before any certified pair has
scored it, the promotion rule and falsification conditions for the **confidence-propagation shadow**
(Wave 4 item 3): three prospective in-regime pairs, the shadow winning on margin error on every one,
no flipped winner call, and mean verdict confidence below 0.95 so the transform is given a chance to
be wrong. n = 0 at registration. It grants nothing and modifies nothing.

`comparator_addendum_2026-07-13.md` at this digest fixes, before the 2026-07-21 result, WHICH external
polling comparisons the us_arizona case study publishes: the **locked NPI benchmark** (72.7 / 27.3,
`as_of` 2026-05-07) stays immutable and is not re-locked, and the case study additionally publishes a
**latest-pre-election-poll comparator selected by rule** (latest field-end date, later release breaks
ties, two-way by decided-only normalization with undecided excluded), which as of the addendum is NPI
2026-07-07 (fielded Jun 29 to Jul 1): raw 60 / 10 / 26-undecided, two-way 85.7 / 14.3. Both comparisons
publish regardless of which flatters SONAR; prediction-market prices remain winner-probability context
only, never a share comparison; and the anchored interpretation branches are unchanged and keyed to the
locked values only. It adds to the record; it modifies nothing. The other digests above are unchanged
by it.

The `hypothesis_log.md` proof is a single authoritative stamp of the FINAL 2026-07-09 pre-result
content (all of the above in one file). An earlier intra-session stamp of the same file before the
lock-policy paragraph was added is superseded and not retained; the digest above is the one that
matches the committed file, and it was stamped ~12 days before the 2026-07-21 result — pre-registration
holds.

## How it is anchored — OpenTimestamps (Bitcoin-backed, permissionless)

Anchored on **2026-07-09** with the [OpenTimestamps](https://opentimestamps.org) client. OTS is
permissionless (no account, no fee): it commits each file's SHA-256 into public calendar servers that
aggregate submissions into the **Bitcoin blockchain**. Once the containing Bitcoin block is mined, the
`.ots` proof attests that the exact file content existed no later than that block's timestamp — a fact
no party (including us) can backdate or forge.

Calendar servers the stamps were submitted to (each an independent attestor):
`alice`/`bob`.btc.calendar.opentimestamps.org, `btc.calendar.catallaxy.com`,
`finney.calendar.eternitywall.com`.

### State

**The two 2026-07-09 proofs are Bitcoin-confirmed.** Upgraded and committed 2026-07-09; each `.ots`
now carries a full `BitcoinBlockHeaderAttestation` path, so the content is proven — to anyone, with
no trust in us — to predate the naming block, ~11 days before the 2026-07-21 result:

| Proof | Bitcoin blocks attesting |
|-------|--------------------------|
| `calibration/shadow_adjustments.json.ots` | 957350, 957352, 957354 |
| `calibration/hypothesis_log.md.ots` | 957359, 957360 |

(Several calendars attest independently, hence multiple blocks per proof. Some calendar
`PendingAttestation` entries remain alongside them; that is normal and does not weaken the Bitcoin
path — upgrading only *adds* paths, it can never change the committed digest.)

**The 2026-07-10 addendum proof is Bitcoin-confirmed.** Upgraded and committed 2026-07-10; it carries
a `BitcoinBlockHeaderAttestation` for block **957426**, so the tie-break is proven to predate that
block — eleven days before the 2026-07-21 Arizona result.

| Proof | Bitcoin block attesting |
|-------|-------------------------|
| `calibration/interpretation_addendum_2026-07-10.md.ots` | 957426 |

Three of its four calendars still show `PendingAttestation` (one reports a Bitcoin transaction
awaiting six confirmations). That is normal and does not weaken the attestation above: re-running
`ots upgrade` later only *adds* further Bitcoin paths, and can never change the committed digest.

**The 2026-07-10 confidence-shadow pre-registration proof is Bitcoin-confirmed.** Upgraded and
committed 2026-07-10; it carries `BitcoinBlockHeaderAttestation`s for blocks **957441** and
**957442**, proving the promotion rule predates them — eleven days before the 2026-07-21 Arizona
result. Two of its four calendars still show `PendingAttestation`; that is normal and does not weaken
the blocks above.

**The 2026-07-13 comparator-addendum proof is Bitcoin-confirmed.** Stamped 2026-07-13, upgraded and
committed the same day; the `.ots` now carries `BitcoinBlockHeaderAttestation`s for blocks **957856,
957863, 957867, 957884**, so the addendum's content is proven — to anyone, with no trust in us — to
predate those blocks, ~8 days before the 2026-07-21 Arizona result. The committed SHA-256 above is
unchanged by the upgrade (upgrading only *adds* Bitcoin paths, it can never change the digest).

### How an outsider verifies (no trust in us required)

```
# 1. confirm the file content matches the anchored digest
shasum -a 256 calibration/shadow_adjustments.json calibration/hypothesis_log.md \
              calibration/interpretation_addendum_2026-07-10.md \
              calibration/confidence_shadow_preregistration_2026-07-10.md
#   -> must equal the SHA-256 values in the table above

# 2. verify the OpenTimestamps proof against Bitcoin
ots verify calibration/shadow_adjustments.json.ots
ots verify calibration/hypothesis_log.md.ots
ots verify calibration/interpretation_addendum_2026-07-10.md.ots
ots verify calibration/confidence_shadow_preregistration_2026-07-10.md.ots  # pending until upgraded
ots verify calibration/county_pair_methodology_2026-07-10.md.ots
ots verify calibration/identity_linking_2026-07-11.md.ots  # pending until upgraded
ots verify calibration/identity_linking_correction_2026-07-11.md.ots  # pending until upgraded
ots verify calibration/comparator_addendum_2026-07-13.md.ots
#   -> reports the Bitcoin block time the content is proven to predate
```
(`ots verify` needs a Bitcoin node; without one, `ots info <proof>.ots` still shows whether a
`BitcoinBlockHeaderAttestation` is present and which block it names.)

If any anchored file is edited after anchoring, its SHA-256 changes and step 1 fails against this
record — which is the point. Any future revision must be a NEW dated entry with its own fresh anchor;
the anchored digests above are frozen. The 2026-07-10 addendum is exactly that pattern: it adds a
new dated, separately-anchored file rather than touching either 2026-07-09 digest.

## Secondary anchor — git + GitHub

This commit (and its push to `github.com/ryrodg/sonar`) is itself a timestamped, append-only record:
the commit embeds these file contents and GitHub records the push time server-side. The OTS proof is
the primary, trust-minimized anchor; the git history is a corroborating one.
