| Clean re-run: deleted results.json, table1.csv, figure1.png; re-ran analysis.py; results.json byte-identical (cmp) and table1.csv SHA-256 identical |
PASS |
| FE 95% CI contains FE estimate (-0.396 ≤ -0.188 ≤ 0.020) |
PASS |
| RE 95% CI contains RE estimate |
PASS |
| All SEs positive (fe_se, re_se, item SEs) |
PASS |
| k_extracted=5, k_harmonised=4, k_pooled=2 consistent with item flags |
PASS |
| poolable ⇔ harmonised_se non-null; harmonisable ⇔ harmonised_estimate non-null |
PASS |
| τ²=0 ⇒ RE = FE |
PASS |
| I² = max(0,(Q−df)/Q)·100 with df=1 (Q=0.324 < 1 ⇒ I²=0) |
PASS |
| pooled_pct_change_re = 100(exp(re)−1) |
PASS |
| Pooled θ lies between the two component θ (−0.240, −0.118) |
PASS |
| S4 approximate SE reproduces printed p=0.471 under normal test |
PASS |
| S1 printed SE 0.14 reproduces printed p=0.086 (normal approx 0.0865) |
PASS |
| Baseline unweighted mean of poolable θ (−0.179) close to FE (−0.188): magnitude sanity |
PASS |
n_input_rows equal wc -l counts / 5 items |
PASS |
| Exclusion chain 5→5→4→2 sums (n_before − n_removed = n_after; chained) and final n_after = k_pooled |
PASS |
| Sensitivity: S1 SE from CI (0.1378) changes RE to −0.189 [−0.395, 0.017]: conclusion unchanged |
PASS |
| Information rule: no value taken from figures or outside the extracts (all values located by line in analysis.py printout) |
PASS |
| Known source inconsistencies (S1 Mean LogToT, S1 N 93 vs 96, S3 ratio vs printed %, S4 ratio vs printed %, S4 column units, S5 legend) recorded in data_issues |
PASS (reported, not fixable) |