41.176 HzPaul Samuel Guarino
← Klein’s Pollution Solutions: the record

Real recorded data

Klein's Pollution Solution — Project Promised Land

Retrospective Case Study: 2026 Upper East Side Legionnaires' Disease Cluster

Run date: 2026-10-16 · Instrument: Klein detection engine v23.3 (frozen) · Configuration: ABSOLUTE_LIMIT = 0 — Tier 1 disabled, Tiers 2–5 active (spike / wave / disruption / coherence). Identical configuration to the Yap Island dengue 2011 threshold-off ablation.

Question: Using only data available as the outbreak developed, when would the frozen detector first have produced an anomaly signal, and how does that compare with NYC's official recognition on July 2, 2026?


Headline result

The detector's first alert associated with the UES outbreak is a Tier-2 spike in MMWR week 26 (Jun 28 – Jul 4, 2026) — the same week in which NYC announced the cluster on July 2.


1. Data

1.1 Primary detector input (the baseline-compliant series)

NYC publishes no pre-outbreak daily or neighborhood-resolution legionellosis series (checked: DOHMH annual surveillance report is annual only; EpiQuery is query-on-demand; the cluster epi curve starts 6/23). The longest defensible continuous series over one surveillance population is:

Series Incident weekly legionellosis cases, New York City reporting area
Source CDC NNDSS Weekly Data, data.cdc.gov dataset x9gk-5huc, label=Legionellosis, states=NEW YORK CITY
Span MMWR 2022-W01 (ending 2022-01-08) → 2026-W40 (ending 2026-10-10), 249 weeks
Derivation new_cases = first difference of source column m3 (cumulative YTD, revised counts). Provisional m1 column is missing ~40% of weeks and was not used.
Imputation 7 year-start weeks preceding each year's first reported cumulative are cumulative 0 by definition — flagged imputed_zero=1, no other imputation
File klein_input_nyc_legionellosis_weekly.csv

This satisfies the baseline requirement: 4½ years of genuine pre-event observations run uninterrupted through the outbreak. No zeros were prepended and the surveillance population never changes — the UES cluster appears inside the citywide counts.

1.2 Outbreak epi curve (context; not the detector input)

Series UES cluster daily newly-diagnosed cases, by specimen-collection date
Source NYC DOHMH page, embedded Datawrapper chart kUAIX v31 — ues_cluster_daily.csv
Span 2026-06-23 → 2026-07-30; 94 cases total (matches DOHMH final count), last diagnosis 7/21, 11 deaths

1.3 Environmental data

Registered towers NYC Open Data y4fw-iqfr, ZIPs 10028/10128/10075 → 243 tower systems, with per-tower sampledates (Legionella water-test dates)
Inspections NYC Open Data f9wb-g8mb (BWSO) → 330 inspection records, 2026, same ZIPs
Lab lists DOHMH PDFs: PCR-positive towers (7/14, updated 7/20; 77 towers at 75 buildings), confirmatory cultures (7/29; 59 culture-positive towers at 58 buildings)
Official timeline DOHMH press releases: Jul 2 (investigation launched, 2 cases), Jul 10 (31-building list, 46 cases), Sep 10 (South Bronx cluster, separate event)

2. Detector configuration (frozen)

Engine loaded verbatim from 04_KLEIN_Biodefense/klein_biodefense_yap_dengue_2011.py — the same v23.3 port used for the dengue threshold-off run — via exec of the file up to __main__ (same technique as yap_dengue_tier_sweep.py). Nothing was tuned for this dataset.


3. Results

3.1 Output over the full series

69 detections in 249 weeks: 28 spike · 7 wave · 34 disruption · 0 coherence. They cluster on real events — every summer legionellosis season and every announced community cluster is marked. Complete per-week output: legionnaires_ues_2026_detection_log.csv.

3.2 The UES episode

MMWR week Week ending New cases Detection z p
W25 2026-06-27 4 —
W26 2026-07-04 28 spike 6.55 5.6e-11
W27 2026-07-11 58 spike 8.61 7.6e-18
W28 2026-07-18 50 spike 3.16 1.6e-3
W29–W32 …Aug 15 33, 29, 21, 18 spike ×4
W34 2026-08-29 21 spike

First outbreak alert: W26, Tier 2 "spike" — first crossing of baseline μ + 4σ = 16.1 (28 cases). July 2 official recognition falls inside W26 → lead/lag = 0 weeks (same reporting week; −2 days measured against week-close). Within-week ordering is not resolvable at weekly resolution; the 28-case week already contains the cases DOHMH announced.

Prior 2026 run-up alerts: three Tier-4 disruptions (W06 Feb 14, W11 Mar 21, W16 Apr 25) — months before the late-June exposure window; unrelated, i.e., false alarms under prospective use. Reported, not hidden.

3.3 Controls and corroboration


4. Interpretation

What this shows: the frozen instrument registers NYC community Legionnaires' clusters in the week they become official — for UES, Harlem, and South Bronx alike — and the engine is unchanged from the dengue run. Zero tuning occurred.

What it does not show: advance warning for this event. NYC moved at two confirmed cases; at citywide weekly resolution the earliest the frozen thresholds could fire was the 28-case week containing the announcement. A detector that needs a statistical excursion cannot beat a health department acting on case linkage at n=2.

Honest limitations: (1) weekly citywide resolution is the finest public continuous series — the detector would need sub-weekly, zone-resolution data to have had a chance; (2) NNDSS counts cases by report week, not specimen date, so the series embeds diagnosis+reporting lag (~1–2 wks); (3) 34 disruption alerts across 4.75 years is a real false-alarm load under prospective deployment; (4) retrospective — the event was known before the run.


5. Follow-up experiment — was the baseline/warm-up the problem?

The primary criticism of the primary run: the engine fixes its baseline from the first 15 observations — is W26 an artifact of which history calibrated the detector? Tested by truncating the start of the same 249-week series so the detector receives H ∈ {10…234} weeks of pre-outbreak data. Detector untouched (ABSOLUTE_LIMIT=0, all constants, both ports). Complete table — nothing selected:

H (wks pre-outbreak) Baseline μ / σ Tiers live at W26? First alert ≥ Jun 1 vs W26
10 16.93 / 18.36 no none missed
15 5.40 / 3.54 no W31 spike +5
19 5.07 / 2.79 no W27 spike +1
20 5.27 / 3.10 yes W26 spike 0
21 5.40 / 3.36 yes W26 spike 0
26 6.47 / 3.60 yes W26 spike 0
39 8.67 / 4.97 yes W26 wave 0
52 27.53 / 15.99 yes W31 disruption +5
78 3.27 / 1.67 yes W23 spike −3
104 7.27 / 3.69 yes W26 spike 0
156 7.73 / 4.22 yes W26 spike 0
208 8.67 / 5.79 yes W26 wave 0
234 (primary) 2.33 / 3.44 yes W26 spike 0

Three failure modes, all instructive:

Locked Air Mode check (klein_port_v2.py, the v5.0-lock rolling-baseline configuration, ABSOLUTE_LIMIT=0 for parity): expanding trailing baseline, Tier 4 off. First outbreak alert = W26 as wave (the 2025-inflated trailing baseline pushes the 28-case week below spike threshold but above wave threshold), then W27–W28 spikes. Same week, different layer — 13 total detections vs 71 legacy. Even the adaptive baseline does not find anything earlier.

Conclusion of the sweep: across every functional configuration the first cluster-associated alert is W26; earlier "alerts" appear only when the baseline is too thin to separate background from signal (and still predate the event). Weekly citywide incidence does not contain a pre-W26 signal this detector can legitimately claim.

Spatial dilution — assessed, not resolved. The UES event was geographically local; the input was citywide. No public sub-city-resolution legionellosis series exists (NNDSS reports at NYC level; DOHMH publishes cluster curves only post-hoc; EpiQuery requires a data request). So the spatial question — would a zone-resolution series have alerted before Jul 2 — is untestable from public data and is logged as the limiting factor for the next experiment: the instrument's own spatial machinery (grid binning, Moran's I) needs neighborhood- or ZIP-level line-list data to run.


6. Second follow-up — does prior event history change the next detection?

Question: does the detector behave differently when the continuous stream includes the previous outbreak and its recovery (2025 Harlem cluster, W24–W36/2025) versus when the stream begins after recovery? Same 249-week series, four start points, both locked baseline architectures, ABSOLUTE_LIMIT=0. Script: run_event_history_experiment.py; full output: event_history_results.json.

Stream start Architecture Baseline at W26 (μ/σ) First alert ≥ Jun 1 Class
A W44/2025 — after Harlem recovery fixed 7.20 / 2.96 W26 spike clean discrimination
air (rolling) 6.26 / 3.29 W26 spike sharp — only config where Air Mode spikes at W26
B W01/2022 — full history (primary) fixed 2.33 / 3.44 W26 spike baseline predates Harlem entirely
air (rolling) 7.20 / 8.05 W26 wave Harlem inflates trailing σ → demoted from spike to wave
C W01/2025 — Harlem mid-stream fixed 3.27 / 1.67 W24 spike (Jun 13, 10 cases) hair-trigger: 9 marginal spikes on background in 2026 before W26, incl. W24 before first UES specimen (Jun 23) — background, not signal
air (rolling) 10.31 / 11.55 W27 spike Harlem in trailing baseline delays the outbreak alert by a week
D W28/2025 — starts inside Harlem peak fixed 27.47 / 16.02 W31 disruption only masked — misses outbreak as spike/wave entirely
air (rolling) 12.67 / 13.18 W27 wave worst outcome

Finding: prior event history helps the detector only through the quality of the baseline drawn after the event has recovered — configuration A (post-recovery winter baseline) yields the sharpest discrimination in both architectures (spike at W26, not wave). History that carries the previous event either inflates the trailing baseline (delays/demotes: B-air W26 wave, C-air W27, D-air W27) or, if the fixed window lands inside it, masks the next event outright (D-fixed). There is no evidence the instrument "learns" from having experienced an event — it does not; it is memoryless beyond the baseline statistics. What matters is whether the baseline reflects recovered normal, not merely elapsed time. This is the quantitative version of the case-study design rule: normal → event → recovery → normal must all be inside the stream and the calibration window must sit in the post-recovery quiet.


7. Precursor Observability Matrix — why lead time varies across the portfolio

Compiled across every retrospective run to date (precursor_observability_matrix.csv). Hypothesis under test: early-warning lead time is governed by precursor observability — sampling cadence × spatial resolution × how directly the measured variable represents the underlying process. A detector cannot warn about information that has not yet entered the measured stream.

Case Cadence Spatial scale Directness First alert vs milestone Outcome
Delhi PM2.5 (Air Mode) hourly single station direct physical +35 h median before severe-episode onset early warning
Yap dengue 2011 daily island pop. ~11k (closed) downstream cases Sep 16 vs Nov 25 peak → +70 d (Tiers 2–5) early warning
Geneva 1918 influenza daily deaths city downstream deaths Sep 13 disruption vs Oct 20 peak → +37 d (violation Sep 25 → +25 d) early warning
SARS Hong Kong 2003 daily city downstream cases Mar 8 wave (z=2.89) vs WHO alert Mar 12 → +4 d early warning
Tokyo sarin 1995 hourly single site downstream casualties 08:00 alert at attack onset (first bucket already 780/hr) simultaneous — no precursor exists
Ebola 2014–16 ~weekly multi-country downstream cases alerts at threshold crossings simultaneous
COVID-19 WHO global daily global aggregate downstream cases per-wave threshold crossings simultaneous
Flint / Bethpage / E. Palestine / asbestos event/daily site–city direct ppb/µg Tier-1 action-level crossings threshold detection (by design)
Yap zika 2007 weekly island downstream cases no tier output (n=29 < WINDOW_SIZE=20 warmup over baseline) null by construction
UES Legionnaires 2026 weekly citywide, 5 boroughs most-downstream proxy (diagnosed → reported → aggregated) W26 = recognition week → 0 d simultaneous detection
UES environmental (tower sampling) daily event log ZIP-level testing intensity, not pathogen surge Jul 7–9, after recognition post-hoc response artifact

The pattern is orderly: every genuine early warning in the portfolio sits on direct or daily, spatially local measurements where the physical precursor enters the input before the milestone. Every simultaneous result sits on weekly or geographically aggregated, downstream-outcome series. The UES run is the extreme point of the latter class — coarse cadence, spatial dilution (a 3-ZIP event inside ~8.3M-person counts), the deepest causal distance from the physical event (cooling-tower growth → exposure → infection → diagnosis → reporting → weekly aggregation), and the fastest official responder in the portfolio (action at n=2). Instantaneous events (sarin) bound the other end: no precursor exists at any resolution.

Testable prediction now on record: if ZIP-resolution daily line-list or pre-outbreak cooling-tower Legionella measurements ever become available for this event, the frozen instrument run on those streams should produce an earlier alert than W26 — with tower-level measurements predicted to alert earliest, as the physically most-upstream observable. That is where in the causal chain early warning becomes possible, and it is an engineering specification for what minimum temporal/spatial/causal resolution a sensor stream must have for early-warning claims to be meaningful.


8. Two-stream causal-chain test — NYC COVID-19 wastewater vs diagnosed cases

Direct test of the §7 hypothesis on an event where two contemporaneous streams exist at different positions in the causal chain: wastewater SARS-CoV-2 load (viral shedding — physically upstream of diagnosis) vs confirmed clinical cases (downstream outcome). Same detector, same constants, ABSOLUTE_LIMIT=0, streams aggregated to identical weekly bins — the only thing varied is causal position.

Weekly-aligned run (controlled — equal cadence and grid):

Wave Wastewater first alert Cases first alert Upstream lead
Alpha (winter 20–21) Jan 30 wave (z=2.0) none — warm-up n/a
Delta Aug 14 wave (z=3.1) Aug 28 disruption +14 d
Omicron Dec 25 spike (z=5.4) Dec 4 disruption / Dec 18 spike −7 d (magnitude tiers)
BA.2 Apr 2 disruption Mar 19 disruption −14 d
BA.5 Jun 25 wave (z=2.2) Aug 27 disruption +63 d

Two findings are clean. (a) Tier-strength: wastewater produced magnitude-tier alerts (spike/wave) in every wave; the case stream produced a magnitude alert only for Omicron — for Delta and BA.5 the downstream record never crossed its spike threshold (~30.9k/wk) and surfaced only as Tier-4 harmonic firings. Upstream the same events are physical excursions; downstream they are sub-threshold ripples in an inflated baseline. (b) The exceptions are instructive: Omicron's case surge was so steep that daily diagnosis counts outran the 2×/week weekly-mean-smoothed wastewater stream — averaging damped exactly the precursor the hypothesis cares about.

Native-cadence run (wastewater per sampling date, ~2–3/week, 195 obs): first spike Nov 30 – Dec 5, 2021 vs cases' first magnitude alert Dec 18 → +13–18 d upstream for Omicron, recovering the documented wastewater-leads-cases ordering. Delta first alert Jul 13–20 (vs cases Aug 28): +5–6 wks. Caveat, reported honestly: native cadence uses first-15-samples as baseline (≈6 weeks vs 15 weeks), yielding a hair-triggered detector with 119 detections — earlier, but noisier; wave-attribution is weaker when the detector is already firing. This is again §5's lesson: baseline construction, not detector choice, governs the sensitivity/specificity trade-off.

Verdict on the hypothesis: directionally supported, not decisive — 3 of 5 waves alerted earlier upstream at equal cadence (Delta +14d, BA.5 +63d, Alpha non-comparable by warm-up) with stronger tier evidence, and the native-cadence run restores upstream-first ordering for Omicron. The exceptions occur where the downstream process accelerates faster than upstream sampling cadence resolves. Consistent with the matrix prediction: lead time scales with precursor observability, and the binding constraint on this test was upstream sampling cadence, not the detector.

The Legionnaires analog is now concrete: cooling-tower Legionella concentrations (not test counts) are the upstream stream; weekly citywide diagnoses were what we had. The instrument flagged everything the downstream stream could support — the data, not the detector, capped the achievable lead.


9. The better candidate — 2025 Central Harlem (pursuit status)

The 2025 Central Harlem outbreak (118 confirmed, 7 deaths; tower isolates WGS-linked to clinical isolates from eight patients, two systems on the same block) is the strongest available Legionnaires candidate for the upstream test: NYC detected it Jul 25, 2025 via daily spatiotemporal surveillance (8 clustered urine-antigen results within ~1 km), and the NEJM Evidence investigation (EVIDpha2600062, PMID 42334300, DOHMH authors) documents pre-outbreak routine water-quality records for the source towers — one with major monitoring failures, one properly monitored but with three intermittent sub-target disinfectant periods in June–July 2025, described as a "slight and intermittent decline in water quality" accompanying Legionella growth.

What public data yield for Harlem:

9.1 Attribution correction — the emergence window, not the diagnosis date

An earlier version of this section rejected all pre-recognition alerts as "background" because they preceded the first cluster diagnosis (Jul 22). That rule was wrong for an early-warning instrument: if only post-diagnosis signals are admissible, early warning is defined out of existence. Diagnosis trails onset by incubation (Legionnaires' ≈ 2–10 d, occasionally to 14) plus testing/reporting lag — and cluster membership is a retrospective classification requiring geographic linkage; a person infected by the same source who lived or traveled outside the mapped zone would be counted in citywide totals but never in the cluster curve. The correct attribution boundary is the biological emergence window, not the administrative record.

The published case definition fixes the emergence window directly: outbreak-associated cases were those who resided, worked, or stayed in the zone from June 30 through August 15 (PHA report / NEJM Evidence, source_data/harlem_pha_report.pdf). Against that window:

Alert (wk ending) Cases vs Jul 25 recognition Class
May 31 wave, Jun 7 wave 10, 14 −8/−6 wk weak — before the exposure-eligibility window opens (Jun 30)
Jun 14 spike 19 −6 wk weak candidate — pre-window, but inside Tower B's documented dip period
Jul 5 spike 20 −3 wk candidate precursor — edge of window (onsets ~Jul 1–3 → exposures ~Jun 20–Jul 1)
Jul 12 spike 24 −2 wk candidate precursor — inside window
Jul 26 spike 32 same week defensible cluster-associated alert

The blocking check passes — the pre-recognition elevation is real and non-circular. The seven consecutive weeks ending Jun 7 → Jul 19 ran 13–24 citywide cases vs 1–13 in the same weeks of 2023 and 2024 — and every one of those weeks ends before Jul 25 and contains zero cluster-member diagnoses (the cluster curve begins Jul 22). The elevation is not the outbreak counting itself. What remains unknowable is whether the people inside those counts were infected by the Harlem source — cluster membership requires zone linkage, so unlinked infections (commuters, out-of-zone residents exposed in Harlem) appear in citywide totals but never in the cluster curve.

The counterevidence, included: Harlem Hospital's tower (Tower B) cultured negative in March and June and was fully disinfected Jul 2 — "three weeks before the first case" per the hospital (closing PR). The same DOHMH review still found three intermittent periods in June–July when disinfectant read below target for two consecutive readings, returning to target after routine biocide dosing — "a slight and intermittent decline in water quality" during which Legionella growth was detected. Tower A (the unregistered construction tower, W 137th St — registered Jul 31, four days after its PCR+ sample) had major monitoring lapses and missed required sampling. WGS linked tower isolates to clinical isolates from eight patients; investigators could not determine which tower infected anyone. Retrospective WQ analysis found one tower carried higher Legionella concentrations and worse overall water quality.

Revised Harlem statement: the frozen detector produced magnitude-tier alerts 3 and 2 weeks before NYC's Jul 25 recognition, the later one squarely inside the outbreak's published exposure-eligibility window, during a sustained pre-recognition elevation that contains no cluster members. Candidate precursors — unproven, unprovable at citywide resolution, not dismissible. Adjudication requires the Tower A/B serial water-quality records. The UES result is unchanged: June 2026 ran flat and the primary run produced no June alerts.

The tower data gap — now precisely located:

What would be needed (the actual data request): operator water-quality logs for those two systems covering ~Mar–Aug 2025 — disinfectant residual readings with timestamps, pH, temperature, conductivity, biocide dosing events, plus routine Legionella sample dates/results. Obtainable via FOIL request to NYC DOHMH or direct request to the corresponding author (Shama D. Ahuja, DOHMH). If obtained: freeze engine, replay chronologically, milestone = Jul 25, 2025 — the first genuine Legionnaires-to-Legionnaires upstream test.


10. Files

File Contents
klein_input_nyc_legionellosis_weekly.csv Detector input — 249 weeks, DATE
klein_input_ues_tower_sampling_daily.csv Environmental input — daily zone sampling events
legionnaires_ues_2026_detection_log.csv Complete raw detector output, primary run
sensitivity_cluster_daily_detection_log.csv Raw output, contaminated-baseline control
environmental_sampling_detection_log.csv Raw output, environmental run
klein_legionnaires_results.json Config, SHA-256 hashes, summary metrics
baseline_sweep_results.json + run_baseline_history_sweep.py Pre-outbreak-history sensitivity sweep (H=10…234), full table
airmode_comparison.json v5.0-lock Air Mode (rolling baseline) vs legacy-fixed comparison
event_history_results.json + run_event_history_experiment.py Prior-event-history experiment (§6): 4 stream starts × 2 baseline architectures
precursor_observability_matrix.csv Cross-portfolio observability matrix (§7)
klein_input_covid_two_stream_weekly.csv + two_stream_covid_results.json + run_two_stream_covid.py Two-stream test (§8): weekly inputs, full detections, per-wave first alerts
legionnaires_ues_2026_timeline.png Cases + Klein signals + recognition + tower response
engine_snapshot_klein_biodefense_v23.3.py Frozen engine copy as executed
build_input_series.py · run_klein_legionnaires.py · run_secondary_analyses.py · make_timeline_figure.py Reproduction scripts
source_data/ Raw pulls: NNDSS JSON, Datawrapper CSVs (UES + Harlem), tower registrations/inspections, DOHMH PDFs + press releases, PHA/NEJM outbreak report (harlem_pha_report.pdf + .txt), archived DOHMH page + press releases

Retrospective case study for Klein's Pollution Solution — Project Promised Land. Detector frozen; result reported as produced.