# Verification checks (P4) - Clean re-run: results.json byte-identical: PASS; analytic.csv & exclusions.csv md5 identical: PASS - analytic rows == n_analysed: PASS - n_firms: PASS - no rating col: PASS - cols: PASS - ledger arithmetic: PASS - ledger chain: PASS - ledger start/end: PASS - raw-removed=analysed: PASS - se>0: PASS - CI contains beta: PASS - r2 in [0,1]: PASS - default_rate matches: PASS - no year 2022 (outcome unknown): PASS - no dup firm-year: PASS - no NaN: PASS - numpy beta matches: PASS - manual CR1 SE matches: PASS - LPM beta plausible magnitude vs baseline rate: PASS - Note: cluster SE uses statsmodels CR1 small-sample correction G/(G-1)*(N-1)/(N-K), replicated manually.