safety.viz ↔ gsm.safety widget parity

2026-08-15 · derived from both repos' source, not estimated · supports hub requirements #164 and #165

13 renderers, 9 widgets. Four renderers have no R widget, and all nine existing widgets render through a vendored v1.4.0 bundle — two minor releases behind the current v1.6.0. The rule this report supports (@jwildfire, 2026-08-15): every renderer gets an R widget.

The stale-widget defect, named plainly

Widget_HepExplorer() has been rendering the eDISH composite view with a peak computation safety.viz corrected in v1.5.0. The v1.4.0 bundle excludes the baseline record from on-treatment peaks by study day; a participant with no day-0 record gets their own baseline counted as an on-treatment peak (safety.viz#91 fixed this to identity-based exclusion — 24 of 318 demo participants affected). Any R report built with the released gsm.safety v1.0.0 reproduces the pre-fix chart. A widget wrapping a stale renderer is worse than a missing one: it looks done and draws a wrong chart in a clinical display.

Matrix

safety.viz rendererShipped ingsm.safety widgetStatus
histogram≤ v1.1Widget_Histogramstale — v1.4.0 bundle; missing profile drill-down (v1.5.0)
shift-plot≤ v1.1Widget_ShiftPlotstale — v1.4.0 bundle; missing profile drill-down
delta-delta≤ v1.1Widget_DeltaDeltastale — v1.4.0 bundle; missing profile drill-down
results-over-time≤ v1.1Widget_ResultsOverTimestale — v1.4.0 bundle
outlier-explorer≤ v1.1Widget_OutlierExplorerstale — v1.4.0 bundle; missing profile drill-down
ae-timelines≤ v1.1Widget_AeTimelinesstale — v1.4.0 bundle
ae-explorerv1.4.0Widget_AeExplorerstale — v1.4.0 bundle
hep-explorerv1.2.0Widget_HepExplorerstale + defect — pre-fix peak computation; vendored schema also stale
qt-explorerv1.4.0Widget_QtExplorerstale — v1.4.0 bundle; missing view-selector (v1.4.1), profile drill-down (v1.5.0)
hep-waterfallv1.5.0missing
participant-profilev1.5.0missing — R surface needs design (multi-domain payload, event-driven mount)
nep-explorerv1.6.0missing
time-to-eventunreleased (dev → v1.7.0)missing — widget requirement filed ahead per the new rule

How staleness was determined

Why it drifted, and what now prevents it

Delivery

Drafted by Claude Code using Fable 5 in an unattended session — not yet reviewed by @jwildfire.