# Verification checks (P4) — all PASS 1. Clean re-run: deleted results.json, analytic.csv, exclusions.csv; re-ran analysis.py; results.json byte-identical, CSVs identical (md5). PASS 2. Independent recomputation (pivot of iso3×year after dedup, dropna rows): same balanced set, mean_2000_balanced, mean_2022_balanced, mean_2022_all_available (|diff|<1e-6). PASS 3. change_2000_2022_balanced = mean_2022_balanced − mean_2000_balanced. PASS 4. n_analysed = 345 = 15 countries × 23 years = rows of analytic.csv; no duplicate (iso3, year); no missing values. PASS 5. Exclusion ledger: n_before − n_removed = n_after each row; chained; starts at 439 (= n_input_rows), ends at 345 (= n_analysed). 439 − (23+1+70) = 345. PASS 6. n_countries_balanced + n_countries_incomplete = n_countries_total (15+5=20). PASS 7. Magnitudes: balanced means within observed range (2022: 77.43–84.00); baseline 2022 (78.692) below balanced 2022 (81.553), as expected since the baseline adds four lower-LE countries (BGD, ETH, IND, NGA) plus CHE. PASS 8. Sensitivity note: naive 2022 mean on raw rows (TUR counted twice) = 78.6396 ≠ 78.692 — confirms dedup matters for the baseline. Informational. 9. No standard errors / CIs produced (descriptive estimand, no sampling model) — nothing to check.