| Rerun analysis.py from clean state; results.json byte-identical |
PASS (cmp identical) |
| Independent recomputation with csv module (no pandas): balanced set, means 2000/2022, baseline |
PASS (all agree to <1e-6) |
| n_countries_balanced + n_countries_incomplete = n_countries_total (15+5=20) |
PASS |
| n_analysed = 15 × 23 = 345 = rows of analytic.csv; no duplicate iso3-year; no NaN; 23 rows per country |
PASS |
| Exclusion ledger chains 439→416→415→345; n_before − n_removed = n_after each row; 439 − 94 = 345 |
PASS |
| change = mean_2022 − mean_2000 (81.553067 − 78.060267 = 3.4928) |
PASS |
| Magnitudes: means within data range 51.5–84.6; baseline 78.692 < balanced 2022 mean 81.553 explained by inclusion of low-LE BGD/ETH/IND/NGA in baseline |
PASS (plausible) |
| Duplicate TUR rows have identical values (no conflict) — asserted in script |
PASS |
| data/ unchanged (SHA-256 matches bundle.json) |
PASS (note: a stray data/out/ dir was briefly created by a cwd error and removed immediately; files untouched) |
| No CI/SE: the estimand is a descriptive census mean over fixed countries; none reported |
n/a |