Juan Denis and Claude Fable 5
9f92850cbd
feat(security)!: extract the install-gated security suite to extensions (plan 47 Ph3b-5 / plan 55 Ph3)
...
The 1791-line security omnibus splits along tool lines and the install-gated
surfaces leave core for five standalone extensions - serverkit-clamav
(ClamAV+YARA scanning, quarantine, scan jobs), serverkit-fail2ban
(management UI; probes stay core on Fail2banJailService), serverkit-lynis,
serverkit-auto-updates, and serverkit-image-scan (headless CVE/SBOM
scanning; models stay core per the plan 52 D1 data seam). Each mounts its
routes back at the same /api/v1/security prefix when installed, so route
shapes never change; absent extensions mean plain 404s, no dead UI.
Core keeps the zero-host-package baseline: status/config, legacy integrity,
suspicious activity/events, SSH keys, IP lists, the audit (fail2ban check
now probes via the jail service; updates check was already self-contained),
scoped FIM, and the scan/alert logs + notification helpers extensions write
through. Job handlers for security.malware_scan/lynis_scan/image_scan now
come exclusively from the extensions' manifest jobs key.
Security page becomes core-tabs-only; extension tabs contribute into the
security tab group (3a groupId). Overview posture drops the hardcoded
ClamAV rows and offers the Marketplace when no security extension is
installed. Upgrade parity: run_registry_auto_install() installs each
extension from the registry once, gated on the host tool actually being
present, fail-soft until the registry entry is published.
Wizard round 2 (Ph5): a security-posture chooser (minimal/recommended/
hardened) on the Summary step, catalog-resolved so unpublished slugs never
render dead installs; persisted as onboarding_security_posture.
Moved test suites re-home to the extension repos; panel keeps
test_security_suite_extraction.py (18 proving tests: absent-shape 404s,
lean summary, jail-service probes, migration gates, posture wiring).
docs/API_SURFACE.md regenerated (34 operations moved out).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-29 13:53:04 -04:00
..
2026-07-07 20:29:31 -04:00
2026-08-23 16:41:02 -04:00
2026-08-18 03:11:37 -04:00
2026-08-27 20:30:17 -04:00
2026-08-21 19:40:42 -04:00
2026-08-27 05:03:31 -04:00
2026-08-21 23:05:56 -04:00
2026-08-19 00:13:59 -04:00
2026-08-19 05:46:25 -04:00
2026-08-27 04:47:38 -04:00
2026-08-18 22:06:35 -04:00
2026-08-18 19:33:57 -04:00
2026-08-19 21:44:45 -04:00
2026-08-19 00:11:16 -04:00
2026-08-18 11:24:20 -04:00
2026-08-19 10:06:38 -04:00
2026-08-19 10:06:38 -04:00
2026-08-19 00:03:50 -04:00
2026-08-19 00:03:50 -04:00
2026-08-27 04:47:38 -04:00
2026-08-18 11:24:20 -04:00
2026-08-12 18:15:53 -04:00
2026-08-27 23:54:01 -04:00
2026-08-06 02:59:14 -04:00
2026-08-19 02:04:29 -04:00
2026-08-16 05:27:08 -04:00
2026-08-19 01:42:13 -04:00
2026-05-31 14:46:47 -04:00
2026-05-31 16:08:13 -04:00
2026-06-12 17:33:29 -04:00
2026-06-01 02:39:05 -04:00
2026-08-21 10:53:56 -04:00
2026-07-25 14:15:29 -04:00
2026-08-05 02:38:41 -04:00
2026-08-18 02:47:57 -04:00
2026-08-18 03:11:37 -04:00
2026-08-18 02:42:25 -04:00
2026-08-18 19:33:57 -04:00
2026-08-06 02:59:14 -04:00
2026-08-27 05:03:40 -04:00
2026-08-04 08:53:27 -04:00
2026-07-21 22:57:33 -04:00
2026-08-18 11:24:20 -04:00
2026-08-12 20:26:04 -04:00
2026-08-05 02:38:41 -04:00
2026-08-09 13:53:59 -04:00
2026-08-18 02:42:39 -04:00
2026-08-19 21:44:45 -04:00
2026-08-05 02:38:41 -04:00
2026-07-02 22:36:34 -04:00
2026-08-19 05:01:10 -04:00
2026-07-07 20:29:25 -04:00
2026-06-19 13:22:43 -04:00
2026-06-24 14:19:32 -04:00
2026-07-07 20:29:25 -04:00
2026-07-09 04:41:00 -04:00
2026-08-17 21:03:06 -04:00
2026-08-05 13:36:33 -04:00
2026-07-09 04:41:00 -04:00
2026-07-07 20:29:25 -04:00
2026-07-09 04:41:00 -04:00
2026-06-24 14:27:08 -04:00
2026-06-24 14:20:43 -04:00
2026-07-09 04:41:00 -04:00
2026-08-05 13:36:33 -04:00
2026-08-05 13:36:33 -04:00
2026-08-17 21:15:45 -04:00
2026-07-07 20:29:25 -04:00
2026-08-06 02:59:14 -04:00
2026-07-25 12:38:56 -04:00
2026-06-23 18:49:04 -04:00
2026-08-21 19:40:42 -04:00
2026-08-28 21:50:19 -04:00
2026-08-19 05:04:28 -04:00
2026-07-03 15:21:22 -04:00
2026-08-21 19:12:12 -04:00
2026-07-04 01:46:34 -04:00
2026-08-06 02:59:14 -04:00
2026-07-02 01:04:03 -04:00
2026-07-09 05:02:54 -04:00
2026-07-02 01:04:03 -04:00
2026-07-21 22:57:33 -04:00
2026-07-25 16:19:33 -04:00
2026-08-19 05:46:25 -04:00
2026-06-23 21:15:16 -04:00
2026-08-18 11:26:40 -04:00
2026-08-28 00:48:36 -04:00
2026-05-05 14:03:31 -04:00
2026-08-28 00:48:36 -04:00
2026-08-29 04:06:07 -04:00
2026-08-19 01:55:18 -04:00
2026-08-12 18:15:53 -04:00
2026-06-23 18:23:47 -04:00
2026-08-23 17:00:50 -04:00
2026-08-27 20:30:17 -04:00
2026-07-09 04:41:00 -04:00
2026-07-07 20:29:24 -04:00
2026-07-27 22:44:40 -04:00
2026-08-19 05:37:32 -04:00
2026-08-19 06:04:59 -04:00
2026-07-25 21:23:14 -04:00
2026-07-26 00:19:46 -04:00
2026-08-12 20:26:04 -04:00
2026-08-18 16:38:25 -04:00
2026-08-06 02:59:14 -04:00
2026-08-19 00:03:50 -04:00
2026-06-15 00:01:41 -04:00
2026-08-18 11:26:40 -04:00
2026-07-22 17:31:18 -04:00
2026-08-18 23:55:17 -04:00
2026-07-23 16:58:46 -04:00
2026-07-03 14:23:50 -04:00
2026-08-19 05:05:11 -04:00
2026-08-13 17:33:35 -04:00
2026-08-21 10:34:52 -04:00
2026-08-22 15:00:52 -04:00
2026-08-21 23:05:40 -04:00
2026-08-21 19:12:27 -04:00
2026-08-13 16:17:23 -04:00
2026-08-13 16:45:38 -04:00
2026-08-23 16:41:02 -04:00
2026-08-23 16:41:02 -04:00
2026-06-22 16:12:31 -04:00
2026-07-08 01:41:22 -04:00
2026-07-09 04:50:16 -04:00
2026-07-08 01:41:22 -04:00
2026-06-30 23:31:57 -04:00
2026-06-22 16:24:53 -04:00
2026-06-23 00:34:55 -04:00
2026-07-03 23:18:08 -04:00
2026-08-23 16:41:02 -04:00
2026-06-22 16:40:35 -04:00
2026-07-25 22:01:15 -04:00
2026-08-18 13:45:25 -04:00
2026-08-18 13:45:25 -04:00
2026-08-13 17:26:14 -04:00
2026-08-17 22:48:10 -04:00
2026-06-19 01:34:02 -04:00
2026-07-04 01:28:16 -04:00
2026-08-12 09:05:56 -04:00
2026-08-21 10:40:42 -04:00
2026-06-23 21:33:53 -04:00
2026-07-09 04:55:53 -04:00
2026-08-18 01:56:59 -04:00
2026-08-06 02:59:14 -04:00
2026-06-24 14:32:41 -04:00
2026-06-24 14:36:08 -04:00
2026-08-19 01:45:12 -04:00
2026-06-23 20:04:04 -04:00
2026-08-27 04:05:05 -04:00
2026-08-19 02:12:45 -04:00
2026-08-25 09:14:29 -04:00
2026-08-18 03:33:22 -04:00
2026-08-19 00:13:59 -04:00
2026-08-18 02:56:33 -04:00
2026-07-08 23:12:48 -04:00
2026-08-06 02:59:14 -04:00
2026-08-13 17:48:36 -04:00
2026-08-13 17:44:11 -04:00
2026-08-06 02:59:14 -04:00
2026-08-19 05:27:10 -04:00
2026-08-13 23:07:10 -04:00
2026-08-29 13:36:08 -04:00
2026-07-03 15:21:34 -04:00
2026-08-18 23:49:09 -04:00
2026-08-18 23:49:09 -04:00
2026-08-18 23:49:09 -04:00
2026-08-17 23:50:10 -04:00
2026-08-17 10:40:03 -04:00
2026-08-17 19:28:24 -04:00
2026-08-17 10:19:45 -04:00
2026-08-21 20:14:34 -04:00
2026-08-19 01:55:18 -04:00
2026-07-09 04:41:00 -04:00
2026-08-19 01:55:18 -04:00
2026-06-23 21:15:16 -04:00
2026-08-19 01:55:18 -04:00
2026-07-09 04:41:00 -04:00
2026-08-27 04:33:57 -04:00
2026-08-06 02:59:14 -04:00
2026-08-03 23:44:56 -04:00
2026-08-11 19:43:46 -04:00
2026-07-07 20:29:24 -04:00
2026-07-10 23:06:09 -04:00
2026-07-07 20:29:31 -04:00
2026-08-17 09:31:18 -04:00
2026-08-06 02:59:14 -04:00
2026-07-22 19:22:43 -04:00
2026-08-18 19:33:57 -04:00
2026-08-19 01:55:18 -04:00
2026-06-23 20:57:40 -04:00
2026-07-25 16:51:44 -04:00
2026-08-18 03:11:37 -04:00
2026-08-23 16:07:09 -04:00
2026-08-19 02:15:09 -04:00
2026-08-19 00:11:16 -04:00
2026-07-22 00:48:13 -04:00
2026-07-18 00:59:19 -04:00
2026-08-19 23:49:32 -04:00
2026-08-19 05:43:53 -04:00
2026-08-19 05:43:53 -04:00
2026-08-19 05:43:53 -04:00
2026-07-09 03:35:53 -04:00
2026-07-09 02:57:23 -04:00
2026-07-09 03:05:08 -04:00
2026-07-10 01:13:14 -04:00
2026-07-04 01:39:53 -04:00
2026-07-09 03:21:14 -04:00
2026-07-09 03:28:08 -04:00
2026-07-04 01:16:29 -04:00
2026-07-04 01:46:34 -04:00
2026-07-09 03:35:53 -04:00
2026-07-04 01:34:54 -04:00
2026-08-21 21:47:24 -04:00
2026-07-04 01:39:53 -04:00
2026-07-09 03:13:54 -04:00
2026-07-08 01:41:43 -04:00
2026-08-18 11:24:20 -04:00
2026-08-23 15:50:53 -04:00
2026-08-21 20:14:34 -04:00
2026-08-27 19:18:26 -04:00
2026-08-19 21:44:45 -04:00
2026-08-19 01:59:10 -04:00
2026-08-19 02:15:09 -04:00
2026-07-02 00:15:10 -04:00
2026-08-17 20:07:39 -04:00
2026-08-27 23:54:01 -04:00
2026-08-17 23:03:39 -04:00
2026-06-15 23:20:00 -04:00
2026-08-27 23:54:01 -04:00
2026-07-07 20:29:31 -04:00
2026-06-21 19:57:02 -04:00
2026-08-13 14:36:24 -04:00
2026-07-07 20:29:29 -04:00
2026-07-08 01:41:43 -04:00
2026-07-09 04:41:00 -04:00
2026-07-14 22:34:24 -04:00
2026-07-09 04:41:00 -04:00
2026-08-05 02:38:41 -04:00
2026-06-12 18:35:43 -04:00
2026-05-31 16:08:32 -04:00
2026-07-02 22:19:14 -04:00
2026-07-08 01:41:43 -04:00
2026-08-27 04:56:12 -04:00
2026-07-25 14:02:08 -04:00
2026-08-05 01:18:32 -04:00
2026-07-25 12:46:59 -04:00
2026-07-25 13:56:09 -04:00
2026-08-05 13:36:20 -04:00
2026-08-21 09:20:54 -04:00
2026-08-06 02:59:14 -04:00
2026-08-13 14:57:51 -04:00
2026-08-19 10:08:00 -04:00
2026-08-27 04:10:14 -04:00
2026-06-23 19:33:44 -04:00
2026-08-18 00:17:06 -04:00
2026-08-19 10:35:23 -04:00
2026-08-17 22:48:10 -04:00
2026-08-17 22:40:12 -04:00
2026-08-17 22:48:27 -04:00
2026-06-23 19:33:44 -04:00
2026-07-14 22:22:18 -04:00
2026-06-23 19:33:44 -04:00
2026-08-19 00:10:09 -04:00
2026-06-20 22:25:06 -04:00
2026-06-20 22:38:38 -04:00
2026-08-28 00:51:51 -04:00
2026-08-19 05:46:25 -04:00
2026-08-19 10:06:38 -04:00
2026-08-27 05:03:31 -04:00
2026-08-27 22:35:54 -04:00
2026-08-22 14:49:11 -04:00
2026-08-21 21:47:24 -04:00
2026-08-25 03:13:06 -04:00
2026-08-19 02:10:22 -04:00
2026-08-28 00:56:12 -04:00
2026-08-19 05:27:10 -04:00
2026-08-06 02:59:14 -04:00
2026-08-18 23:31:46 -04:00
2026-07-07 20:29:29 -04:00
2026-08-19 05:27:10 -04:00
2026-05-03 07:07:57 -04:00
2026-08-05 02:38:41 -04:00
2026-08-23 16:41:02 -04:00
2026-08-23 16:41:02 -04:00
2026-08-25 02:52:59 -04:00
2026-08-23 16:41:02 -04:00
2026-08-23 16:41:02 -04:00
2026-08-23 16:07:09 -04:00
2026-08-23 17:00:50 -04:00
2026-08-19 21:44:45 -04:00
2026-08-21 22:04:09 -04:00
2026-08-19 05:13:02 -04:00
2026-07-22 16:36:58 -04:00
2026-07-22 17:24:36 -04:00
2026-08-17 21:23:00 -04:00
2026-08-20 00:31:42 -04:00
2026-08-21 09:20:54 -04:00
2026-08-19 21:44:45 -04:00
2026-08-02 18:35:25 -04:00
2026-06-19 16:52:40 -04:00
2026-07-08 01:41:43 -04:00
2026-08-29 13:53:04 -04:00
2026-08-19 01:55:18 -04:00
2026-08-23 16:41:02 -04:00
2026-08-19 05:20:59 -04:00
2026-06-23 20:04:04 -04:00
2026-07-07 20:29:24 -04:00
2026-07-01 22:55:11 -04:00
2026-08-23 17:16:29 -04:00
2026-08-06 02:59:14 -04:00
2026-08-28 23:31:36 -04:00
2026-05-05 14:03:31 -04:00
2026-08-12 05:52:37 -04:00
2026-08-29 04:03:13 -04:00
2026-06-24 14:06:05 -04:00
2026-08-29 13:53:04 -04:00
2026-07-07 20:29:23 -04:00
2026-07-07 20:29:23 -04:00
2026-08-05 02:38:41 -04:00
2026-07-09 04:41:00 -04:00
2026-08-04 08:53:27 -04:00
2026-08-19 21:44:45 -04:00
2026-07-01 00:31:22 -04:00
2026-08-06 02:59:14 -04:00
2026-07-03 14:24:29 -04:00
2026-08-27 22:35:54 -04:00
2026-08-27 23:54:01 -04:00
2026-06-30 23:48:28 -04:00
2026-08-19 04:58:49 -04:00
2026-08-12 09:27:05 -04:00
2026-08-18 11:24:20 -04:00
2026-07-08 23:58:45 -04:00
2026-07-09 04:41:00 -04:00
2026-08-27 20:30:17 -04:00
2026-08-13 16:22:33 -04:00
2026-08-13 15:59:47 -04:00
2026-06-24 14:40:08 -04:00
2026-08-06 02:59:14 -04:00
2026-08-18 20:48:33 -04:00
2026-08-19 02:06:05 -04:00
2026-08-27 04:47:38 -04:00
2026-08-19 10:08:00 -04:00
2026-08-06 02:59:14 -04:00
2026-08-27 04:45:37 -04:00
2026-07-09 04:41:00 -04:00
2026-07-07 20:29:24 -04:00
2026-06-22 01:45:15 -04:00
2026-08-28 21:59:26 -04:00
2026-07-25 20:09:05 -04:00
2026-07-21 23:26:13 -04:00
2026-06-23 18:23:47 -04:00
2026-08-06 09:32:40 -04:00
2026-08-18 00:45:15 -04:00
2026-08-06 00:33:46 -04:00
2026-08-28 23:01:48 -04:00
2026-07-23 09:25:01 -04:00
2026-07-23 09:25:01 -04:00
2026-08-19 10:06:38 -04:00
2026-07-20 01:16:16 -04:00
2026-08-06 02:59:14 -04:00
2026-08-19 05:20:59 -04:00
2026-08-27 04:08:12 -04:00
2026-08-18 20:38:20 -04:00
2026-08-18 02:56:33 -04:00
2026-08-18 20:38:20 -04:00
2026-08-05 02:38:41 -04:00
2026-08-20 23:22:32 -04:00
2026-02-10 16:03:19 -05:00
2026-08-18 16:38:25 -04:00
2026-08-18 23:51:34 -04:00
2026-08-27 04:51:38 -04:00
2026-08-19 01:55:18 -04:00
2026-08-21 22:04:09 -04:00
2026-08-28 22:20:34 -04:00
2026-08-19 19:16:42 -04:00
2026-07-09 04:41:00 -04:00
2026-08-12 21:48:21 -04:00
2026-08-19 10:06:38 -04:00
2026-08-18 20:38:20 -04:00
2026-08-18 22:12:48 -04:00