Evidence

Every figure here has been independently re-extracted from MIMIC-IV and reproduced across five or more separate pipeline runs — not computed once and taken on faith.

Verified figures

StatisticManuscript draftVerifiedStatus
Cohort size11,35411,354exact match
Exp. 1 — dose-determined (4h)30.5%32.3%revised
Exp. 1 — dose-determined (24h)26.3%28.6%revised
Exp. 2 — AUROC, A_full0.9000.900exact match
Exp. 2 — AUROC, E_no_explicit_treatment_features0.7910.791exact match
Exp. 2 — recoverability gap≈0.1080.109essentially exact
Exp. 3 — mean window overlap (24h)56.1%31.1%revised down
Exp. 3 — median overlap (24h)100%12.4%revised down
Exp. 3 — % >50% overlap55.7%28.7%revised down

Struck-through cells are the original manuscript draft's figures, superseded after two extraction bugs were found and fixed — not hidden, just clearly marked as historical.

The 11,354-stay cohort size above is the published Sepsis-3 table this manuscript draft used — now a sensitivity cohort. The primary cohort is 13,192 stays (MIMIC-IV v3.1, Sepsis-3 recomputed; see docs/DECISIONS_H3.md), which this historical verification predates.

What Experiment 2's gap reflects

The AUROC gap (0.900 → 0.791) survived a 15× difference in underlying vasopressor-dose row counts almost untouched — 0.109 verified vs. ≈0.108 in the original, inflated-data run, so the gap itself is not an artifact of the data bug. Exploratory work in review (exp-persistence, not pre-registered) finds what the gap is actually made of: SOFA's dose-coded cardiovascular and total terms carry the currently running treatment's dose tier into the state, and that effect runs largely through treatment persistence rather than a SOFA-specific mechanism. Once an "infusion running right now" indicator is included, SOFA's own terms add almost nothing on top of it — (A+I) minus (E+I) is 0.000 [-0.000, +0.001] at the decision point, and under 0.01 at every offset tested.

351,720
verified vasopressor-dose rows (clean cohort)
5,428,937
original (bugged) row count — 15.44× inflated
0.001
difference between the two runs' AUROC gap

The three bugs, found and fixed in the open

Bug 1 — WRITE_APPEND
The cohort table's BigQuery load had no write_disposition. A re-run against an already-populated table silently duplicated rows (~15x). Confirmed twice — by code inspection, and by recovering the original buggy Colab run and reproducing its exact inflated numbers.
Bug 2 — schema autodetect
BigQuery's schema autodetection mapped a timestamp column to the wrong type, breaking downstream joins. Fixed with an explicit schema.
Bug 3 — sum vs. union
The window-overlap calculation summed overlapping intervals instead of taking their union, double-counting patients on simultaneous multi-drug vasopressor therapy (34.8% of the cohort).

Full diagnostic trail — including the false starts — in ROADMAP.md.

A scope note: this evidence is task-specific

Everything on this page evaluates a feature's relationship to next-action prediction specifically. That's a deliberate scope, not an oversight — the same feature's status can differ entirely for a different task. A cardiovascular-subscore value that's treatment-confounded for predicting the next vasopressor action may be exactly the right feature for predicting mortality: mortality prediction doesn't carry the "was this information available before the decision" constraint that action-prediction does. None of the figures above should be read as "this feature is bad" in general — only "this feature's value for predicting the next action is inflated by treatment history, by this much." See Terminology for the full distinction this depends on.

Limitation: sanitization has a clinical-validity cost

Variant D's fix (recompute the total from a MAP-only cardiovascular proxy) removes the treatment-confounding this project measures — but it isn't free. The MAP-only branch of the scoring rule (score_map = 1 if MAP < 70 else 0) is a two-level signal that cannot distinguish a patient who is healthy and untreated from one who is successfully treated and still critically ill — the second patient's MAP looks the same as the first's once vasopressors have done their job.

Concrete example, computed from the actual scoring function: a patient on norepinephrine 0.15 mcg/kg/min with MAP 74 (successfully restored to normal by the drug they're actively receiving).

4
Variant A cardiovascular SOFA — correctly reflects this patient is in active shock requiring treatment
0
Variant D cardiovascular SOFA — incorrectly reads as healthy, since MAP alone is now normal

This is a genuine tradeoff, not an argument that sanitization is the wrong approach: predictive purity (Variant D/E's lower action-recoverability) is bought at a real cost in clinical validity (losing the "needed treatment to reach this value" signal). Whether that cost is acceptable is task-dependent (see the scope note above) — and is exactly what motivates disentangling severity from treatment history as two separate, explicit terms, rather than collapsing them into one composite score either way.

Testing that concern quantitatively: it doesn't hold at the cohort level

The concrete example above is real, but does it add up to variant D/E being meaningfully worse at predicting mortality across the whole cohort? Trained the same way as Experiment 2 (logistic regression / random forest / gradient boosting, clustered bootstrap CIs) but predicting in-hospital mortality from the state at a single fixed 24h decision point — matching SOFA's own original validation convention — rather than the next action at every timestep:

VariantAction-recoverability AUROC (Exp. 2)Mortality AUROC (Exp. 6, 24h, n=11,336)
A_full0.9000.793
B_no_total_sofa0.9000.790
C_no_cardio_sofa0.8850.788
D_treatment_decomposed0.7920.784
E_no_explicit_treatment_features0.7910.782
0.109
action-recoverability gap, A minus E — large
0.011
mortality-AUROC gap, A minus E — about 3% to 10% of the action gap (paired ratio 0.065, 95% CI [0.036, 0.095], gb; exploratory work in review, exp-paired-cis), not "roughly a tenth"

Reported as the actual result, not adjusted toward the anticipated one: sanitizing the state costs almost nothing in mortality-prediction accuracy, despite costing a lot in next-action predictability. This does not confirm the qualitative concern above — at least not as measured by whole-cohort mortality prediction at a fixed timepoint. The individual-patient failure mode is still mathematically real; it just doesn't appear to aggregate into a large mortality-AUROC loss. Full figures: results/experiment6_mortality_vs_action_recoverability.json.

A second mechanism instance: respiratory SOFA

Theorems 1–2 are proofs about the cardiovascular subscore specifically. Does the diagnostic generalize to a different SOFA subscore, or was it a one-off property? Checked against respiratory SOFA — deliberately isolated: this does not modify the shared `sofa_resp` function or any of Experiments 1, 2, 3, or 6's already-published figures, all of which continue to use the existing implementation unchanged.

The official rule (Vincent et al., 1996) scores respiratory SOFA from the PaO2/FiO2 ratio, but its two highest tiers (3, 4) additionally require the patient to be on mechanical ventilation — a conditional this project's own sofa_resp does not implement. Checking whether the same non-identifiability pattern as Theorem 1 holds here turned up something more precise: it doesn't, not in the same form. Fixing ventilation status doesn't collapse the score to a constant the way fixing any nonzero dose does for cardiovascular SOFA — a ventilated patient's score still varies across all five PF tiers. What actually happens is narrower: a score-shift collision — for PF in [100, 200), two patients with the identical PF ratio get different official scores (3 vs. 2) purely as a function of treatment status.

82.6%
of the cohort was ever mechanically ventilated
62.1%
of eligible timesteps fall in the ambiguous PF zone [100,300) where ventilation status can change the official score
4.7%
aggregate disagreement between the current (PF-only) and official scoring — modest largely because ventilation and low PF are strongly correlated (93.4% of the ambiguous zone is ventilated), not because the simplification is equivalent

The collision zone directly, PF ∈ [100,200), n=18,360:

16,978
ventilated timesteps — official score 3
1,382
non-ventilated timesteps, identical PF range — official score 2

What this means for the general framework: the diagnostic generalizes, but not uniformly — a second confirmed instance with a genuinely different mathematical shape (a bounded-range collision, not an unbounded-range constancy) is what starts to separate "an audit of one score" from "a methodology." Full figures: results/experiment7_respiratory_sofa_summary.json, proof: FORMAL_ANALYSIS.md §4.5.

A pre-registered disentanglement test — falsified

A reviewer suggestion proposed a specific alternative to Variant D: instead of stripping treatment signal out of the severity term, keep severity untouched and add explicit treatment-history features alongside it — testing whether that recovers Variant D's small mortality-predictive-validity loss (0.011 AUROC, above) without reintroducing Experiment 2's action-recoverability gap. Full design: docs/PHASE4_VARIANT_F_SPEC.md.

Variant F = Variant D's severity term (unchanged) plus two explicit treatment-history features, deliberately chosen to avoid re-exposing the raw dose value Variant D removes: hours on vasopressor (continuous duration, ending at the decision boundary) and hours since dose-tier change (regimen recency, tied to the same tier thresholds the SOFA score itself uses — not raw rate, which titrates too often to carry signal). The success criterion was stated before the experiment ran: F would be useful if its mortality AUROC moved toward A's while its action-recoverability stayed close to D's — action-recoverability rising toward A instead was named in advance as evidence against the hypothesis.

VariantAction-recoverability AUROCMortality AUROC
A_full0.9000.793
D_treatment_decomposed0.7920.784
F_disentangled (D + history features)0.9140.790
0.914
F's action-recoverability AUROC — not close to D's (0.792), and higher than A's (0.900)
62%
of D's small mortality-AUROC gap to A recovered by F (0.006 of 0.009) — a partial, not full, recovery

The pre-registered falsification condition was met, unambiguously: F's action-recoverability didn't drift toward A's, it exceeded it. Two purely temporal features — how long a patient has been on a vasopressor, and how long since their dose tier last changed — are on their own more predictive of the next vasopressor decision than the entire physiology-plus-severity state. This sharpens the treatment-persistence mechanism already visible in the offset-decay curve below: vasopressor courses are highly autocorrelated, and duration/recency features encode that autocorrelation almost losslessly, independent of physiology. It's independent confirmation of a point made elsewhere on this site: the predictive power this project measures was never really about SOFA's construction quirk specifically — it's ordinary treatment persistence, and this experiment just gives a cleaner, more direct instrument for it than the original AUROC gap. This is not evidence that Variant D's own design is wrong — it shows that any specific choice of history feature carries a real risk of reconstructing the action independent of physiology, and that risk has to be tested per feature set, not assumed away. Full figures: results/experiment8_variant_f_summary.json, discussion: FORMAL_ANALYSIS.md §7.5.

H3, run

The pre-registered paired-bootstrap test has been run: Delta = AUROC(0) minus AUROC(8) = 0.147, 95% CI [0.140, 0.154] (bin-index offsets, common rows, logreg) — Prediction A, per docs/DECISIONS_H3.md. A synthetic ground-truth check (exploratory work in review, exp-simulation) finds this same rule fires whenever a state encodes a currently-running treatment under realistic persistence, whether or not a SOFA-specific mechanism is present — so Prediction A on its own does not separate the SOFA-construction mechanism from ordinary treatment persistence. Exploratory work in review, none of which changes the decision: persistence, label alignment, paired CIs, dose decisions, simulation. See Status for the full run.