merge origin/main (7 commits) into ethie/pm-clean

Host-scoped update-restart obligation (061195fac1 / 953b6f6f08 / 3be255eca6)
lands on the PM model: the obligation record, its readers and the legacy
per-home marker compat come in as-is. The catch-up restart path
(`_apply_pending_fleet_restart_catchup` / `_run_pending_fleet_restart`) is
retired here (the fleet restart rides the completion owner), so main's
per-host restart-once guard on that path is not carried; its unit→live
MainPID collapse IS ported into the live post-update systemd pass
(`_restart_systemd_gateway_units`), with the two collapse tests rewritten
against that function (red on the pre-port tree: `_unit_main_pid` absent).
Tests that exercised only the retired catch-up path are dropped.

Desktop: main's shared log-rotation planner replaces the inline constants
in main.ts; the merge keeps our machine-profile import beside its import.

utf-8 → utf-8-sig on the three new BOM-intolerant reads (footguns lint).
This commit is contained in:
ethernet
2026-09-21 10:51:15 -04:00
23 changed files with 1474 additions and 147 deletions

View File

@@ -3,6 +3,11 @@ import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';
const sidebars: SidebarsConfig = {
docs: [
'user-stories',
// The Skills/Plugins hubs live in the navbar. On mobile Docusaurus opens the drawer on the doc
// sidebar, with the navbar a "Back to main menu" tap away, so without these links the hubs are
// undiscoverable on a phone.
{type: 'link', label: 'Browse Skills', href: '/skills'},
{type: 'link', label: 'Browse Plugins', href: '/plugins'},
{
type: 'category',
label: 'Getting Started',