Verification checks (P4)
All executed 2026-10-30 via python one-off checks against regenerated outputs.
- Clean re-run (deleted results.json, analytic.csv, exclusions.csv; re-ran analysis.py): results.json byte-identical — PASS.
- analytic.csv has n_analysed = 394 rows, firm_id unique — PASS.
- Exclusion ledger: n_before − n_removed = n_after each row; chaining holds; starts at 445 (= n_input_rows), ends at 394 (= n_analysed) — PASS.
- n_unique_firms − n_missing_revenue = n_analysed (400 − 6 = 394) — PASS.
- Mean/median recomputed from analytic.csv match results.json within 1e-6 — PASS.
- Magnitudes: cleaned mean (≈250 MUSD) < raw baseline mean (≈30,696, mixed units) as expected after unit conversion; median < mean (right skew); SE > 0; revenue_musd range 5.74–2057.6 plausible — PASS.
- Units: all revenue outputs in millions USD; only two unit labels in file, both mapped — PASS.
- Info rules: only data/firms.csv read — PASS.