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