cli, webui: bus, Console and mosaic CLI on one pinned copy (#1579)
Row 85 round 2. Built by Rocko, packet agents/rocko/work/queue-85/r2/,
candidate manifest
bd7ea899c7cacef43b415b8e9ecb164e1f36718ffbe64347881a2c5653170c98.
Filbert approved on #1579, comment 28256; Darkwing approved, comment
28258.
stack-copy.sh builds shared read-only copies under
XDG_DATA_HOME/mosaic-stack/copies; the bus and Console services render
and install against a copy with --copy and --pm. No live step is run
by this commit; those need Mos's go.
Sage's gate rerun on 3a1e11b83 with rows 85, 102 and 103 applied,
Docker up: node suites bus 128, business 67, cli 165, control-board
124, conversation 182, discord 178, harness 73, ledger 78, mosaic 69,
queue 155, runs 43, seat 113, tasks 92, webui 108; scripts auth 15,
conductor 17, config 24, discord 66, extension-package 18,
foundation 44, queue 28, release 14, task 98. All pass, 0 fail.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
+21
-2
@@ -384,10 +384,10 @@ template `systemd/mosaic-bus.service.in` as the systemd user unit
|
||||
The template's file name has no `@` because queue candidate manifests refuse
|
||||
it. It is modelled on `scripts/discord-service.sh`:
|
||||
|
||||
- `install [--dir DIR] [--no-reload] [--claude PATH]` writes the unit through
|
||||
- `install [--copy ID [--copies DIR]] [--pm] [--dir DIR] [--no-reload] [--claude PATH]` writes the unit through
|
||||
a temp file and a rename, then runs `systemctl --user daemon-reload`. It
|
||||
prints the pinned claude and its `--version`.
|
||||
- `render [--claude PATH]` prints the unit without writing it.
|
||||
- `render [--copy ID [--copies DIR]] [--pm] [--claude PATH]` prints the unit without writing it.
|
||||
- `uninstall` refuses while an instance is active.
|
||||
- `status <business>` shows the unit's state and its `Environment`, which
|
||||
includes the pinned claude.
|
||||
@@ -431,6 +431,25 @@ The unit has no `network-online.target` ordering, since a user unit cannot
|
||||
order on that system target. The notifier needs no network at start: a
|
||||
send that fails is journaled and retried.
|
||||
|
||||
### One pinned copy (row 85, #1579)
|
||||
|
||||
The bus, Console and mosaic wrapper must run the same copy: the broker's
|
||||
human proof accepts only its own human-cli entry path. stack-copy.sh
|
||||
creates a pushed, read-only tree with pinned npm dependencies under
|
||||
mosaic-stack/copies/<full id>. bus-service.sh render/install take --copy
|
||||
ID and --pm alongside the existing --claude pin. Without --copy render
|
||||
keeps today's checkout unit. A PM refusal exits 3 and the unit does not
|
||||
retry it. Install refuses every busy instance (also --no-reload), failed
|
||||
state reads and drop-ins overriding ExecStart or WorkingDirectory.
|
||||
Status reads effective systemd properties, reports the tree/copy, PM flag,
|
||||
refactor drift and drop-in files; it changes nothing. The temporary PM
|
||||
ExecStart drop-in must be removed by Mos before installing the pinned unit.
|
||||
|
||||
The one update and rollback plan is [TOOLS.md, Pinned stack update](../../docs/TOOLS.md#pinned-stack-update).
|
||||
Each live switch/unit change/stop/start requires Mos's go; agents build
|
||||
and test fixtures only. Restarting the bus ends its sessions, so no PM
|
||||
turn may be in flight. Queue writes stay on the canonical scripts/mosaic.
|
||||
|
||||
## Notifier
|
||||
|
||||
The notifier is a child of the host. Each poll (every 30 s) it reads the
|
||||
|
||||
Reference in New Issue
Block a user