SS3: RQ2 rule RATIFIED + offline sender-posterior loader (synthetic-tested)

Flip docs/stage-05-rq2-posterior-clarification.md PROPOSED->RATIFIED (operator
Andre, 2026-07-20, ratified while BLIND to RQ2 data — honest prereg-completion of
a gap the freeze left, not HARKing). Substance of the construction unchanged.

Add cmd_chat/sor/analysis/confirm_load_rq2.py: reconstructs each circuit's spec
OFFLINE from the persisted per_circuit_seeds via deterministic assemble(), derives
the observation-consistent anonymity set A_i (uniform / max-entropy -> [1]*m_i),
per-circuit Miller-Madow H_i, and the willing-bridge concentration series — the
exact inputs confirm.rq2_p1_delta_h (ΔH, two-sided) and rq2_p3_funnel (Spearman ρ)
consume. Grounded only in the ratified rule ([Serjantov2002]/[Diaz2002]).

BLINDING preserved (prereg §2): ratification unblocks CODE, not results. The
collect_* real-data entrypoints are BLIND-GATED and NOT run; the reconstruction is
unit-tested on SYNTHETIC specs/seeds only (test_sor_confirm_load_rq2.py, 6 passed;
full SOR suite 172 passed). Frozen prereg untouched; no RQ2 statistic computed.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
leetcrypt
2026-07-20 08:49:51 -07:00
parent 4976aed3e5
commit bd7e3764dc
4 changed files with 369 additions and 8 deletions
+11 -7
View File
@@ -1,7 +1,8 @@
# Stage-05 analysis clarification — RQ2 per-circuit adversary sender-posterior
**Status: PROPOSED operator (Andre) ratification PENDING. NOT ratified; does
NOT edit the frozen prereg** (`sor-consent-prereg.md`, SHA
**Status: RATIFIED by operator (Andre) 2026-07-20, while BLIND to RQ2 data
(battery mid-collection, 0 RQ2 stats computed). Does NOT edit the frozen prereg**
(`sor-consent-prereg.md`, SHA
`f22331a72e0d0ccf38b787e63acabbe9d666456ec76076787a6d545c3193425b`).
**Pre-specified BLIND to RQ2 outcomes — drafted 2026-07-20**, while the confirmatory
@@ -115,11 +116,14 @@ So under this rule RQ2-P1/P3 are computed once, post-battery, from the sealed da
## Operator decision required
Ratify (or amend) the **observation-consistent-set + uniform-mass** construction
above. On ratification this note flips to RATIFIED and the offline RQ2 loader
(mirroring `confirm_load.py`'s RQ1 path) computes RQ2-P1/P3 once from the sealed
records. **Until then RQ2 stays BLIND — no RQ2 confirmatory statistic is computed,
inspected, or reported.**
**RATIFIED** (operator Andre, 2026-07-20, while BLIND): the
**observation-consistent-set + uniform-mass** construction above is adopted as
the RQ2 per-circuit posterior. The offline RQ2 loader (mirroring
`confirm_load.py`'s RQ1 path) computes RQ2-P1/P3 once from the sealed records.
Ratification unblocks the **CODE only** — RQ2 stays BLIND until the battery
completes: **no real RQ2 confirmatory statistic is computed, inspected, or
reported until all data has landed** (`battery-results.json` present, or 180
cell-runs each with `metrics.json`).
### Citations
- **[Serjantov2002]** Serjantov, A., & Danezis, G. (2002). Towards an Information