shankar0123
596d86a206
feat(M48): continuous TLS health monitoring — endpoint state machine, shared tlsprobe, 8 API endpoints, GUI
Adds continuous TLS endpoint health monitoring that closes the deploy→verify→monitor loop.
After M25 verifies a deployment succeeded once, M48 continuously confirms it stays healthy.
Key components:
- Shared `internal/tlsprobe/` package extracted from network scanner for reuse
- Health status state machine: healthy → degraded (2 failures) → down (5 failures),
plus cert_mismatch when served fingerprint differs from expected
- 8th scheduler loop (60s tick, per-endpoint configurable intervals)
- PostgreSQL migration 000011: endpoint_health_checks + endpoint_health_history tables
- 8 REST API endpoints (CRUD, history, acknowledge, summary)
- Health Monitor GUI page with summary bar, status table, create modal, auto-refresh
- 38 new tests (5 tlsprobe + 11 domain + 10 service + 8 handler + 4 frontend)
- All coverage thresholds maintained (service 68%, handler 83%, domain 87%, middleware 63%)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 21:45:45 -04:00
..
2026-03-27 22:53:46 -04:00
2026-03-27 21:35:22 -04:00
2026-04-15 21:05:14 -04:00
2026-04-15 21:05:14 -04:00
2026-03-15 00:25:01 -04:00
2026-03-14 21:38:11 -04:00
2026-04-04 00:20:13 -04:00
2026-04-04 00:20:13 -04:00
2026-04-09 23:09:40 -04:00
2026-03-17 19:32:29 -04:00
2026-04-02 17:02:20 -04:00
2026-04-04 01:09:53 -04:00
2026-04-09 23:09:40 -04:00
2026-04-04 01:09:53 -04:00
2026-04-04 01:09:53 -04:00
2026-03-20 20:39:49 -04:00
2026-03-20 20:39:49 -04:00
2026-04-04 00:20:13 -04:00
2026-03-30 14:10:42 -04:00
2026-03-30 14:10:42 -04:00
2026-03-28 21:18:35 -04:00
2026-03-28 21:25:25 -04:00
2026-03-24 00:25:00 -04:00
2026-03-30 00:51:18 -04:00
2026-03-25 15:31:06 -04:00
2026-04-15 21:05:14 -04:00
2026-03-28 16:16:19 -04:00
2026-03-30 00:51:18 -04:00
2026-04-15 21:45:45 -04:00
2026-04-15 21:45:45 -04:00
2026-04-15 21:05:14 -04:00
2026-04-15 21:05:14 -04:00
2026-04-09 23:09:40 -04:00
2026-04-04 00:20:13 -04:00
2026-04-04 00:20:13 -04:00
2026-04-04 00:20:13 -04:00
2026-04-07 20:21:09 -04:00
2026-04-04 00:20:13 -04:00
2026-04-02 17:02:20 -04:00
2026-04-15 21:05:14 -04:00
2026-03-28 14:11:16 -04:00
2026-04-15 21:45:45 -04:00
2026-03-15 00:25:01 -04:00
2026-03-22 10:59:18 -04:00
2026-03-21 23:43:32 -04:00
2026-03-20 01:20:03 -04:00
2026-03-17 19:32:29 -04:00
2026-03-27 23:20:28 -04:00
2026-03-20 20:39:49 -04:00
2026-03-20 20:39:49 -04:00
2026-04-15 00:22:57 -04:00
2026-04-15 21:05:14 -04:00
2026-04-04 00:20:13 -04:00
2026-04-04 00:20:13 -04:00
2026-04-04 00:20:13 -04:00
2026-04-15 16:47:18 -04:00
2026-04-15 21:05:14 -04:00
2026-04-04 00:20:13 -04:00
2026-03-25 20:55:48 -04:00
2026-03-24 12:17:24 -04:00
2026-04-04 01:09:53 -04:00
2026-04-07 20:21:09 -04:00
2026-03-30 00:51:18 -04:00
2026-03-20 01:20:03 -04:00
2026-04-15 21:05:14 -04:00
2026-03-30 14:10:42 -04:00
2026-03-27 21:11:16 -04:00