Verification checks (P4)
Reproducibility: out/ deliverables deleted, analysis.py run twice from workspace root; results.json, table1.csv and stdout byte-identical (cmp) -> PASS. (Note: an early comparison using /tmp was contaminated by another process writing to /tmp; redone inside out/state/scratch.)
| check | outcome | detail |
|---|---|---|
| FE recomputed independently | PASS | -0.188143 vs -0.188143 |
| Q recomputed | PASS | 0.323686 |
| tau2=0 since Q<df -> RE==FE | PASS | Q=0.3237<1 |
| I2 rule | PASS | I2=0.0 |
| SEs positive | PASS | 0.1063,0.1063 |
| CIs contain estimates | PASS | [-0.3964,0.0201] |
| CI width = 21.96SE | PASS | |
| significance flag consistent | PASS | False |
| pct change | PASS | -17.150% |
| counts | PASS | 5,4,2 |
| poolable implies SE non-null; not harmonisable implies null theta | PASS | |
| reason_if_not present iff not poolable | PASS | |
| S1 SE vs CI | PASS | 0.1378 vs 0.14 |
| S1 p consistent with b/SE | PASS | 0.0865 vs 0.086 |
| S4 approx SE reproduces p | PASS | |
| S3 printed % vs ratio of means | PASS | -0.2981 vs -0.2979 (rounding) |
| S4 printed % vs ratio of means | PASS | 0.1125 vs 0.111 (small discrepancy, reported) |
| FE within range of pooled inputs | PASS | -0.240..-0.118 |
| magnitude vs baseline unweighted mean of pooled | PASS | -0.1881 vs -0.1788 |
| exclusion ledger chain | PASS | 5->5->4->2 |
| table1 has 5 rows and 12 cols | PASS |
No failed checks. Two small source-internal discrepancies (S3, S4 printed % vs ratio of printed means) are recorded as data_issues; sensitivity keys show negligible effect on FE (sensitivity_s4_ratio_of_means, sensitivity_s1_se_from_ci).