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>
4.8 KiB
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/50constant, ρ undefined." After: re-anchored on the actual frozenbridge-federatedbranch (unique bridge per circuit seed →m_i=1→H_i≈0, constantc_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 posteriorHsits 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 1–2 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.pyuntouched. Only the prereg §7 prose and (in the earlier build stone) thebridge-federated-poolinstrument + helpers changed. The frozenbridge-federatedbranch 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₂Nexact) 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: concentrationc=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.