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