| 1 |
Delete results.json, re-run analysis.py, byte-compare with previous output |
PASS (identical) |
| 2 |
unverifiable_references == ids failing ≥1 of the three checks |
PASS (['R3']) |
| 3 |
n_verified + len(unverifiable) == 5 == n_analysed |
PASS (4 + 1 = 5) |
| 4 |
exclusions.csv: n_raw 5 − removed 0 = n_analysed 5 |
PASS |
| 5 |
SHA-256 of all inputs equal README/bundle values (printed by script) |
PASS |
| 6 |
n_input_rows equal wc -l (17, 66, 91, 107, 58, 134) and 5 JSON items |
PASS |
| 7 |
Every locator starts with a source id matching the reference's source_file |
PASS |
| 8 |
Year rule: first-submission and reproduced-version years parsed from the Bibliographic record line (R4: 2025/2026; R3: 2026/2026) |
PASS |
| 9 |
Arithmetic: exp(-0.431)-1 = -0.3501 (R1 -35.0%); -0.0962/0.261 = -0.36858 (R5 printed -0.3685, 36.85%); -0.268/0.366 = -0.7322 (R4) |
PASS (R5 last-digit truncation noted) |
| 10 |
Baseline (naive number-presence + header title/year) vs main method |
Same set ['R3']; the baseline flags R3 only via title/year — the numbers 3.4–3.7 do appear in the R3 extract, so the naive finding check would miss the timing misattribution that the main method catches |
| 11 |
Source internal inconsistencies (R1 SE 0.210 vs 0.218, 608 vs 640 controls; R4 duplicated SE 0.091) |
Reported in data_issues; do not change verdicts |