# ELECTION-01 protocol draft v0.1.1-draft

**STATUS:** PROPOSAL — responds to Claude review `c5df4c74` (ACCEPT_PROTOCOL_STRUCTURE; CHANGES_REQUESTED_BEFORE_FIT).  
**MODEL_CHANGE:** NO  
**SRP_SCORING_CHANGE:** NO — L1/M1 `score_authorized` untouched.  
**FITTING:** NOT AUTHORIZED  
**COVERAGE FREEZE:** NOT AUTHORIZED until this v0.1.1 is accepted  
**OUTCOME_TESTING:** NOT_YET_AUTHORIZED  

Parent: v0.1.0-draft. Integrity contract unchanged: sha256 `145046ff15faa3f6d71e07c817f1d68b4a8addcd7bafea6dbb98a44a0ba4227b`.

## Canonical hashed fields

`protocol_fields_sha256` = `492a32342c47a582a763baeed0fa7aacc36f311b77cb83f78df4d3df93f4f2ec`  
(canonical JSON over fields **excluding** the `protocol_fields_sha256` key: sort_keys=True, separators=(',', ':'), UTF-8)

## Claude c5df items → pins (all ten)

| # | Pin |
|---|-----|
| 1 | **M4 SRP-adjacent feature named:** `trust_fed_gov_precutoff_level` (pre-cutoff ANES/GSS trust-in-federal-government level). No substitute; missing → M4 ineligible that cycle. |
| 2 | **Eligibility objective:** ELIGIBLE iff ALL required families AVAILABLE_AT_T_MINUS_60 with hash + release_date≤cutoff; else INELIGIBLE. No case-by-case. |
| 3 | **Success threshold:** MAE improvement ≥ **1.5 pp** vs M0 AND paired-cycle bootstrap 90% CI excludes 0. |
| 4 | **Report BOTH** MAE (accuracy) and PIT-KS (calibration) when probabilistic; PIT alone ≠ success. |
| 5 | **Multiple testing:** BH FDR α=0.05 on family {M1,M2,M3,M4} vs M0 plus M4 vs M3. |
| 6 | **Baseline1 select:** LV → else RV → else All Adults; two-party renormalized; <3 pollsters → MISSING. |
| 7 | **Release-date unknown → INELIGIBLE** (fieldwork-only does not count). New negative control. |
| 8 | **1968 start rationale frozen** (FEC-grade series + poll density + third-party exercise); not revisitable via coverage. |
| 9 | **Target is two-party margin;** report `third_party_share_of_total` per cycle. |
| 10 | **Attempt ledger enforced** at `/docs/election01-attempt-ledger.json` (append-only sha256 chain). |

## Target

`100*(D-R)/(D+R)` pp on **two-party** ballots only. Also report `100*(Total-D-R)/Total`.

## Cutoff / timezone

Unchanged from v0.1.0: primary T−60; sensitivity T−30; `America/New_York` EOD inclusive.

## Local ladder (NOT SRP M1)

M0 = prior-election two-party margin (locked).  
M1_local = Baseline1 polls.  
M2_local = ≤2–3 preregistered fundamentals (list still freezes before fit).  
M3_local = polls + fundamentals.  
M4_local = M3 + `trust_fed_gov_precutoff_level` only. No rescue feature.

## Non-claims

No fitting · no predictive-power claims · null path preserved · separate from SRP Exp002 / L1–M1.

## Next

1. **Codex:** cross-check items 3, 5, 7 (threshold / FDR / availability).  
2. **Claude:** re-review v0.1.1 within one turn.  
3. **Astra:** final review before any fit or coverage-freeze.  
4. **Grok:** after ACCEPT, fill availability matrix under the objective eligibility rule — not before.
