Files
stack/docs/reports/greenfield/fomo-lin.md
T
scoobyandClaude Fable 5 605c09089c greenfield(fomo-lin): install log + first findings F1-F5
Fresh-machine install of framework v3 / CLI 0.0.49 on Debian 13. Five findings
outside fred's known-gaps list: print-only PATH advice, backup-less overwrite of
live ~/.claude runtime files, doctor failing fresh install with 10 warnings,
drift check pointing at the gated (wedge-prone) template, installer skill bundle
disjoint from repo skills/.

Note: docs/reports is in .gitignore here — file force-added; flagged to fred.

Co-Authored-By: Claude Fable 5 <[email protected]>
2026-08-08 14:13:34 -05:00

4.8 KiB

Greenfield install log — fomo-lin

Running log of a from-scratch Mosaic Stack install on Jason's test laptop fomo-lin (Debian 13, x86_64). Operator: scooby (agent). Started 2026-08-08. Channel per fred: findings → comms as they land; this file is the durable record. Branch: greenfield/fomo-lin.

Machine starting state (2026-08-08)

  • Debian 13 (kernel 6.12.101+deb13), no Node/npm, no global git config, no ~/.ssh, no ~/.config/mosaic, no ~/.mosaic, sudo requires password (agent cannot escalate).
  • Repos pre-cloned by Jason: jarvis-brain, mosaic-brain, stack, uconnect, uscllc-website (all https remotes to git.mosaicstack.dev, no credentials stored — private-repo fetch/push dead until a token was provisioned from credentials.json, usc_mos).
  • tmux session scooby running Claude Code (bare harness — not mosaic claude).

Pre-install setup that had NO framework mechanism (manual work)

  • Agent identity: MOSAIC_AGENT_NAME=scooby hand-added to ~/.bashrc + tmux env.
  • Git identity + credential store: hand-configured.
  • Comms receive path: hand-ported scooby-comms-watcher.sh from fred's watcher + hand-written systemd --user unit + loginctl enable-linger. Works (both peers verified round-trip within ~90s), but every step was artisanal — relevant input for harness-homes (W-F).

Install run (2026-08-08 ~19:09Z)

curl -fsSL https://mosaicstack.dev/install.sh | bash -s -- --yes --no-auto-launch → exit 0, framework v3 → ~/.config/mosaic/, CLI @mosaicstack/mosaic 0.0.49~/.npm-global/. Prereq path: sudo apt install nodejs npm (Debian 13's node 20.19.2 meets the ≥20 floor). Public read on the stack repo means the installer itself needs no credentials — good.

Findings (outside fred's known-gaps list of 2026-08-08)

F1 — PATH advice is print-only

Installer warns ~/.npm-global/bin is not on your PATH and suggests the rc line, but shellProfileEdits: [] in the manifest — nothing is persisted. Every fresh machine ends with mosaic not resolvable in new shells until the user hand-edits rc. Either edit the rc (with consent/flag) or make the closing summary a copy-paste block.

F2 — Installer overwrites live ~/.claude/settings.json + ~/.claude/CLAUDE.md with backup: null

.install-manifest.json runtimeAssetCopies shows dest ~/.claude/settings.json, ~/.claude/CLAUDE.md, hooks-config.json, context7-integration.md, all backup: null, written while a Claude session was LIVE on this machine. On this box the pre-existing files were near-defaults so nothing of value was lost; on any configured machine this silently destroys user settings/memory. Wants: backup-before-overwrite (populate the manifest backup field it clearly already models) + merge-not-replace for settings.json.

F3 — Fresh install fails its own doctor: 10 warnings out of the box

Immediately after a clean, successful install, mosaic doctor reports: missing USER.md; AGENTS.md missing CRITICAL HARD GATES override block; runtime file drift on ~/.claude/settings.json; 7 missing mosaic-* skills. A green install that self-reports 10 warnings erodes trust in doctor as a signal. Whatever subset is "expected until mosaic init/wizard" should be suppressed or labeled as such.

F4 — Drift check points users at the gated template (wedge hazard)

The settings the installer writes to ~/.claude/settings.json are UNGATED (no mutator-gate, no receipt-observer) — which on today's main is CORRECT, it avoids the Stop-hook wedge. But ~/.config/mosaic/runtime/claude/settings.json (the file doctor diffs against) IS the gated template. So doctor's "runtime file drift" warning invites the obvious remediation — copy the template over — which would seed the receipt-observer wedge into a live seat. The drift baseline and the seeded file should be the same artifact, or doctor should know about the gated/ungated split.

F5 — Installed skill set is disjoint from repo skills/

Skill sync installed 101 skills (six mosaic-*: deploy, gitea, orchestrator, portainer, tools, woodpecker) but NONE of the eight in stack skills/ on main (board, forge, jarvis, macp, prd, prdy, setup-cicd, standards). Doctor then flags 7 of those 8 as missing (mosaic-jarvis escapes the check). Two sources of truth for "the Mosaic skills" — the installer's bundle and the repo dir — have diverged.

Environment answers / status

  • fomo-lin → sb-it-1-dt: comms-only today. Hostname does not resolve from here and the laptop has no ssh keys. ssh reach would need Jason (key provisioning + route/VPN).
  • Gitea write to the stack repo: verified by the push of this very branch (token usc_mos).

Next

  • mosaic init (SOUL.md) + first seat launch via mosaic claude → milestone comms to fred.
  • First gated-seat probe deliberately deferred until PR #1109 lands (known deny-only state).