sysadmin and Claude Opus 4.8
ecda200180
feat(webui): system-health dashboard ( Closes #639 )
...
Phase 1 child of the Web Console epic #631 . Adds the operator-facing
system-health dashboard on top of the read-only system-health API landed
by #634 , so runtime problems are visible on a surface instead of being
discovered late through failed LLM sessions.
- webui/system_health_views.py (new): renders the SystemHealthSnapshot as
readiness, stale-runtime parity, version/uptime, dependency, MCP
namespace, probe-error, and recovery cards.
- webui/app.py: GET /system-health, sharing load_system_health() with the
JSON API so page and API cannot disagree. ?deep=1 behaves as on the API.
- webui/layout.py: nav entry and health card/badge styles.
- tests/test_webui_system_health_dashboard.py (new, 26 cases).
- docs/webui-local-dev.md: route, field authority, and redaction split.
Readiness honesty is preserved from the API: ready and readiness_complete
render separately, a probe that did not run is listed under "Not probed"
rather than counted healthy, and mutation safety is never claimed when the
runtime is stale or parity is indeterminate.
Redaction is split by field kind. Free text (probe details, reasons, probe
errors) passes through system_health.redact. Structured fields (commit
SHAs, probe names, statuses, timestamps) are HTML-escaped only: redact's
opaque-token rule matches any run of 32 or more characters, so routing a
40-character git SHA through it rendered "[redacted]" and blanked the
parity evidence the page exists to show.
Non-goals honored: no restart or reload controls (Phase 2, #642 ), no
manual process-kill guidance (#630 ). Read-only throughout.
Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected] >
2026-07-23 16:08:36 -04:00
..
2026-07-02 15:31:56 -05:00
2026-06-21 17:26:18 -04:00
2026-07-22 05:40:15 -05:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-19 14:12:04 -04:00
2026-07-20 13:52:39 -05:00
2026-07-19 14:12:04 -04:00
2026-07-20 22:40:39 -04:00
2026-07-10 02:54:20 -04:00
2026-07-07 09:20:50 -04:00
2026-07-07 05:38:32 -04:00
2026-07-12 09:00:45 -04:00
2026-07-13 13:40:38 -04:00
2026-07-22 23:00:24 -05:00
2026-07-15 21:13:21 -04:00
2026-07-17 19:42:52 -04:00
2026-07-21 15:41:24 -04:00
2026-07-20 12:55:40 -05:00
2026-07-05 15:16:36 -04:00
2026-07-08 22:36:10 -04:00
2026-07-17 19:42:52 -04:00
2026-07-13 21:48:28 -04:00
2026-07-08 03:17:38 -04:00
2026-07-08 03:44:58 -04:00
2026-07-07 04:25:02 -04:00
2026-07-02 06:13:26 -04:00
2026-07-05 17:18:48 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-05 03:33:12 -04:00
2026-07-02 02:34:16 -04:00
2026-07-08 02:19:37 -04:00
2026-07-04 18:35:45 -04:00
2026-07-15 21:13:21 -04:00
2026-07-08 22:30:21 -04:00
2026-07-21 18:07:21 -04:00
2026-07-09 15:39:54 -04:00
2026-07-18 16:19:04 -04:00
2026-07-20 12:55:40 -05:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-06 01:26:33 -04:00
2026-07-18 03:44:28 -04:00
2026-07-23 00:05:35 -04:00
2026-07-17 19:42:52 -04:00
2026-07-05 03:23:40 -04:00
2026-07-07 04:27:02 -04:00
2026-07-09 12:56:12 -04:00
2026-07-07 04:26:58 -04:00
2026-07-13 02:29:46 -04:00
2026-07-07 04:35:34 -04:00
2026-07-07 02:57:45 -04:00
2026-07-10 03:18:54 -04:00
2026-07-12 13:15:58 -04:00
2026-07-20 12:55:40 -05:00
2026-07-21 20:45:17 -05:00
2026-07-12 13:15:58 -04:00
2026-07-17 14:04:45 -04:00
2026-07-13 14:35:15 -04:00
2026-07-13 02:29:46 -04:00
2026-07-13 21:48:28 -04:00
2026-07-13 17:37:13 -04:00
2026-07-13 16:40:58 -04:00
2026-07-13 14:35:15 -04:00
2026-07-17 23:31:39 -04:00
2026-07-18 01:27:26 -04:00
2026-07-15 13:55:06 -04:00
2026-07-15 21:13:21 -04:00
2026-07-17 14:25:08 -04:00
2026-07-16 15:47:52 -04:00
2026-07-19 23:21:54 -04:00
2026-07-17 22:45:18 -04:00
2026-07-18 12:02:31 -04:00
2026-07-18 12:59:51 -04:00
2026-07-18 13:55:46 -04:00
2026-07-18 17:38:54 -04:00
2026-07-18 19:31:55 -04:00
2026-07-20 02:52:29 -05:00
2026-07-19 12:59:08 -04:00
2026-07-22 00:39:51 -04:00
2026-07-22 01:10:48 -04:00
2026-07-19 18:27:34 -04:00
2026-07-20 02:52:29 -05:00
2026-07-22 00:39:51 -04:00
2026-07-21 16:52:23 -04:00
2026-07-21 18:07:21 -04:00
2026-07-22 16:18:00 -05:00
2026-07-22 17:27:49 -05:00
2026-07-08 03:27:37 -04:00
2026-07-07 05:41:33 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-07 23:40:12 -05:00
2026-07-07 16:18:42 -04:00
2026-07-10 11:30:53 -04:00
2026-07-08 02:22:54 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 16:17:31 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 11:30:53 -04:00
2026-07-07 05:22:08 -04:00
2026-07-07 04:25:02 -04:00
2026-07-15 21:13:21 -04:00
2026-07-08 04:08:07 -04:00
2026-07-15 21:13:21 -04:00
2026-07-10 13:05:27 -04:00
2026-07-22 05:40:15 -05:00
2026-07-13 21:48:28 -04:00
2026-07-06 12:37:04 -04:00
2026-07-19 14:43:10 -04:00
2026-07-09 18:44:04 -04:00
2026-07-08 13:43:39 -04:00
2026-07-17 19:42:52 -04:00
2026-07-08 22:22:34 -04:00
2026-07-16 21:21:39 -04:00
2026-07-13 21:48:28 -04:00
2026-07-05 15:16:55 -04:00
2026-07-09 08:20:21 -04:00
2026-07-17 13:30:52 -04:00
2026-07-15 21:13:21 -04:00
2026-07-18 10:12:49 -04:00
2026-07-12 22:35:14 -04:00
2026-06-21 18:08:53 -04:00
2026-07-20 18:58:40 -05:00
2026-07-17 20:42:25 -04:00
2026-07-07 04:08:27 -04:00
2026-07-20 12:55:40 -05:00
2026-07-09 10:43:42 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-09 09:25:08 -04:00
2026-07-07 17:19:37 -04:00
2026-07-18 12:59:51 -04:00
2026-07-09 15:49:14 -04:00
2026-07-15 21:13:21 -04:00
2026-07-17 13:57:22 -04:00
2026-07-08 23:33:51 -04:00
2026-07-08 02:17:58 -04:00
2026-07-17 10:42:53 -04:00
2026-07-07 13:06:07 -04:00
2026-07-12 13:15:58 -04:00
2026-07-17 23:45:44 -04:00
2026-07-08 23:04:44 -04:00
2026-07-07 04:46:48 -04:00
2026-07-05 15:16:55 -04:00
2026-07-10 13:05:27 -04:00
2026-07-07 04:57:50 -04:00
2026-07-07 09:20:50 -04:00
2026-07-09 00:09:47 -04:00
2026-07-07 09:15:13 -04:00
2026-07-19 02:26:58 -04:00
2026-07-12 21:31:00 -04:00
2026-07-09 12:36:50 -04:00
2026-07-07 05:45:51 -04:00
2026-07-07 09:25:55 -04:00
2026-07-07 09:25:55 -04:00
2026-07-02 05:37:41 -04:00
2026-07-15 21:13:21 -04:00
2026-07-07 02:53:25 -04:00
2026-07-19 23:21:54 -04:00
2026-07-13 13:40:38 -04:00
2026-07-09 19:08:28 -04:00
2026-07-08 00:37:54 -04:00
2026-07-09 09:25:08 -04:00
2026-07-07 09:14:29 -04:00
2026-07-05 20:16:04 -04:00
2026-07-13 17:37:13 -04:00
2026-07-08 11:13:43 -04:00
2026-07-08 22:22:34 -04:00
2026-07-07 09:19:33 -04:00
2026-07-07 09:23:50 -04:00
2026-07-07 05:42:08 -04:00
2026-07-07 05:12:01 -04:00
2026-07-07 05:27:24 -04:00
2026-07-08 03:33:31 -04:00
2026-07-07 05:33:12 -04:00
2026-07-07 05:39:43 -04:00
2026-07-07 05:13:30 -04:00
2026-07-07 05:08:53 -04:00
2026-07-07 17:20:01 -04:00
2026-07-07 05:31:24 -04:00
2026-07-18 13:55:46 -04:00
2026-07-07 10:24:54 -04:00
2026-07-07 09:08:38 -04:00
2026-07-07 05:44:18 -04:00
2026-07-07 13:09:58 -04:00
2026-07-07 11:22:00 -04:00
2026-07-07 05:19:22 -04:00
2026-07-07 05:28:19 -04:00
2026-07-07 05:26:37 -04:00
2026-07-06 11:42:14 -04:00
2026-07-15 21:13:21 -04:00
2026-07-15 21:13:21 -04:00
2026-07-11 19:49:16 -04:00
2026-07-07 17:44:22 -04:00
2026-07-15 21:13:21 -04:00
2026-07-21 02:33:51 -05:00
2026-07-20 04:08:52 -05:00
2026-07-12 02:35:47 -04:00
2026-07-09 17:19:29 -04:00
2026-07-10 13:05:27 -04:00
2026-07-06 14:52:12 -04:00
2026-07-11 20:07:40 -04:00
2026-07-11 20:07:40 -04:00
2026-07-16 14:58:43 -05:00
2026-07-20 12:28:07 -04:00
2026-07-08 02:22:54 -04:00
2026-07-17 14:25:08 -04:00
2026-07-08 03:14:32 -04:00
2026-07-13 13:40:38 -04:00
2026-07-07 00:28:32 -04:00
2026-07-07 00:17:26 -04:00
2026-07-22 16:18:00 -05:00
2026-07-21 15:41:24 -04:00
2026-07-13 02:29:46 -04:00
2026-07-08 03:46:25 -04:00
2026-07-07 00:22:28 -04:00
2026-07-07 12:53:55 -04:00
2026-07-22 04:52:21 -05:00
2026-07-07 15:20:47 -04:00
2026-07-09 11:59:23 -04:00
2026-07-22 14:37:35 -05:00
2026-07-09 11:50:40 -04:00
2026-07-07 15:34:39 -04:00
2026-07-07 15:29:56 -04:00
2026-07-09 11:59:23 -04:00
2026-07-22 16:12:07 -04:00
2026-07-07 14:53:16 -04:00
2026-07-09 11:59:23 -04:00
2026-07-09 00:04:11 -04:00
2026-07-09 11:50:40 -04:00
2026-07-23 16:08:36 -04:00
2026-07-22 15:59:30 -05:00
2026-07-22 06:10:34 -05:00
2026-07-07 15:26:22 -04:00
2026-07-06 01:36:10 -04:00
2026-07-06 14:44:41 -04:00
2026-07-19 14:43:10 -04:00
2026-07-15 21:13:21 -04:00
2026-07-11 19:49:16 -04:00
2026-07-07 05:09:44 -04:00
2026-07-08 11:15:55 -04:00
2026-07-07 17:30:35 -04:00