# 3350 - Does the combined evidence rule out a generalized vaccine-autism effect?

**Documented verdict** (rule `qa/generalized_claim_20260929/3350_rule.json`, SHA-256 `cc258040d37463efd47368cbba5d24ac73f01522462962e3a69b6afceb297cb6`; as written before any computation: SHA-256 `41c24aecb14848187c2a3dbd0bba77dc354195c5a464dec9a08db747a1dee49b`). The generalized claim: vaccination multiplies autism risk by one factor R in exposed children, in every context. For a common effect across the 15 pooled contexts, under the rule:

- **RR 1.05: NOT EXCLUDED.** P(common RR > 1.05) = 0.343 under the assumed bias floors (A1), 0.317 under placebo-calibrated bias (A2), 0.406 under doubled floors (A3). Excluded in: none; not excluded in: A1, A2, A2u, A3, A5, A6, all 15 A4 fits.
- **RR 1.10: NOT EXCLUDED.** P(common RR > 1.10) = 0.265 under the assumed bias floors (A1), 0.221 under placebo-calibrated bias (A2), 0.348 under doubled floors (A3). Excluded in: none; not excluded in: A1, A2, A2u, A3, A5, A6, all 15 A4 fits.
- **RR 1.25: NOT EXCLUDED.** P(common RR > 1.25) = 0.108 under the assumed bias floors (A1), 0.058 under placebo-calibrated bias (A2), 0.207 under doubled floors (A3). Excluded in: none; not excluded in: A1, A2, A2u, A3, A5, A6, all 15 A4 fits.
- **RR 1.50: EXCLUDED under the assumed floors (not robust: fails in A3, A4).** P(common RR > 1.50) = 0.018 under the assumed bias floors (A1), 0.003 under placebo-calibrated bias (A2), 0.078 under doubled floors (A3). Excluded in: A1, A2, A2u, A5, A6; not excluded in: A3, A4 without Colombia varicella.

In plain terms: if vaccination multiplied autism risk by the same factor in all 15 pooled contexts, the combined data put that factor at 0.964 (0.637-1.455) (posterior median and 95% credible interval) under the assumed bias allowances. A common factor of 1.5 is excluded under those allowances (P = 0.018) and under the placebo-calibrated ones (P = 0.003), but not robustly: doubling every bias allowance gives an upper limit of 1.76, and leaving out Colombia varicella gives 1.55. A common factor of 1.25 is not excluded (P = 0.11 under the assumed allowances, 0.06 under the placebo-calibrated ones), and neither are 1.10 (P = 0.27) or 1.05 (P = 0.34).

The limits come from the bias model, not from a shortage of data. Like the primary, the test allows a systematic error shared by every context (SD 0.15 on the log scale), which data of this kind cannot estimate: even infinitely precise data centred on RR 1.00 would leave the 97.5th percentile of a common effect at 1.333. Under the placebo-calibrated context allowances the upper limit (1.330) is already at that floor. The stronger reading, that the combined data rule out moderate effects and leave only very small ones possible, is therefore not supported under the project's own assumed bias allowances. What the data do support is narrower: a large common effect (RR 1.5 or more) is improbable under the assumed allowances, the central estimate is just below 1, and a common effect of 1.25 keeps a posterior probability of 0.11. Only by removing the shared bias and also cutting the context allowances to their placebo-calibrated values (a decomposition, not a documented test) does the upper limit come down to 1.104, just above 1.10.

Two further documented tests point the same way. One effect per product (B) is far less constrained: under the assumed allowances no product's common effect excludes RR 1.5 (upper limits 1.61 to 2.76). And the hypothesis that every pooled context is harmed by at least c (C) has Bayes factors of 0.00148 to 0.00972 against the all-null model when the harms may be scattered and large (half-normal scale log 2), but only 0.391 to 0.845 (inconclusive) when every context is harmed by nearly the same small amount (scale 0.05), because the shared bias absorbs a uniform shift. Under the rule the all-harmful hypothesis is therefore scale-dependent at c = 1.05, 1.10 and 1.25.

## The documented rule

The rule was written at 2026-09-29T15:06:08 (file time 2026-09-29T15:06:09), before any computation of these tests, as `qa/generalized_claim_20260929/3340_rule.json` (SHA-256 `41c24aecb14848187c2a3dbd0bba77dc354195c5a464dec9a08db747a1dee49b`). The analysis was then renumbered 3340 -> 3350 at the coordinator's request (coordinator request: a concurrent workflow uses script numbers 3331-3346): those bytes are kept unchanged, with their file time, as `qa/generalized_claim_20260929/3350_rule_before_renumbering.json`, and `qa/generalized_claim_20260929/3350_rule.json` (SHA-256 `cc258040d37463efd47368cbba5d24ac73f01522462962e3a69b6afceb297cb6`, file time 2026-09-29T15:35:03) is the same text with the 11 occurrences of the identifier 3340 replaced by 3350 and nothing else. The script checks that relation byte for byte, embeds both hashes, and refuses to compute or report if either rule file or any input hashed in the rule changes. Every 3350 computation came after the rule: the first stored output is `project_results/generalized_claim_3350/kernel_models/C_H0_floors_p18.json` (2026-09-29T15:14:36) and the first fit started at 2026-09-29T15:15:43; smoke tests of the likelihood code ran from about 15:08. Before the rule was written only published outputs were read and one saved primary heterogeneity component was recomputed (identical to the saved grid) to confirm the machinery is called as the primary calls it.

**Amendment 1** (`qa/generalized_claim_20260929/3350_amendment_1_quadrature.json`, SHA-256 `2ba6c71e1d4bd32ca7b2ddc522b4e1f7983cf1ccd12a07372356ba8d1d5a7aa1`, written 2026-09-29T16:59:29): the documented verification of A1 failed at 1e-6 because of a quadrature bias, not a coding error (see Verification). The amendment changes only numerical integration (knot-aligned quadrature for the A and B rows and for the independent implementation) and fixes a file-naming bug in two C model ids; estimands, priors, thresholds, rules and tolerance are unchanged. It was written after all A, B and T4 fits and 41 of the 59 C models had been computed and inspected. Every A and B row is also summarised with the documented trapezoid weights (JSON `pre_declared_trapezoid`); the largest difference between the two on any log-scale quantile or probability is 3.2e-05, and no exclusion flag, category or call differs (the script refuses to report otherwise).

- Exclusion rule: "excluded at 95%" if and only if the posterior 97.5th percentile of the target is below the threshold (RR 1.05, 1.10, 1.25, 1.50); P(target > threshold) is reported beside every call.
- Categories for the generalized claim: EXCLUDED (robust) = A1 excludes and so do A3, all fifteen A4 fits, A5 and A6. EXCLUDED under the assumed floors (not robust) = A1 excludes but at least one of those does not. EXCLUDED only under placebo-calibrated bias SDs = A1 does not exclude, A2 does. NOT EXCLUDED = neither A1 nor A2 excludes.
- Same data as the primary: 15 pooled contexts in 14 likelihoods (5,133 cells), the same curves, cells, exposure paths and gate decisions. U.S. PCV and RotaShield share the joint U.S. likelihood; U.S. rotavirus 2006 stays inside it, untied (not pooled); Japan MMR is in the core.

## A. One common effect in every context

Model: one log rate ratio theta shared by every pooled context (vaccinated vs unvaccinated child: the individual scale of the cohort-mixture likelihoods). Each context's likelihood parameter is theta plus a shared bias, a country-group bias (0.20 for the UK trio and for the Canadian pair, 0.25 for the Sweden-Germany care bridge, as in the primary) and its context bias; all three are integrated out. Shared bias N(0, 0.15^2) as in the primary; prior theta ~ N(0, log 2). No product or context heterogeneity. Computationally it is the primary likelihood (`global_hierarchy.component`, imported read-only) with its product and context heterogeneity SDs set to zero, evaluated on a 1201-point grid with the p18 core draws (p20 where the documented ESS rule applies).

| Row | Context bias SDs | Contexts | Common RR (95% CrI) | P>1.05 | P>1.10 | P>1.25 | P>1.50 | Min. core ESS | Power |
|---|---|---|---|---|---|---|---|---|---|
| **A1 assumed floors (primary test)** | 0.35 / 0.70 | 15 | 0.964 (0.637-1.455) | 0.343 | 0.265 | 0.108 | 0.018 | 181 | p18 |
| A2 placebo-calibrated (tau rms) | 0.04-0.08 | 15 | 0.974 (0.713-1.330) | 0.317 | 0.221 | 0.058 | 0.003 | 43 (<50) | p20 |
| A2u placebo-calibrated (tau 97.5th pct) | 0.11-0.27 | 15 | 0.956 (0.682-1.339) | 0.293 | 0.208 | 0.060 | 0.004 | 138 | p18 |
| A3 doubled floors | 0.70 / 1.40 | 15 | 0.977 (0.540-1.763) | 0.406 | 0.348 | 0.207 | 0.078 | 52 | p18 |
| A5 without the 4 strict placebo failures | 0.35 / 0.70 | 11 | 0.950 (0.601-1.496) | 0.334 | 0.264 | 0.119 | 0.024 | 183 | p18 |
| A6 without U.S. PCV | 0.35 / 0.70 | 14 | 0.955 (0.627-1.449) | 0.328 | 0.253 | 0.103 | 0.017 | 144 | p18 |
| A4 leave one out (15 fits; ranges) | 0.35 / 0.70 | 14 | medians 0.944-1.010; upper limits 1.435-1.553 | 0.312-0.429 | 0.241-0.348 | 0.097-0.166 | 0.015-0.036 | 144 or more | p18 |
| Primary: heterogeneous shared mean (a different estimand) | 0.35 / 0.70 | 15 | 0.957 (0.599-1.517) | 0.345 | 0.275 | 0.126 | 0.028 | 106 | p18 |

Source: `3350_generalized_claim_tests.csv` rows A1, A2, A2u, A3, A5, A6 and A4_* (fits `project_results/generalized_claim_3350/fits/<row>_p<power>.npz`, computed by `07_analysis_code/3350_generalized_claim_tests.py`). Primary row: `project_results/global_integration/hierarchy/hierarchy_final_p18.json` headline; its P>1.05 and P>1.50 by `global_hierarchy.exceedance` on `hierarchy_final_grid_p18.npz`. Context bias SDs: register/education outcomes 0.35; care/composition/survey outcomes and the three core contexts 0.70 (`placebo_calibration.json` bias_sd); A2 / A2u use each context's placebo-calibrated shrunk tau (rms / 97.5th percentile) from the same file; country-group biases (0.20 / 0.25) and the shared bias (0.15) are the same in every row except A3, which doubles the context and group allowances.

Leave-one-out: the upper limit is highest without Colombia varicella (1.553) and lowest without Scotland rotavirus (1.435). Every leave-one-out fit has a minimum relevant core ESS of at least 50.

Documented ESS rule: A2 had a minimum relevant core ESS of 7.9 at p18 (0.973 (0.712-1.329)), so it is refitted and reported at p20 (minimum relevant core ESS there 43.0, still below 50: reported with the flag; the p18 fit is kept as `A2_p18_diagnostic`).

### Threshold calls

| RR threshold | A1 | A2 | A2u | A3 | all 15 A4 fits | A5 | A6 | Category (documented) |
|---|---|---|---|---|---|---|---|---|
| 1.05 | no | no | no | no | no | no | no | NOT EXCLUDED |
| 1.10 | no | no | no | no | no | no | no | NOT EXCLUDED |
| 1.25 | no | no | no | no | no | no | no | NOT EXCLUDED |
| 1.50 | yes | yes | yes | no | no | yes | yes | EXCLUDED under the assumed floors (not robust: fails in A3, A4) |

"yes" = the 97.5th percentile of the common RR is below the threshold (source: the rows above).

## D. Why this interval differs from the primary's shared mean

The primary's shared mean (0.957 (0.599-1.517)) and the common effect (0.964 (0.637-1.455)) are different estimands. The primary gives each product (PCV, RotaShield, modern rotavirus, MMR, maternal DTaP, varicella, schedule) its own effect scattered around a shared mean (product SD 0.1, 0.35 or 0.7 and context SD 0.1 or 0.35, averaged with equal prior weight) and reports the centre of that scatter. Seven products, four of them with a single context, locate that centre only loosely when the scatter may be large. The common-effect model assumes there is no scatter: every context measures the same number, so all 15 pool fully.

The one assumption that buys the narrowing is therefore no between-product and no between-context heterogeneity. Everything else is identical: the same likelihoods, the same context bias allowances, the same shared bias. The narrowing is modest (95% interval width on the log scale 0.930 to 0.826; upper limit 1.517 to 1.455) for two reasons: the primary already puts most of its weight on small heterogeneity (the table: given its smallest component its shared mean is already close to the common effect), and the bias allowances, which both models keep, account for most of the remaining width.

| Primary heterogeneity component (product SD / context SD) | Posterior weight in the primary | Shared mean (95% CrI) given this component alone |
|---|---|---|
| 0.1 / 0.1 | 0.581 | 0.961 (0.627-1.471) |
| 0.1 / 0.35 | 0.126 | 0.968 (0.607-1.540) |
| 0.35 / 0.1 | 0.204 | 0.942 (0.570-1.554) |
| 0.35 / 0.35 | 0.053 | 0.950 (0.557-1.615) |
| 0.7 / 0.1 | 0.027 | 0.928 (0.489-1.759) |
| 0.7 / 0.35 | 0.009 | 0.934 (0.482-1.806) |

Source: post-processing of `project_results/global_integration/hierarchy/hierarchy_final_grid_p18.npz` (the six reference components one at a time, same priors; `international_hierarchy.summarize`). A1 is the limit product SD = context SD = 0, outside that grid.

Model comparison (a diagnostic, not a test): the log marginal likelihood of A1 exceeds the primary's by 1.53 (Bayes factor 4.64). The data do not favour heterogeneous products over one common effect, so the common-effect assumption is not contradicted by them; a Bayes factor this small does not establish it either. Source: A1 row and the primary's log marginal likelihood (-6721.363, `international_hierarchy.summarize` on the saved grid).

## What limits exclusion: the bias allowances, above all the shared bias

Every context's likelihood parameter is its true effect plus biases, and the shared bias moves every context together, so the data identify only the sum a = theta + shared bias, never theta alone. Given a, theta keeps a posterior SD of 0.147 (log scale) however much data there are. Two consequences follow. Even infinitely precise data centred on RR 1.00 would leave the 97.5th percentile of a common effect at 1.333. And to exclude a threshold at 95%, the pooled data would have to be centred below RR 1.132 (for 1.50), 0.935 (1.25), 0.818 (1.10) or 0.779 (1.05), even with no other uncertainty.

The pooled centre under A1 is RR 0.962; at that centre the shared bias alone would give an upper limit of 1.285, and the assumed context allowances (0.35 / 0.70) widen it to 1.455. With the placebo-calibrated context allowances (A2) the upper limit is 1.330, at the shared-bias floor.

Without the shared bias (decomposition only, not a test): 0.963 (0.705-1.310) with the assumed floors and 0.972 (0.858-1.104) with the placebo-calibrated allowances. Even then 1.25 is not excluded under the assumed floors, and 1.10 is not excluded under the calibrated allowances (upper limit 1.104).

Source: the floor is analytic (theta | a ~ N(lambda a, lambda 0.15^2), lambda = log2^2 / (log2^2 + 0.15^2); `3350_generalized_claim_tests.json` T.T2_shared_bias_floor); the no-shared-bias rows are `T1_A1` and `T1_A2` of the CSV (the A1 / A2 likelihood values with the shared bias set to zero). They are a decomposition, not a documented test: nothing in these data justifies dropping the shared bias.

## B. One common effect per product

Each product's contexts share one effect theta_P (prior N(0, log 2), the same bias structure, no heterogeneity); the other products' contexts are removed (core contexts untied: their data stay in the importance sample under the centre-free prior, a factor constant in theta_P). A single-context product is that context's own data plus its bias allowance; its unbiased own-data posterior (3320) is shown beside it. These are product-specific statements, not the generalized claim.

| Product | Contexts | assumed floors: RR (95% CrI) | Excluded | Placebo-calibrated: RR (95% CrI) | Excluded | 3320 own data (no bias) |
|---|---|---|---|---|---|---|
| Modern rotavirus | England rotavirus, Scotland rotavirus, Northern Ireland rotavirus, Canada rotavirus (excl. Quebec), Quebec rotavirus | 1.032 (0.611-1.734) | none | 1.006 (0.666-1.517) | none |  |
| Modern rotavirus + U.S. 2006 | England rotavirus, Scotland rotavirus, Northern Ireland rotavirus, Canada rotavirus (excl. Quebec), Quebec rotavirus, U.S. rotavirus 2006 | 1.009 (0.631-1.608) | none | 0.976 (0.690-1.380) (ESS 12 at p20, <50) | 1.50 |  |
| PCV | U.S. PCV, Sweden PCV, Germany PCV, Hong Kong PCV | 1.023 (0.491-2.131) | none | 1.045 (0.752-1.457) | 1.50 |  |
| MMR | Japan MMR, Czechia MMR | 0.938 (0.319-2.764) (ESS 6 at p20, <50) | none | 0.899 (0.344-2.315) (ESS 1 at p20, <50) | none |  |
| RotaShield | U.S. RotaShield | 0.919 (0.312-2.656) (ESS 23 at p20, <50) | none | 0.889 (0.373-1.925) (ESS 2 at p20, <50) | none | 0.872 (0.361-1.832) |
| Maternal DTaP | Brazil maternal DTaP | 0.874 (0.323-2.366) | none | 0.777 (0.474-1.271) | 1.50 | 0.766 (0.513-1.145) |
| Varicella | Colombia varicella | 0.807 (0.394-1.637) | none | 0.773 (0.474-1.219) | 1.25, 1.50 | 0.764 (0.509-1.074) |
| Schedule | Tanzania schedule | 1.066 (0.461-2.257) | none | 1.099 (0.526-1.845) | none | 1.118 (0.543-1.687) |

Source: `3350_generalized_claim_tests.csv` rows B_* (fits in `project_results/generalized_claim_3350/fits`; p20 where the ESS rule applied, the p18 fits kept as `*_p18_diagnostic` rows). Own data: `hierarchy_final_p18.json` per_context unpooled and `us_alone_diagnostics_p18.json` (both reproduced by this script). "Excluded" lists the thresholds whose 97.5th-percentile rule is met. Modern rotavirus + U.S. 2006 ties U.S. rotavirus 2006, which is not pool-ready (lead decision 2026-09-25): a sensitivity only.

Under the assumed floors no product-level common effect excludes even RR 1.5 (upper limits 1.61 to 2.76): a product-specific claim (for example, that PCV multiplies autism risk by 1.5) is far less constrained than the generalized claim, because each product has one to five contexts, each carrying a bias allowance of 0.35 or 0.70. Under the placebo-calibrated allowances: Modern rotavirus + U.S. 2006 excludes 1.50; PCV excludes 1.50; Maternal DTaP excludes 1.50; Varicella excludes 1.25 and 1.50; the others exclude none.

Documented ESS rule: B_MMR_floors stays below 50 at p20 (minimum relevant core ESS 6); B_RotaShield_floors stays below 50 at p20 (minimum relevant core ESS 23); B_modern_rotavirus_plus_US2006_calibrated stays below 50 at p20 (minimum relevant core ESS 12); B_MMR_calibrated stays below 50 at p20 (minimum relevant core ESS 1); B_RotaShield_calibrated stays below 50 at p20 (minimum relevant core ESS 2). These rows keep the sharp joint U.S. likelihood inside an importance sample whose U.S. columns are untied (or tied with narrow calibrated allowances), so few draws carry the weight; they are reported with the flag.

The RotaShield rows agree with RotaShield's own-data posterior 0.872 (0.361-1.832) (3320, no bias allowance) widened by its allowance. For every refitted product row the p20 median and limits are within 3.7% of the p18 fit (`*_p18_diagnostic` rows): the flags mark thin importance weights; the estimates move little with four times the draws.

Numerical check of the MMR rows (not a row of the rule): the core log-likelihood is exactly the sum of a U.S. block and a Japan block, so with every U.S. column untied the U.S. block is a factor constant in theta_MMR; dropping it from the importance sample gives assumed floors (0.35 / 0.70): 0.923 (0.310-2.741) (minimum relevant core ESS 9799, p18) against 0.938 (0.319-2.764); placebo-calibrated tau (rms): 0.888 (0.332-2.327) (minimum relevant core ESS 561, p18) against 0.899 (0.344-2.315).

## C. Are all contexts harmful? Model comparison

Decomposition: each pooled context's likelihood parameter is its true effect delta_c plus the A1 bias terms (context, country-group, shared). H0: every delta_c = 0. H_harm(c): every delta_c >= log c, each drawn independently from a half-normal above log c (a normal N(log c, s^2) truncated to [log c, infinity)), scale s = log 2 as the headline with 0.05, log 2 / 4, log 2 / 2 and 2 log 2 as the scale sensitivity; U.S. PCV and RotaShield enter the joint U.S. likelihood jointly. The unrestricted comparator is the heterogeneous primary (marginal likelihood from its saved grid, with its specified priors). Marginal likelihoods are integrated numerically on the same likelihood curves and core draws. Documented labels: BF < 1/100 decisive against H_harm; 1/100 to 1/10 strong against; 1/10 to 1/3 moderate against; 1/3 to 3 inconclusive.

| c | Half-normal scale | BF(H_harm : H0), assumed floors | Label | BF(H_harm : primary) | BF(H_harm : H0), doubled floors | BF(H_harm : H0), calibrated |
|---|---|---|---|---|---|---|
| 1.05 | 0.05 | 0.845 | inconclusive | 12.7 | 0.94 | 0.774 |
| 1.05 | log 2/4 | 0.511 | inconclusive | 7.7 | 0.774 | 0.299 |
| 1.05 | log 2/2 | 0.164 | moderate against H_harm | 2.47 | 0.477 | 0.0322 |
| 1.05 | log 2 | 0.00972 | decisive against H_harm | 0.146 | 0.111 | 3.6e-04 |
| 1.05 | 2log 2 | 4.8e-05 | decisive against H_harm | 7.3e-04 | 0.00315 | 5.3e-07 |
| 1.10 | 0.05 | 0.732 | inconclusive | 11 | 0.888 | 0.605 |
| 1.10 | log 2/4 | 0.406 | inconclusive | 6.11 | 0.702 | 0.198 |
| 1.10 | log 2/2 | 0.118 | moderate against H_harm | 1.78 | 0.412 | 0.0186 |
| 1.10 | log 2 | 0.00621 | decisive against H_harm | 0.0935 | 0.0888 | 1.9e-04 |
| 1.10 | 2log 2 | 2.8e-05 | decisive against H_harm | 4.2e-04 | 0.0023 | 2.5e-07 |
| 1.25 | 0.05 | 0.391 | inconclusive | 5.89 | 0.686 | 0.203 |
| 1.25 | log 2/4 | 0.171 | moderate against H_harm | 2.58 | 0.487 | 0.0433 |
| 1.25 | log 2/2 | 0.0385 | strong against H_harm | 0.579 | 0.249 | 0.00282 |
| 1.25 | log 2 | 0.00148 | decisive against H_harm | 0.0223 | 0.0434 | 2.1e-05 |
| 1.25 | 2log 2 | 5.3e-06 | decisive against H_harm | 7.9e-05 | 8.9e-04 | 2.5e-08 |

- c = 1.05: **scale-dependent** (documented: disfavoured iff BF(H_harm : H0) < 1/10 at every scale under the assumed floors); BF across scales 4.8e-05 to 0.845; headline (scale log 2) 0.00972.
- c = 1.10: **scale-dependent** (documented: disfavoured iff BF(H_harm : H0) < 1/10 at every scale under the assumed floors); BF across scales 2.8e-05 to 0.732; headline (scale log 2) 0.00621.
- c = 1.25: **scale-dependent** (documented: disfavoured iff BF(H_harm : H0) < 1/10 at every scale under the assumed floors); BF across scales 5.3e-06 to 0.391; headline (scale log 2) 0.00148.

All-null versus heterogeneous: BF(H0 : primary) = 15.1 under the assumed floors (log 2.71); with each of the primary's six untied U.S. rotavirus 2006 priors in H0 instead, the log BF ranges from 2.38 to 2.70. Doubled floors: BF(H0 : primary with doubled allowances) = 5.41. Neither BF says every effect is zero; H0 keeps every bias term.

At the headline scale (log 2), BF(H_harm : H0) is 0.00972, 0.00621, 0.00148 for c = 1.05, 1.10, 1.25 (the least decisive of them: decisive against H_harm). The smallest scale (0.05) makes H_harm(c) nearly a uniform shift of every context by log c, which the shared bias (SD 0.15) and the context allowances can partly absorb; there the Bayes factors are 0.845, 0.732, 0.391. A hypothesis that every context is harmed by a similar small amount is therefore much harder to reject than one of scattered, larger harms: it is the same shared-bias limit that stops the common-effect test from excluding small effects.

Kernel models whose minimum relevant ESS stays below 50 at their reported power: C_Hharm_calibrated_c1.10_s0.05 (47, p20), C_Hharm_calibrated_c1.25_s0.05 (38, p20).

**Probability that every pooled context effect exceeds c.** C2a (as specified): the product over the 14 likelihoods of each context's own-data posterior probability (likelihood scale, N(0, log 2) prior; U.S. PCV and RotaShield jointly from the joint U.S. likelihood). The independence approximation is exact for the unpooled own-data model (separate likelihoods, independent priors) but ignores the shared and group biases and the primary's pooling. C2b: the same probability for the true effects with the assumed bias terms retained (unpooled model, each effect N(0, log 2)), computed exactly.

| c | C2a: own data, no bias | C2b: bias retained | Smallest own-data factor |
|---|---|---|---|
| 1.05 | 2.0e-10 | 1.8e-05 | England rotavirus 0.004 |
| 1.10 | 9.0e-14 | 5.8e-06 | England rotavirus 9.5e-05 |
| 1.25 | 2.9e-26 | 1.7e-07 | England rotavirus 1.0e-10 |

These probabilities shrink mechanically as contexts are added; they enter no call. Source: `3350_generalized_claim_tests.json` C.p_all_exceed (every factor listed); kernel models in `project_results/generalized_claim_3350/kernel_models`.

## Verification

- A1 by two implementations (tolerance 1e-6). Implementation 1 is the hierarchy's own likelihood (`global_hierarchy.component` on the 1201-point grid) with the exact normal-mixture summary. Implementation 2 is independent: its own curve loading, dense-matrix convolution, a completed-square importance sum and two-dimensional numerical integration over (theta, a). The two likelihoods agree to 2.7e-12 (log) on every grid point with |a| <= 1, which holds all but 2e-09 of the posterior mass. They differ (by up to 6e-03) only in the far tails, where the hierarchy's filter truncates its Gaussian kernels at 8 SD.
- As documented (trapezoid weights; implementation 2 on a 6001-point grid) the verification **failed**: largest difference 4.0e-05 (log marginal likelihood), against 1e-6. Cause: the hierarchy interpolates each product function linearly on its 0.015 curve grid, so the log-likelihood has a concave kink every 0.015, and trapezoid weights integrate such kinks with a bias of order (h^2 / 12)(kink / 0.015), about 6e-5 at h = 0.005. The record is `project_results/generalized_claim_3350/verification_failed.json`.
- Under amendment 1 (knot-aligned Simpson 3/8 on the same grid; 12-point Gauss-Legendre per knot panel in implementation 2) the two agree to 1.3e-09 over the log-scale median, 2.5th and 97.5th percentiles, P(RR > t) at the four thresholds, the posterior mean and SD and the log marginal likelihood: PASS. The reported A and B numbers use the amended quadrature. The amendment moves A1 by at most 4.1e-05 on any of these quantities.
- The C marginal likelihoods keep the documented trapezoid. Its kink bias is 5.2e-05 in log for H0 under the floors and similar in every model, so it largely cancels in the Bayes factors, which are reported to three significant digits.
- Grid: A1 on the primary's 241-point grid gives 0.964 (0.637-1.455) (1201-point grid: 0.964 (0.637-1.455)).
- Kernel models: H0 by the kernel code equals the A-row likelihood integrated at theta = 0 to 0.0e+00 in log (specified, doubled and calibrated allowances, same core draws; one unit in the last place at |log M| near 6,700 is 9e-13, so a zero means agreement to double precision); H_harm(c = 1, scale -> 0) equals H0 to 6.5e-10.
- Own-data regression: the 12 foreign own-data posteriors reproduce `hierarchy_final_p18.json` per_context unpooled and the U.S. / Japan draws reproduce `us_alone_diagnostics_p18.json`, to 0.0e+00 (the same functions on the same inputs).
- The primary headline is reproduced from the saved grid to 1e-10 before it is restated.
- Tests: `07_analysis_code/test_3350_generalized_claim_tests.py`.

## What these tests cannot establish

- product-specific or subgroup effects outside the pooled contexts (vaccines, schedules, doses, ages or populations without a pooled context; subgroups such as genetically or immunologically susceptible children whose effect is diluted in population jumps);
- acute or short-latency effects and regression events not captured by birth-cohort autism counts at the observed ages;
- effects that are real but coincide with a systematic error common to every context (the shared bias term cannot be estimated from these data);
- anything about outcomes other than the autism series of the pooled contexts, or about contexts that failed the gates.
- They inherit every modelling choice of the primary: the jump-to-individual-scale mixture conversion, exposure reconstructions, trend kernels, gate decisions (made during the project) and the assumed bias allowances, which are assumptions, not estimates.
- The PCV x RotaShield joint-receipt interaction stays a free nuisance term and U.S. rotavirus 2006 stays untied in every model; the common effect is imposed only on the 15 pooled contexts.

## Files

- `07_analysis_code/3350_generalized_claim_tests.py` (analysis, outputs, figure); `07_analysis_code/test_3350_generalized_claim_tests.py` (tests).
- `3350_generalized_claim_tests.csv` (one row per estimand; every row carries both rule hashes), `3350_generalized_claim_tests.json` (all results, per-context factors, checks, input hashes), `08_figures/3350_generalized_claim_tests.png` (Testing One Vaccine Effect on Autism Across 15 Contexts).
- Fits and kernel models: `project_results/generalized_claim_3350/fits/`, `project_results/generalized_claim_3350/kernel_models/`; run log `project_results/generalized_claim_3350/run_log.json`.
- Rule: `qa/generalized_claim_20260929/3350_rule.json`, the rule as written `qa/generalized_claim_20260929/3350_rule_before_renumbering.json` (writer `qa/generalized_claim_20260929/write_3350_rule.py`) and amendment 1 `qa/generalized_claim_20260929/3350_amendment_1_quadrature.json`. No pre-existing project file was modified, so nothing was snapshotted.
