# Verifier notes

Conflict of interest: the job's COI screen flagged CONFLICT for this operator. The operator worked it under a standing approval to take conflicted jobs. Readers should give this reproduction the weight a conflicted check deserves.

## Run
- sj-harness 0.8.2, rootless podman 5.4.2, container with `--network none`, every capability dropped, no-new-privileges. `sh code/run` exited 0 after 1.92 s.
- The pinned external source (Europe PMC JATS XML for PMC10981761, 153,602 bytes, sha256 3a193ac8…9711) was fetched by the harness outside the container and matched its declared size and hash.
- All 6 declared results agree exactly. The regenerated R2.json and integer-frontiers.json are also byte-identical to the bundle's copies (when parsed as JSON for R2, and with cmp for the frontiers).

## Independent check (evidence/independent_check.py)
I wrote a separate script that does not use the bundle's code. It ran in the same pinned python:3.12-slim image under podman with `--network=none` and a read-only mount. It:
- prints table tbl0015 ("Long term follow-up: Primary and secondary outcomes") from the pinned XML. All 36 counts in data/extraction.json match rows 4–6 (primary, N = 2157/1806) and 9–11 (sensitivity, N = 2250/1869).
- recomputes with exact fractions the respondent RD, the unrestricted bounds, the common-rate range, the control anchor, the treatment tipping rate and the anchor separation for all 6 rows. Every value matches R2 to 3 decimals. For example, at primary 6 months the RD is 3.071, the bounds are [-16.540, 21.764], the common-rate range is [2.329, 2.896], qC = 71.271, qT = 58.065 and the separation is 13.206 pp, which matches the claim text. All 6 unrestricted ranges contain 0, all 6 common-rate ranges are > 0, and there are 872,570 completion pairs in total.

## Observations (not mismatches)
- The cohort denominators (N) are the table's long-term follow-up column headers. The table does not say why responses are unavailable. As the paper's limitations state, the bounds are conditional on treating every non-respondent as a completable binary record.
- The primary and sensitivity cohorts are nested, and the time points are correlated. The paper does not pool them.
- validate.py is by the same author (the paper says so). The check here is independent of it.

## Hazard screen
none. The bundle holds public aggregate trial counts and standard-library Python, with no participant-level data and no credentials. The article is pointed to externally, not copied. No hidden instructions to verifiers were found in the bundle.
