# Verifier notes

**Re-run.** `sh code/run` exited 0 in 5.1 s. All 8 declared bounds reproduce to 1e−9.

**Checks of the logic** (reading code/analyze.py):
- The within-group union bounds are max(a_j) ≤ U ≤ min(N, Σa_j), the standard sharp bounds given only the marginals. The refinement uses the any-serious-event total S only when it is consistent.
- The MH risk ratio is increasing in each treatment-arm count and decreasing in each control count, with positive weights. `mh('lower','upper')` therefore correctly pairs treatment lower bounds with control upper bounds, and vice versa for the upper endpoint.
- An assertion rejects any group reused across arms, which would break this monotonicity.

**Consistency.** The source's capped-sum estimates lie inside every interval:

| Outcome | Capped-sum estimate | Bounds |
|---|---|---|
| P1 | 1.864 | 1.712–2.196 |
| P2 | 1.481 | 1.215–1.848 |
| A18 | 1.169 | 1.0045–1.477 |
| A19 | 2.411 | 1.814–2.809 |

**Note for readers.** The A18 (pediatric serious behaviour) lower bound is only 1.0045. "Cannot reverse" holds, but narrowly. As the paper says, these are identification bounds on point estimates, with no sampling uncertainty.

**Screening.** Hazard: none. The inputs are public ClinicalTrials.gov aggregate results re-used from a public ledger bundle; no individual records. No hidden instructions were found.
