rcourtman
edae6d1edc
refactor: split alert config and callbacks
...
Extract alert config types, normalization, and identity helpers into internal/alerts/config while preserving the existing alerts package API through aliases and wrappers.
Move Manager callback lifecycle state into a same-package callbackBus, keeping public Set/Subscribe methods unchanged.
Harden metrics SQLite artifacts to owner-only permissions and cover permissive umask behavior.
Proof: go test -json ./internal/api -count=1; go test ./internal/alerts/... ./internal/monitoring ./internal/ai/... ./internal/websocket ./internal/config ./pkg/metrics; go test ./internal/alerts/... ./pkg/metrics
2026-05-06 13:01:32 +01:00
..
2026-03-18 16:06:30 +00:00
2026-04-25 22:35:19 +01:00
2026-03-18 16:06:30 +00:00
2026-05-01 21:36:28 +01:00
2026-03-18 16:06:30 +00:00
2026-03-19 14:30:45 +00:00
2026-05-01 21:36:28 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-21 16:06:49 +01:00
2026-03-29 14:18:20 +01:00
2026-03-18 16:06:30 +00:00
2026-03-29 14:28:48 +01:00
2026-04-25 21:13:53 +01:00
2026-03-18 16:06:30 +00:00
2026-05-05 22:10:50 +01:00
2026-04-01 14:47:58 +01:00
2026-03-18 16:06:30 +00:00
2026-05-04 23:35:39 +01:00
2026-05-06 13:01:32 +01:00
2026-05-01 20:28:11 +01:00
2026-03-30 13:34:08 +01:00
2026-03-30 13:34:08 +01:00
2026-01-25 21:08:44 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2026-01-01 22:29:15 +00:00
2025-12-12 11:29:47 +00:00
2026-03-18 16:06:30 +00:00
2025-12-12 14:26:10 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-20 11:05:08 +00:00
2026-04-11 14:51:10 +01:00
2026-03-18 16:06:30 +00:00
2026-05-01 20:28:11 +01:00
2026-03-18 16:06:30 +00:00
2026-04-09 20:15:17 +01:00
2026-01-25 21:08:44 +00:00
2026-01-30 19:02:14 +00:00
2026-03-25 17:38:28 +00:00
2026-01-30 19:02:14 +00:00
2026-01-30 19:02:14 +00:00
2026-03-25 17:36:31 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-30 13:34:08 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-02-01 10:12:23 +00:00
2026-01-19 19:20:49 +00:00
2026-01-19 19:20:49 +00:00
2026-03-30 13:34:08 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-29 13:38:06 +01:00
2026-03-19 04:15:26 +00:00
2026-03-29 13:38:06 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 17:22:24 +00:00
2025-12-12 13:49:37 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-29 13:49:04 +00:00
2025-12-12 09:45:57 +00:00
2026-03-18 16:06:30 +00:00
2026-04-09 20:15:17 +01:00
2026-04-28 15:49:18 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-03 19:00:40 +01:00
2026-04-28 15:49:18 +01:00
2026-04-03 19:45:38 +01:00
2026-02-01 18:07:41 +00:00
2026-04-03 19:45:38 +01:00
2026-04-03 19:45:38 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-04-28 15:49:18 +01:00
2026-03-29 13:38:06 +01:00
2026-02-04 19:56:12 +00:00
2026-04-01 14:47:58 +01:00
2026-04-01 14:47:58 +01:00
2026-03-18 16:06:30 +00:00
2026-04-28 16:11:27 +01:00
2026-02-01 16:27:25 +00:00
2026-05-01 20:28:11 +01:00
2026-03-18 16:06:30 +00:00
2026-02-01 16:27:25 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-05-01 20:28:11 +01:00
2026-05-01 20:28:11 +01:00
2026-01-30 19:02:14 +00:00
2026-03-30 13:34:08 +01:00
2026-04-03 19:45:38 +01:00
2026-04-28 16:11:27 +01:00
2026-04-28 16:11:27 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-30 11:57:49 +01:00
2026-03-18 16:06:30 +00:00
2026-03-30 11:57:49 +01:00
2026-01-24 22:41:43 +00:00
2026-04-03 19:45:38 +01:00
2026-03-30 13:34:08 +01:00
2026-04-01 23:09:32 +01:00
2026-03-30 13:34:08 +01:00
2026-03-30 13:34:08 +01:00
2026-04-28 16:11:27 +01:00
2025-12-12 14:11:28 +00:00
2026-04-25 20:41:13 +01:00
2026-04-25 20:41:13 +01:00
2026-04-25 20:41:13 +01:00
2026-04-25 20:41:13 +01:00
2026-03-19 04:07:47 +00:00
2026-03-19 04:07:47 +00:00
2026-03-18 16:06:30 +00:00
2026-03-30 13:34:08 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-12-10 08:35:24 +00:00
2026-04-25 21:13:53 +01:00
2026-04-28 16:11:27 +01:00
2026-03-18 16:06:30 +00:00
2026-04-21 16:06:49 +01:00
2026-03-18 16:06:30 +00:00
2026-05-01 21:36:28 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00