Summary
Implements the local durable tmux fleet canary surface for issue #562:
- adds mosaic fleet init/install/install-systemd/start/stop/restart/status/verify
- adds mosaic agent roster/status/send/reset/tail
- adds product-owned roster schema/examples with isolated mosaic-factory tmux socket defaults
- installs user systemd units/helper scripts and per-agent env files for local canary use
- documents local install, verification, and rollback path
- keeps local roster site-owned under HOME/.config/mosaic/fleet/roster.yaml
Guardrails
- Not production deployment.
- Default tmux server remains out of scope; fleet targets named socket mosaic-factory.
- mosaic fleet init --write refuses to overwrite existing roster unless --force is explicit.
- install-systemd rejects non-default Mosaic home because checked-in user units use percent-h/.config/mosaic paths.
- Fleet stop attempts all agent stops and holder stop before reporting aggregated failures.
Local verification
- pnpm --filter @mosaicstack/mosaic test -- src/commands/fleet.spec.ts src/cli-smoke.spec.ts — 45 passing
- pnpm typecheck — pass
- pnpm lint — pass
- push hooks also ran typecheck, lint, and format check successfully
- Codex code review final pass — approve, 0 findings
Follow-up after merge
After CI is green and this PR is merged, perform one controlled canary install on this server and capture evidence:
1. mosaic fleet init --profile minimal --write
2. mosaic fleet install-systemd
3. systemctl --user daemon-reload
4. mosaic fleet start
5. mosaic fleet verify
6. tmux -L mosaic-factory ls
7. tmux ls
Closes #562
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Implements the local durable tmux fleet canary surface for issue #562:
Guardrails
Local verification
Follow-up after merge
After CI is green and this PR is merged, perform one controlled canary install on this server and capture evidence:
Closes #562