RQ2-P3: re-word §7 calibration gate (naive→mechanical mix), re-run GREEN

Operator ruling (Andre, 2026-07-21): the STOP was correct and the diagnosis
right — §7 items 1-2 did not fail because the instrument is broken, but because
they were worded under the naive-funnel prior. Under the ratified posterior the
pool is a MIX (shared bridge → shared exit_signature → larger anonymity set →
higher H). Corrected pre-freeze, logged transparently (no HARKing).

- rq2p3-mechanism-prereg.md §7: item 1 re-anchored on the FROZEN bridge-federated
  branch (injective fresh-bridge → m_i=1 → H≈0, constant c=1/C — a pool draws with
  replacement so it cannot reproduce the zero-variance degeneracy); item 2 B=1 →
  c=1.0 AND high H (maximal mix, "low H" refuted by construction); added a §7 scope
  note (the gate validates the INSTRUMENT and must NOT pre-assert the H-vs-c sign —
  that stays the two-sided confirmatory question H1/H2). Confirmatory hypotheses
  unchanged.
- docs/stage-05-rq2p3-gate-clarification.md: dated deviation-rationale log (cites
  the dry-pass output, no number invented; records the two-sided direction-agnostic
  pre-commitment is untouched; the mix ρ 0→+0.838 is an exploratory finding that
  strengthens note-unique-bridge-artifact.md).
- rq2p3_calibration.py: item-1 teeth moved to frozen_branch_regression() on the
  untouched bridge-federated branch; item-2 now asserts c=1.0 AND high H; added
  all_pass aggregate. confirm.py/stats.py/confirm_load_rq2.py untouched.

Re-run: all four gate items PASS with real teeth (all_pass=True). Synthetic/DRY
only, no confirmatory record read. FREEZE STAYS A HUMAN GATE: §10 empty, no
confirmatory RQ2-P3 cell until operator records the SHA-256 + signs off. Lead
prereg SHA f22331a72e... untouched; worktree-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
leetcrypt
2026-07-21 19:48:55 -07:00
parent 1d99e7f9a9
commit 7ab3466878
4 changed files with 203 additions and 44 deletions
+29 -3
View File
@@ -112,15 +112,41 @@ Run order randomized within cell; deterministic from an ordering seed distinct f
## 7. Instrument-validation gate (boolean; blocks the confirmatory run)
> **Re-worded 2026-07-21, pre-freeze (deviation logged in `stage-05-rq2p3-gate-clarification.md`).**
> Items 12 were originally written under the naive-funnel prior ("pool reproduces the
> zero-variance degeneracy"; "B=1 → low H"). Both are mechanically wrong under the *ratified*
> posterior and were corrected **before freeze** — see the §7 scope note below. No hypothesis
> changed (H1/H2/H3 in §2 stay two-sided/direction-agnostic); only a mis-specified validation
> gate was fixed. The original dry-pass output that exposed this is cited in the deviation log.
All must pass **before** any confirmatory cell:
1. **Reproduce the lead degeneracy.** `B = 50, alpha = 0``c_i ≈ 1/50` constant, ρ undefined
— a regression check that this instrument reproduces the published RQ2-P3 result.
2. **Extremes.** `B = 1` → all circuits share one bridge → `c = 1.0`, minimal set, low H.
1. **Reproduce the lead degeneracy — on the FROZEN branch, not the pool.** The lead
zero-variance degeneracy is a property of the **injective fresh-bridge map** (a unique
bridge per circuit seed = effectively no reuse). A finite pool of **any** size `B` draws
**with replacement**, so birthday collisions make concentration non-constant and ρ defined —
a pool **cannot and must not** be expected to reproduce the fresh-bridge degeneracy. The
regression check therefore anchors on the actual frozen `bridge-federated` branch
(UNTOUCHED): it must still yield **unique exit-signatures → `m_i = 1``H_i ≈ 0`, constant
`c_i = 1/C`**. That is the real "lead reproduces" teeth.
2. **B = 1 boundary.** `B = 1` → all circuits share the one bridge → **`c = 1.0`** (keep this
concentration tooth). Under the ratified posterior the anonymity set is then **all** circuits
sharing the exit house, so `H_i` sits at the **HIGH end (maximal mix)** — the "low H" gloss
was the naive-funnel error and is refuted **by construction** here. Expect high H.
3. **Monotonicity.** Realized mean top-3 concentration is **monotone decreasing in B** and
**increasing in alpha**, across the sweep, on a dry (non-confirmatory) calibration pass.
4. **Entropy calibration unchanged.** H = log₂N on equiprobable synthetic senders (inherited).
**§7 scope note (why items 12 do NOT assert an H-vs-c sign).** This gate validates the
**instrument** — concentration varies monotonically (item 3), entropy is exact (item 4), the
frozen branch is untouched (item 1), and the B=1 boundary hits `c = 1.0` (item 2). It **must not
pre-assert the sign of H-vs-concentration**, because that sign *is* the two-sided confirmatory
question (H1/H2). Baking "expect low H at high concentration" into a validation gate would be
**funnel-circular**; removing it makes the study **more** rigorous, not less. The confirmatory
hypotheses in §2 stay two-sided/direction-agnostic — **UNCHANGED**. (Note: the dry calibration
pass already *previews* a mix, ρ 0→+0.838 across the sweep; this is surfaced openly as an
exploratory preview and does **not** relax the two-sided pre-commitment.)
If any gate item fails → STOP, do not report; surface as NEEDS-OPERATOR.
## 8. Analysis plan
+72
View File
@@ -0,0 +1,72 @@
# Stage-05 deviation log — RQ2-P3 §7 calibration-gate re-word (naive→mechanical mix)
**Status: DEVIATION (pre-freeze), 2026-07-21 — operator-ruled (Andre), logged transparently.**
This edits a **DRAFT** prereg (`rq2p3-mechanism-prereg.md`, its own slug `sor-consent-rq2p3`,
**not yet frozen**, §10 empty). It **does not** touch the frozen lead prereg
(`sor-consent-prereg.md`, SHA `f22331a72e0d0ccf38b787e63acabbe9d666456ec76076787a6d545c3193425b`).
Because the RQ2-P3 prereg is pre-freeze, correcting a mis-specified validation gate is legitimate —
but it is recorded here rather than silent-edited, per the no-HARKing rail.
## What was re-worded
`rq2p3-mechanism-prereg.md` §7 (instrument-validation gate), items 1 and 2, plus a new §7 scope
note. Items 3 (monotonicity) and 4 (entropy) are unchanged.
- **Item 1 — before:** "Reproduce the lead degeneracy. `B=50, alpha=0``c_i ≈ 1/50` constant,
ρ undefined." **After:** re-anchored on the actual frozen `bridge-federated` branch (unique
bridge per circuit seed → `m_i=1``H_i≈0`, constant `c_i=1/C`). A **pool of any B** draws
with replacement → birthday collisions → non-constant concentration → ρ **defined**, so a pool
cannot and must not reproduce the injective fresh-bridge zero-variance degeneracy.
- **Item 2 — before:** "`B=1` → all circuits share one bridge → `c=1.0`, minimal set, low H."
**After:** keep the concentration tooth (`c=1.0`), but the anonymity set is then **all**
circuits sharing the exit house, so under the ratified posterior `H` sits at the **HIGH end
(maximal mix)**. The "low H" gloss was the naive-funnel error, refuted by construction.
- **New §7 scope note:** the gate validates the **instrument** (concentration varies, entropy
exact, frozen branch untouched, B=1 boundary at c=1.0) and **must not** pre-assert the sign of
H-vs-concentration — that sign *is* the two-sided confirmatory question (H1/H2). Baking
"expect low H at high concentration" into a validation gate would be funnel-circular.
## Why (the mechanism)
The adversary observes `exit_signature = (exit_house, bridge_label)`; the per-circuit anonymity
set `m_i` = distinct entry nodes among circuits **sharing** that signature
(`confirm_load_rq2.py`). The fresh-bridge lead instrument gives every circuit a unique bridge →
unique signature → `m_i=1``H≈0`; a **finite shared pool** makes circuits share signatures →
larger sets → **higher H**. So a shared bridge acts as a **mix**: more concentration *raises*
anonymity, the opposite of the naive funnel. Items 12 as originally worded encoded the funnel
prior and were therefore mechanically wrong. This is exactly the prediction in
`note-unique-bridge-artifact.md`, now confirmed at calibration.
## What is NOT changed (the integrity teeth)
- **Confirmatory hypotheses H1/H2/H3 (§2) stay two-sided / direction-agnostic.** No hypothesis
was added, dropped, or re-signed. This is a validation-gate fix, **not** HARKing. Removing the
circular sign-assertion makes the study **more** rigorous, not less.
- **Analysis code unchanged:** `confirm_load_rq2.py`, `confirm.py`, `stats.py` untouched. Only
the prereg §7 prose and (in the earlier build stone) the `bridge-federated-pool` instrument +
helpers changed. The frozen `bridge-federated` branch is bit-reproducible.
- **Freeze stays a human gate:** §10 remains empty; no confirmatory RQ2-P3 cell runs until Andre
records the SHA-256 and signs off.
## Calibration output cited (no number invented)
The dry, synthetic-only §7 calibration pass (`cmd_chat/sor/analysis/rq2p3_calibration.py`, build
stone commit `1d99e7f`) produced, verbatim:
- Item 3 (monotonicity) **PASS**; item 4 (entropy `H=log₂N` exact) **PASS**.
- Anchor `B=50, alpha=0`: concentration stdev **0.0198** (non-constant), Spearman ρ **+0.838** —
a mix, *not* the fresh-bridge zero-variance degeneracy (this is what exposed the mis-wording).
- `B=1`: concentration `c=1.0` ✓, mean entropy **2.54 bits** vs the fresh-bridge reference
**0.0 bits** — HIGH, contradicting the naive "low H".
- Full sweep Spearman ρ (B∈{2,4,8}×α∈{0,1,2}, in grid order): 0.00, 0.231, 0.291, 0.341, 0.526,
0.597, 0.482, 0.744, 0.714 → all **≥ 0**: a robust mix across the whole grid.
## Exploratory status of the mix preview
The MIX (ρ 0→+0.838) is an **EXPLORATORY** calibration preview that **strengthens**
`note-unique-bridge-artifact.md` (the lead "shrink" is plausibly a unique-bridge artifact). It is
**not** a confirmatory result and does **not** relax the two-sided pre-commitment: the
confirmatory battery will still quantify the dose-response two-sided. Honest disclosure the paper
must carry: because the dry pass already previews mix, the confirmatory run quantifies a
dose-response **already visible at calibration** — stated openly; the pre-registered
direction-agnosticism stands.