mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-10-19 10:33:29 +00:00
Notification delivery health was rendered by exactly one component on the destinations config tab. A destination that stops delivering is invisible by nature, because the failure is the channel that would have reported it, so confining the only evidence to a tab people open once during setup means the state persists indefinitely. Production telemetry shows it persisting. 78 installs retry every notification to the maxAttempts ceiling and deliver almost nothing: 155,967 attempts and 221 deliveries across a week. 50 of them have not delivered a single notification in 30 days, and another 28 delivered normally at some point and have since stopped, which is the worse case because nothing about the estate looks different. The dominant terminal failure classes are authentication and configuration, so most of these are fixable in minutes by the operator who cannot currently tell there is anything to fix. Extract the delivery-health load into useNotificationDeliveryHealth and render the existing warning on the alerts overview as well as the destinations tab. The shared hook also holds the trigger rule, so both surfaces agree on what counts as needing attention and neither can warn before the first load resolves. This does not make Pulse monitor its own delivery. Every alert type is resource-scoped and there is no system-scoped alert concept, so raising this like any other monitored condition remains open. Proof: useNotificationDeliveryHealth.test.tsx pins the trigger rule across healthy, degraded, server-reported-unavailable and unreachable-endpoint cases, plus the silent-until-loaded guard. Verified live at 1280x800 and 375x812: a healthy queue leaves the overview clean, and a degraded payload renders the warning above the stat cards with the dominant failure class named. Contract-Neutral: frontend-only reuse of the existing /api/notifications/health payload on a second surface; no subsystem Canonical Files/Shared Boundaries/Extension Points delta and no API change. Proof ships as useNotificationDeliveryHealth.test.tsx; the alerts verification-artifact list enumerates existing filenames, so a new hook's own test cannot appear on it. |
||
|---|---|---|
| .. | ||
| prototypes | ||
| public | ||
| scripts | ||
| src | ||
| .bundlesize.json | ||
| .gitignore | ||
| .jscpd.json | ||
| .prettierignore | ||
| .prettierrc | ||
| browser-verification.json | ||
| DESIGN_SYSTEM.md | ||
| eslint.config.js | ||
| hosts-tab.txt | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.js | ||
| tailwind.config.js | ||
| ThresholdsTableTop.txt | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| update_skeletons.cjs | ||
| update_sparkline.cjs | ||
| update_sparkline.js | ||
| update_sparkline_size.cjs | ||
| vite.config.ts | ||