Files
stack/docs/fleet
veronica bea47543f3
ci/woodpecker/pr/ci Pipeline was canceled
docs(W4): revert the NORTH_STAR.md stamp; a projection cannot carry a hand-added header
Found by vision's adversarial pass (W5) and re-measured here. The finding was raised as
latent; it is live in this PR.

docs/fleet/NORTH_STAR.md is generated by renderNorthStarMarkdown()
(packages/mosaic/src/commands/fleet.ts:373), whose first emitted line is the H1 and which
emits no front matter at all. fleet-north-star.spec.ts:110-114 is a drift test that reads
the committed file from disk and asserts full-string equality against the renderer output:

    expect(rendered).toBe(committed);

Stamping the file changed line 1 from '# Mosaic Fleet - NORTH STAR' to '---', so the
assertion fails. vitest could not be run in this worktree (node_modules empty, 'Cannot find
package yaml'), which is a harness gap and not a test result, so this is shown by
construction: the assertion above, the renderer's first lines.push, and line 1 before
versus after.

Reverted to origin/next verbatim: git diff origin/next -- docs/fleet/NORTH_STAR.md is 0
lines. Control on docs/fleet/reference/cli.md returns 13 lines, so the diff command does
report differences when they exist.

The header for a projection has to come from the renderer, not the file. That is a code
change and belongs in the flatten PR beside the resolveNorthStarPaths() fix.

Stamped count 104 -> 103. Untouched 23 -> 24. Worklist records it as a fourth held row.
2026-08-20 19:46:24 -05:00
..

Fleet Configuration Management

This book documents the local roster-v2 desired-state control plane delivered under issue #758. The normative requirements are the FCM section of the repository PRD, not the older fleet-suite or observability planning pages.

Authority boundary

<MOSAIC_HOME>/fleet/roster.yaml is the sole writable desired-state authority for local fleet membership, launch policy, and persisted lifecycle. Generated environment files, systemd enablement, tmux sessions, heartbeat files, and status output are derived or observed. Rebuild projections from the roster; never edit them as desired state.

This control plane is local tmux/systemd only. Remote/SSH entries and connectors are inventory, not reconciliation targets. Arbitrary commands, channels, secret references, gateway catalog convergence, and UI configuration storage are outside this workstream. mos-comms is temporary transport glue, not permanent fleet architecture.

Choose the right workflow

  1. Need to inspect intent? Read the roster and use mosaic fleet get; see desired versus observed state.
  2. Need to inspect reality? Use status or doctor; use verify for a strict non-zero drift/ownership gate. These commands do not repair anything.
  3. Need to change membership or persisted policy? Use generation-guarded plan, create, update, or delete; see safe CRUD.
  4. Need a one-time runtime action? Use start, stop, or restart. These do not change persisted desired state.
  5. Need convergence? Review apply --dry-run, resolve blockers, then use apply with the same current generation; see reconcile and recover.
  6. Need v1 migration evidence? Use preview only. Cutover, canary, and rollback remain held for FCM-M4-002.
  7. Need the gateway-backed agent catalog? That is the separate mosaic agent surface, not local fleet desired state.

Concepts

Operator how-to

Operations and recovery

Reference and migration

Acceptance evidence and holds

The canonical publishing source remains this repository. This card does not publish externally, run a migration, operate a live fleet, or close parent issue #758.