# Locked analysis plan: did the rain change around the rocket sites?

Written 28 October 2026, before any inside/outside contrast was computed. Hashed in `analysis/PLAN-LOCKED.sha256`. Any later change is listed in `analysis/DEVIATIONS.md`.

## Question
Does May–September rainfall in the ANM 0.01° daily grid change after the authority's own year label for a launch site, inside the aviation circle around it, compared with the ring just outside? Is the ground downwind of a site drier than the ground upwind of it? Rain only: this cannot test hail or crop savings.

## Treatment table
- Sites: the 86 of 105 chronology entries (`data/site-chronology-aip-name-candidates.csv`) with an exact normalised-name AIP centre. Onset label g = source year. First treated season = g+1; season g is dropped for that site (commissioning year).
- Unknown onset (excluded from treated and control): the 33 AIP centres with no chronology match and any entry labelled 2022–2024. Cells within R of them are removed from every set.
- Circle radius R = 10 km (primary), 6 km and 12 km (sensitivity). Great-circle distance from the AIP centre. Circles are an assumption, not a protection map.

## Cells and outcomes
- Cells: the 483×972 grid, NaN = outside domain, never zero.
- Season = 1 May–30 Sep, labelled by grid date. Primary outcome Y1 = season total (mm). Secondary Y2 = days with ≥20 mm (window changes from 18–18 UTC to 06–06 UTC from 2023, so Y2 is flagged weaker).
- Years 1995–2024 for the main test. 2025 (from the 06–06 UTC file) only in the reversal check.

## Design A (local, primary)
Cell onset = earliest g+1 over known circles that cover it. For each cohort g (all sites with label g):
- treated cells: onset = g+1;
- control cells: never inside any circle (known or unknown) and within 2R of a cohort-g site;
- pre-years g−10…g−1 (needs ≥5 years inside 1995+), post-years g+1…min(g+8, 2024).
θ_g = ln(mean post/pre of treated) − ln(mean post/pre of control), means over cells and years. Overall θ = average of θ_g weighted by number of sites in the cohort (cohorts with <20 treated cells dropped and listed).

## Design B (downwind, "the next village")
Cells 10–40 km from the nearest known centre, outside every circle, classified by the bearing from that nearest centre: downwind = 55°–145° (storm motion toward the east, west-north-west flow), upwind = 235°–325°. Same cohort, pre/post and aggregation as A, θ^B = change(downwind) − change(upwind) in ln mean.

## Inference
Placebo constellations: each of the six operating units (Prahova, Vrancea, Iași, Timiș, Mureș, Oltenia) is shifted rigidly by a random offset (±3° in latitude and longitude), keeping its internal spacing and onset years. A draw is accepted only if every shifted centre lies on valid data and ≥2R away from all real and unknown centres. 2,000 accepted draws. Report observed θ, placebo mean, SD, two-sided permutation p (rank of |θ|), 95% placebo interval and the weakest effect detectable at 80% power (≈2.8 × placebo SD). A "no effect" statement is allowed only with that bound.

## Event profile
Mean of treated/control ratio by year relative to onset, −10…+8, scaled to the pre-period mean (pre-trend check).

## Reversal check (secondary, descriptive)
Treated/control ratio in 2025 against the 2018–2024 mean for cohorts already active. The 2025 pause rests on an unauthenticated media copy and is labelled so.

## Gauge-only check
ANM API station histories (160 stations). Season total counted only when ≥90 % of the 153 days are valid; trace (−1) = 0; sentinels dropped. Stations ≤10 km from a known centre against stations ≥25 km from every centre, same cohort windows (pseudo-onset taken from the nearest treated station's cohort for controls). Descriptive: station counts, ratios, bootstrap over stations.

## Grid diagnostic (before effects)
Compare grid values with station values at station cells, and measure how fast season-total anomalies decorrelate with distance, to state what the grid can resolve.
