# Preregistered analysis plan: Pharmacist direct-authority naloxone laws and attenuation under fentanyl dominance (WONDER age-adjusted rates)

## Relation to prior preregistration (do not reuse)
This is a **new** preregistration. It does **not** reuse `prereg:7c7a61a8083de417055f927de2e96402ff34284e856671f5de4ae8bab0141001` (log entry 211) or the sealed crude-rate bundle (log entry 212). That earlier plan named age-adjusted rates as preferred but the sealed analysis used crude rates (mkiang + VSRR) after WONDER export failed, and those crude-rate DiD results were already observed. Because results were peeked under a different outcome measure, this follow-up locks a distinct plan around the now-available CDC WONDER age-adjusted exports before any estimation on those exports.

## Question
In U.S. states (including DC), do pharmacist *direct-authority* (prescriptive) naloxone access laws reduce **CDC WONDER age-adjusted** opioid overdose mortality before synthetic opioids dominate a state's overdose mix, and does that protective association attenuate to null once synthetic opioids (ICD-10 T40.4) account for ≥50% of that state's opioid overdose deaths?

## Population and window (locked)
- Units: 50 U.S. states + District of Columbia (51 jurisdictions).
- Years: calendar years **2008 through 2021** inclusive.
- State of **residence** (WONDER), final (non-provisional) Multiple Cause of Death datasets D77 (bridged-race, years 2008–2020) and D157 (single-race, year 2021), as documented in plan/QUERY.md.

## Outcome (locked)
- Primary outcome Y_st: **WONDER age-adjusted** opioid overdose death rate per 100,000 (2000 U.S. standard population), column `age_adjusted_rate` in the pinned export.
- Opioid overdose definition (WONDER form): underlying cause in {X40–X44, X60–X64, X85, Y10–Y14} AND multiple-cause any of {T40.0, T40.1, T40.2, T40.3, T40.4, T40.6} (exact code lists in plan/QUERY.md).
- Synthetic share: T40.4-involved overdose deaths / opioid-overdose deaths in the same state-year, from the pinned T40.4 export / opioid export (`t40_4_share` when status is observed).
- SyntheticDominant_st = 1 if t40_4_share ≥ 0.50; else 0.
- **Pinned input digests (required):**
  - `opioid_aa_state_year_2008_2021.csv` SHA-256 `2f3054741e865a3d049dc2d3dc2044881752a524be5487bf088e61c17a262eb8`
  - `t40_4_state_year_2008_2021.csv` SHA-256 `8b755cdbeb35d7ba454c35fbb95fc8de25bc6699448dd87dfc2b9fbaea5f8072`
- Query specification vendored as `plan/QUERY.md` (form settings for D77/D157).

## Suppression / missingness handling (locked before estimation)
WONDER suppresses or marks unreliable small counts. Primary analysis **drops** any state-year where either:
1. `age_adjusted_rate_status` ≠ `observed` (includes `unreliable` and `suppressed`; age-adjusted rate missing), **or**
2. `t40_4_share_status` ≠ `observed` (includes `unavailable` when T40.4 deaths are suppressed so the share cannot be computed).

No imputation of suppressed cells. Dropped cells are listed in results before estimation outputs are interpreted. Secondary sensitivity (reported only, not in the success rule): among rows with observed age-adjusted rates but unavailable T40.4 share, treat SyntheticDominant as 0 and re-estimate; this is descriptive only.

## Exposure (locked)
- Primary treatment: pharmacist *direct-authority* / prescriptive authority to furnish naloxone without a patient-specific prescription, from OPTIC-Vetted Naloxone Policy Data (`nal_Rx_prescriptive_auth` / `date_nal_Rx_prescriptive_auth` in WEB_NAL_1990-2023).
- Law_st = 1 in state s year t if the calendar year is strictly after the year of `date_nal_Rx_prescriptive_auth`, OR (same calendar year and the effective date's month-day is on or before July 1 — mid-year convention: treat as treated in year t if effective on or before July 1 of year t; otherwise first treated year is t+1). States never adopting remain untreated (Law=0 always).
- Secondary contrast (reported, not used for the primary success rule): statewide protocol / standing order (`nal_protocol_standing` / `date_nal_protocol_standing`) and any naloxone access law (`any_nal` / `date_any_nal`), same timing rule.
- Policy digests pinned in the reporting bundle's `data/SOURCES.json` (same OPTIC zip/xlsx as the crude-rate project).

## Estimand and model (locked)
- Two-way fixed effects (state and year) linear DiD on Y_st.
- Primary specification (attenuation / interaction):
  Y_st = β0 SyntheticDominant_st + β1 Law_st + β2 (Law_st × SyntheticDominant_st) + α_s + γ_t + ε_st
- Implied ATT when SyntheticDominant=0: β1.
- Implied ATT when SyntheticDominant=1: β1 + β2.
- Cluster-robust standard errors by state (51 clusters; fewer if some states drop out entirely after suppression filters — report n_states used).
- Estimation: OLS with state and year dummies (Python `statsmodels`). No weights in the primary model. Sensitivity (secondary): population-weighted OLS using WONDER population.

## Baselines and falsification (locked)
- Comparison group: never-treated and not-yet-treated state-years under two-way FE (standard TWFE DiD).
- Event-study falsification for the direct-authority law (relative years −4..+4, binning ≤−5 and ≥+5), estimated on the primary analysis sample with year and state FE; reference lead −1 = 0. Pre-trend check: joint Wald test that leads −4..−2 are jointly zero; falsification, not a gate beyond the success rule below.

## Null and success rules (locked before results)
- Scientific null for the attenuation claim: no attenuation — the protective association (if any) is the same before and after SyntheticDominant (i.e. β2 = 0), and/or the ATT in SyntheticDominant years remains as protective as in non-dominant years.
- **Support** if ALL hold:
  1. β1 < 0 and its 95% CI excludes 0 (protective association before dominance);
  2. (β1 + β2) has 95% CI that excludes a reduction as large as −5 deaths per 100k (lower bound of CI for ATT_dominant > −5), AND β2 > 0 with 95% CI excluding 0 (attenuation toward null / less protective);
  3. Event-study joint pre-trend test for leads −4..−2 does not reject at α=0.05.
- **Refute / negative_result** if: β1 fails the protective criterion above, OR attenuation as defined fails (β2 not significantly positive with ATT_dominant CI excluding large reductions), under the numeric rules above.
- **Inconclusive** otherwise (mixed signs, wide CIs, or failed pre-trends with otherwise mixed evidence).

## Data provenance (locked)
1. Mortality/outcome: CDC WONDER MCD exports pinned above (age-adjusted rates and T40.4 shares); QUERY.md documents form settings.
2. Policy: RAND-USC OPTIC-Vetted Naloxone Policy Data, WEB_NAL_1990-2023.
3. Digests of all vendored inputs recorded in `data/SOURCES.json` at publish time.

## Exclusions / no peeking
- Do not change the SyntheticDominant threshold (0.50), ICD sets, mid-year July 1 rule, year window, suppression drop rule, or success thresholds after seeing DiD estimates.
- Do not reuse the crude-rate prereg or treat crude-rate peeking as license to retune this plan.
- One primary question; secondary standing-order / any-NAL and population-weighted models are descriptive only.

## Report-by
2026-10-21
