Files
stack/docs/scratchpads/fleet-standup-fixes.md
Jason Woltje 4e1fa88076
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
refactor(fleet): rename tmux socket mosaic-factory → mosaic-fleet
Pure rename of the named production-isolation socket to match the product brand
(Mosaic Fleet), per Jason. Behavior is identical — only the socket NAME changes.

- 6 example presets: socket_name: mosaic-factory → mosaic-fleet
- fleet.ts: DEFAULT_SOCKET_NAME = 'mosaic-fleet' (+ all literals)
- systemd units + READMEs, roster.schema.json, start-agent-session.sh
- docs/guides + fleet PRD/TASKS + scratchpads; tests updated

The PoC roster is socket-LESS (default socket, no -L), so it is unaffected.
docs/fleet/north-star.md is intentionally EXCLUDED (owned by the in-flight
doctrine PR #629 — its mosaic-factory references are renamed there to avoid a
merge conflict). The live legacy canary fleet still running on the old socket is
a separate retire/migrate op, not this PR.

Single find/replace — target trivially swappable if the brand is reconsidered.

Verified: 172 fleet + onboarding tests green; tsc/eslint/prettier/sanitize clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EsgTQzV5YUGk1JtCLP4B83
2026-06-22 15:07:05 -05:00

1.8 KiB

Fleet stand-up fixes — model_hint→--model + socket-default trap (#626)

  • Issue: #626 · Branch: feat/fleet-standup-fixes (off main). PoC-blocking, before doctrine doc.

FIX 1 — model_hint consumed

  • generateAgentEnv emits MOSAIC_AGENT_MODEL=<modelHint> (bare empty when unset).
  • start-agent-session.sh default command → mosaic yolo $RUNTIME ${MOSAIC_AGENT_MODEL:+--model $MOSAIC_AGENT_MODEL}. → pi workers launch with --model openai-codex/gpt-5.5:high.

FIX 2 — socket default trap (absent ⇒ literal default socket, no -L everywhere)

  • THE TRAP (3 sites): parseRosterText fallback was DEFAULT_SOCKET_NAME; systemd unit had Environment=MOSAIC_TMUX_SOCKET=mosaic-fleet + ExecStop ${…:-mosaic-fleet}; start-agent-session defaulted :-mosaic-fleet. All fixed → absent socket = '' = default tmux socket (no -L).
  • socketArgs(name) helper → name ? ['-L', name] : []; replaced all ~15 -L render sites in fleet.ts.
  • shellEnvValue('') now emits a bare VAR= (not '') — unambiguous empty in systemd EnvironmentFile (a quoted '' could become a literal socket named "''").
  • start-agent-session.sh: _tmux wrapper passes -L only when socket set; mosaic-agent@.service: dropped the socket default + conditional ExecStop. So spawn == observe == onboarding cheat-sheet.
  • CONTAINMENT: all 6 shipped presets set socket_name: mosaic-fleet explicitly → unaffected; only socket-less rosters (the PoC) get default-socket behavior. DEFAULT_SOCKET_NAME exported for explicit use.

Verification

  • 158 fleet + 201 fleet-adjacent tests green; new: socketArgs none/named, model_hint→env, explicit-socket renders -L, socket-less env bare. tsc/eslint/prettier/sanitize clean. Shell bash -n + end-to-end sim (socket-less→no -L, model→--model).