| Clean rerun of out/analysis.py reproduces results.json byte-identically |
PASS |
| Input SHA-256 unchanged after run |
PASS |
| beta_ci_low < beta_fe < beta_ci_high |
PASS |
| se_conventional > 0, se_cluster > 0 |
PASS |
| LSDV beta_fe equals two-way within-transform beta (diff < 1e-10) |
PASS |
| n_analysed = n_firms × n_years = 1200 (balanced) |
PASS |
| exclusion ledger: 1200 − 0 = 1200 = n_analysed |
PASS |
| manual cluster SE (all dummies counted) equals statsmodels LSDV cluster SE |
PASS |
| magnitude vs baseline: beta_fe (0.604) differs from beta_pooled (1.268); plausible if firm/year effects correlate with x; se_cluster/se_conventional = 1.38 consistent with within-firm dependence |
noted |