# Verification checks (P4) | check | outcome | |---|---| | Clean re-run of analysis.py reproduces results.json byte-identically | PASS | | len(analytic.csv) == n_analysed (1800) | PASS | | analytic.csv distinct firms == n_firms (300) | PASS | | rating_2025 absent from analytic.csv | PASS | | exclusions: n_before − n_removed = n_after every row | PASS | | exclusions chain: n_before[i] = n_after[i−1]; starts at 2140, ends at 1800 | PASS | | se_leverage_cluster > 0 | PASS | | 95% CI [0.184, 0.344] contains beta_leverage 0.264 | PASS | | analytic max year 2021 (outcome years ≤ 2022 data cut) | PASS | | no duplicate firm-years in analytic | PASS | | default_rate equals mean of default_next in analytic.csv | PASS | | magnitude: beta 0.264 per unit leverage vs baseline rate 0.121 — plausible for LPM (0.1 leverage ≈ +2.6 pp) | PASS |