The case in one screen
On 2026-05-26 Elsevier removed Neil Z. Miller's 2021 paper, which read a clustering of infant deaths in the days after vaccination (VAERS, 1990–2019) as a vaccine–SIDS signal. On 2026-06-11 Secretary Kennedy demanded a transparent account of that removal. This corpus holds both contested objects — the paper and the manner of its erasure — graded, caveated, and traceable.
The two questions, kept separate
Did Miller's inference fail as method? Yes — causal inference from denominator-free passive data with a built-in temporal bias. Should the removal still be scrutinised? Also yes — a two-sentence notice that asserts a flaw without showing the analysis, the reviewers, or their conflicts fails the COPE "state your reasons" standard. The same transparency principle generates both positions; they do not conflict.
HOW — the days-to-onset sample pull
We ran Miller's own metric — share of reports whose onset falls in the first days after vaccination — on the full Meridian North VAERS corpus (1990–2026, n=1,989,028) and put the fatal-infant slice side by side with controls. If the clustering also appears where a death-hazard window is implausible, the cluster is an artifact of reporting, not a fingerprint of harm.
Read the rows together: the clustering is not strongest in the fatal-infant slice the SIDS argument needs — it is stronger in the all-infant population (mostly non-fatal, no death-hazard window) and strong across the entire database. A causal hazard cannot explain why trivial non-fatal reports cluster harder against the shot date than infant deaths do. Reporting behaviour can. The adult-death control is least clustered, with a long multi-month tail — same instrument, same metric, opposite shape, driven by who files and when.
Symmetry: this table also cannot prove vaccines are safe for infants. It proves only that this instrument cannot adjudicate the causal question in either direction. That belongs to a design with a real denominator and matched ascertainment.
v2 — Observed vs Expected: the age confound
The day-to-onset chart shows when deaths are reported relative to the shot. This panel asks the deeper question three independent reviews all pointed to: at what age do these infants die? Because if the deaths fall at the ages where SIDS already peaks, then "deaths cluster after vaccination" may be nothing more than "vaccines are scheduled at the age when infants are most likely to die of SIDS anyway."
The confound, in one sentence. The US primary vaccine series is given at 2, 4, and 6 months. Background SIDS peaks at 2–4 months, with ~90–95% of cases before 6 months (NICHD/CDC). In this corpus, 85.8% of infant deaths occur before 6 months and 74.5% fall in the 2–5 month window — the deaths are SIDS-aged, sitting exactly on top of the schedule. The vaccination calendar and the natural SIDS curve are confounded by design: you cannot separate them with timing data alone, because they point at the same months.
Read it honestly, both ways. That the deaths are SIDS-aged does not prove vaccines are innocent — a real effect could hide inside the same window. And the fact that this corpus is even more peaked at 2–3 months than background SIDS is not a 2× "excess": VAERS has no denominator, and the 2-month visit is the single densest, most-reported vaccination event, so reporting concentrates there. Same lesson as v1: timing and age both coincide with the schedule, so neither can adjudicate cause.
What an "expected" actually requires
A true observed-vs-expected needs the one thing VAERS structurally lacks — a vaccinated denominator by exact day of age — so deaths-after-vaccination can be compared to background mortality at that age. The design that gets there without a population denominator is the self-controlled case series (each infant is their own control; risk windows vs control windows within the same child). That is where this question is answerable. It is not answerable in spontaneous-report timing, in either direction.
Bin-width-corrected onset (per-day rate)
Addressing the uneven-bin critique: dividing each bucket by its width gives a per-day rate. Infant deaths peak at day 1 (28.7%/day), not day 0 — consistent with "found the next morning." All-reports peak at day 0 (47.2%/day) — the same-day minor-reaction reporting signature. The cross-cohort comparison from v1 is unchanged, because every cohort shares the same bins. Full table in data/onset_perday_normalized_v2.csv.
kmv-011 — the denominator, gathered: US vs Nordic SUID
The gap, and what it is not. The US composite runs flat at ~86–101 per 100k across the full span (1999–2023); the Nordics run ~15–55. The US is roughly 2–5× higher, and it does not decline. But the US and Nordics run similar vaccine schedules, so a 2–5× gap cannot be schedule-driven — it tracks sleep-environment practice, death-investigation/certification systems, and the classification differences this composite only partly tames. Even with a real denominator, an ecological cross-national rate cannot isolate vaccination. Same lesson as the VAERS tab, one level up: a denominator answers "what's the rate," never "what caused it." The design that can is the within-country self-controlled case series.
Completion + an honesty the gather flagged itself. The US line is now complete 1999–2023: deaths come from WHO MDB; the live-births denominator is WHO through 2005 and an NCHS-natality join from 2006 (the gather refused to fake it, flagged it as recorded-absence, and we filled it from the source of record — a two-source join, labelled in the CSV). The US is also a clean in-data example of the diagnostic shift: SIDS (R95) fell from ~2,600 to ~1,400 while "unknown" (R99) and ASSB (W75) rose — yet the composite stays flat, which is exactly why we compare the composite and not the SIDS label. Denmark shows the same shift more violently (R95 6 → R99 78 around 2008–2010), spiking its composite — visible only because we kept the per-cause split. We show the artifact rather than smooth it.
source: WHO Mortality Database (gathered 2026-06-16, kind-gatherer discipline) · data/suid_crossnational_ok_rows.csv · rate is not cause · lot caveat: reports-per-lot ≠ doses-per-lot
kmv-013 — the outcome space & time-to-effect: how not to be fooled, in either direction
SIDS is one outcome. Honest vaccine safety is about the whole outcome space — and that space, together with the clock each event runs on, is exactly where both alarm and false reassurance get manufactured. Two methodological pitfalls live here — easy to fall into honestly, and easy to exploit on purpose. The page names them so a reader can see them in action, used by either side.
Pitfall 1 — the size of the list
Every adverse event is catalogued in a standard dictionary, MedDRA — roughly 26,000 "preferred terms" across 27 organ-system classes — and every VAERS report is coded into it. A manufacturer's package insert (Section 6) lists events in two very different bins, and conflating them is the whole error:
Why the length is the trap. Test vaccine-versus-control across ~26,000 outcomes and, by chance alone, about 5% — well over a thousand — will cross "significant" at p<0.05 even if nothing is wrong. So cherry-picking the single scariest event (what a SIDS-only or "hot-lot" analysis does) is guaranteed to find a signal; a defender can just as easily pick a reassuring one. The honest method tests the whole space against a denominated control with multiplicity correction (false-discovery-rate) and reports only what survives. The project's own method note did exactly this on court-released trial data: 22 organ-system comparisons, corrected — and none of the 22 apparent differences held up (every one, including an eye-catching 2.25× cell, dissolved into "could be chance" once you account for testing 22 things). "None held up" here is the reassuring direction: zero false alarms survived the honest filter — not a claim of perfect safety, just nothing standing out beyond chance in this trial.
Pitfall 2 — the clock (time-to-effect)
There is no single "risk window," because each event runs on its own biological clock. Whichever window you pick decides what you can find — so it has to be pre-specified from a known mechanism, and the observed latency must match it. An event at day 30 cannot be anaphylaxis; the mechanism forbids it. A death at day 2 is at least consistent with a cytokine mechanism — consistency, not proof.
| Latency class | Plausible window | Mechanism | Established example |
|---|---|---|---|
| Immediate | minutes–hours | IgE / mast-cell | Anaphylaxis |
| Acute | ~1–7 days | inflammation / cytokines | Febrile seizure; mRNA myocarditis (~2–4 d) |
| Sub-acute | ~3–7 days | mechanical / immune | Rotavirus intussusception |
| Weeks | ~1–6 weeks | autoimmune / neuro | Guillain-Barré after influenza vaccine |
| Delayed / "dormant" | weeks–months | autoimmune | Narcolepsy after Pandemrix (H1N1) |
The two pitfalls multiply. ~26,000 outcomes × several plausible windows each is the "garden of forking paths": free to choose both what outcome and when you look, an analyst can produce essentially any result they want. The single honest standard — the one that ties this whole kit together — is: pre-specify the outcome, the comparator, the denominator, and the mechanism-justified window, then test against a real control with multiplicity correction. Everything outside that is forking paths.
And it cuts both ways. Just as window-hunting manufactures false alarms, a window that is too short hides a real delayed effect: narcolepsy after Pandemrix took months to surface, and a 7-day analysis would have certified it "safe." Absence of an acute signal is not absence of a delayed one — that is a blind spot, and we name it rather than read silence as safety.
What this corpus can show now — and the honest gap
The VAERS data already in hand carries the vaccination dates, onset dates, ages, and MedDRA terms needed to display the breadth of reported events by organ system and the days-to-onset distribution for each — labelled reports-not-causation, never a rate. What it cannot supply is the denominator per event (background incidence by age) and per-window dose counts; those require linked active-surveillance data (VSD / BEST) and remain the standing named gaps. So this tab is the map of the outcome space and the rules for reading it — not a verdict on any single event, which this data cannot give.
method: pre-specified outcome + comparator + denominator + mechanism-window, FDR-corrected · reports are not causation · only a clinician concludes for a person
The finding — why the public data won't let you answer the question
Walk back through this kit and the same shape repeats at every level: each public dataset hands you one half of what a fair comparison needs — and never the matching half.
| Dataset | What it gives you | What it's missing |
|---|---|---|
| VAERS | a numerator — reports of events | the denominator — how many were vaccinated. Counts, never a rate. |
| Cross-national mortality (WHO) | a denominator — live births | a clean numerator — classification and death-investigation differ, and schedules differ country to country. A rate, but apples to oranges. |
| Lot / batch records | reports per batch | doses per batch. A numerator with no denominator, again. |
Put the pieces on the table and they refuse to fit. The numerator and the denominator sit in different buildings; the batch counts and the batch sizes sit in different buildings; the schedules don't line up. Anyone can hold up a single piece and make it say whatever they like — and no one can honestly assemble the whole.
We make no claim that anyone arranged this. Whether by design, by inertia, by privacy law, or by institutional habit, the effect is the same: the openly available data is structurally un-joinable, so the public cannot audit the question for itself. That is the finding — and it is almost embarrassingly plain. The problem isn't a missing study. It's a missing join.
The fix isn't hypothetical — most of it was already built
The hardest half — completing the numerator — was solved in 2011. An AHRQ-funded project, ESP:VAERS (Harvard Pilgrim Health Care / Lazarus), built software that automatically detects vaccine adverse events from electronic health records and files them to VAERS — no thirty-minute form, no dependence on who happens to have the time. It worked: it flagged a possible reaction in about 2.6% of vaccinations and confirmed that fewer than 1% of events reach the system today. The planned head-to-head evaluation never ran — by the project's own final report, "restructuring at CDC and consequent delays in decision-making" meant it could not move forward — and the system was set aside. So the most important piece of the fix has existed, proven, for over a decade. It is sitting on the shelf, in the open record, waiting to be picked back up.
That is the encouraging part: the answer isn't out of reach because it's impossible — much of it is already done, and the rest is buildable. So we'll build it.
- a denominator that is public and linkable — doses by age, by time, by lot;
- a numerator that is complete and low-friction — one-click reporting from the medical record, so the count stops depending on who has thirty spare minutes;
- comparisons that respect the schedule — within-person, self-controlled designs, not apples-to-oranges across borders;
- the whole thing open, hash-verified, and privacy-preserving — so anyone can re-run it, and no one has to surrender their identity to take part.
We don't need permission to start. Each piece we can build openly — one denominator joined, one chart properly denominated, one self-controlled design done right — is a brick. We'll lay them in public, hash-verified, a little at a time, and pick the 2011 work back up where it was left. The day an institution wants to help — or to take it over entirely — the foundation is already poured.
That ask is non-partisan: a better instrument serves whoever turns out to be right. Until it exists, the honest posture is the one this kit holds throughout — show every number with the half it is missing named out loud, refuse the verdict the data cannot support, and point to the design that finally could.
A closing note, in good humour: this conclusion is where an enormous amount of machine analysis came to rest. The machine's honest verdict is that the data will not let the machine — or you — reach a verdict. The remedy was never more computation; it is connecting the data, in the open. The instrument is what's missing, not the answer.
What if we resurrected the 2011 fix — modern style
ESP:VAERS proved the core in 2011: a computer can read the medical record, spot a likely vaccine reaction, and file the report automatically. It was shelved before its evaluation. Here is what that same idea becomes with the tools of 2026 — and how it can be rebuilt in the open, a brick at a time, by anyone, starting now.
The modern design
The build — a brick at a time
We don't need permission, and we don't need it all at once. Each brick is small, open, and hash-verified; together they rebuild the instrument.
| Brick | What it is | Status |
|---|---|---|
| Denominator join | US vs Nordic SUID per live birth (kmv-011) | laid ✓ |
| Timing framework | days-to-onset + latency rules (HOW · outcome-space) | laid ✓ |
| Event-space map | a MedDRA-by-organ-system pull from the corpus | next |
| Honest-test demo | a self-controlled case series on open data | queued |
| Dose denominator | doses by age / time from IIS & NIS | queued |
| Auto-report prototype | the 2011 EHR→report core, modern (FHIR) | the goal |
Until someone with the mandate and the keys wants to help — or to take it over entirely — we lay the bricks in public. The foundation, and the 2011 blueprint, are already on the record.
a navigator, not medical advice · open · hash-verified · privacy-preserving · the instrument is buildable
What Miller actually argued — and why the rebuttal still doesn't hold
His actual position (not the strawman)
Miller's claim was hedged, not absolute: "While the findings in this paper are not proof of an association between infant vaccines and infant deaths, they are highly suggestive of a causal relationship." He proposed a susceptibility-subset model (only predisposed infants at risk) and three mechanisms (inflammatory cytokines in the infant medulla; aluminium adjuvant crossing the blood–brain barrier; multi-vaccine synergistic toxicity). Headline numbers (All-Mortality, N=2605): 58% of deaths within 3 days, 78.3% within 7 days; the day-after-vaccination count (760) exceeded the day-of count (440).
His central defense — the "incubation period" argument
Miller argued a pure reporting artifact should peak on the day of vaccination (maximum temporal salience) and decline. Instead his data show fewer deaths on the day of vaccination (16.9%) than the day after (29.2%) — which he read as a biological incubation period, with cytokines peaking 2–4 days out. He concluded: "reporting bias is unlikely to be entirely responsible for the clustering." On the missing denominator he was explicit — VAERS has none, <1% of events are reported — but argued it wouldn't be decisive, since susceptibility is individual and >90% US coverage leaves almost no unvaccinated baseline.
We reproduce his numbers — that's not the disagreement
Our independent pull (VAERS 1990–2026, infant <1yr deaths) lands within ~3 points of Miller: 55.3% within 3 days (he: 58%), 77.0% within 7 days (he: 78.3%), day-after peak 2.0× the day-of count (he: 1.7×). We do not dispute the arithmetic or the day-after peak. We dispute what it means.
Why the inference still fails — three honest rejoinders
The honest verdict is unchanged. VAERS can generate this hypothesis; only a denominated cohort or a self-controlled case series can test it. Miller's strongest argument, fully granted, narrows the reporting-bias explanation but does not reach the age confound or supply the denominator — so the causal claim remains unsupported, and so would any confident claim of safety. Removal of the paper still owes the same transparency it failed to give.
Query the corpus
Mechanism crossroads
Co-occurrence of mechanism nodes across the indexed records. The dense node is exactly the methodological fault line.
Reshape a question
Turn a lay question into a clinician query, a research string, and a guard-railed LLM prompt.
Not in corpus?
Two paths when a query has no hit: a deeper index sweep, or a portable guard-railed prompt you can carry to any LLM.
SHA-256 verifier
Milspec replayability: paste a file's text (or load it) and confirm its hash against the corpus MANIFEST. Computation runs locally in your browser via SubtleCrypto.
…or paste text:
Expected hashes are published in MANIFEST_SHA256.txt shipped alongside this webform.