From 605c09089ca2b3ecb7766782d6e80598d053f1e3 Mon Sep 17 00:00:00 2001 From: scooby Date: Sat, 8 Aug 2026 14:13:34 -0500 Subject: [PATCH] greenfield(fomo-lin): install log + first findings F1-F5 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docs/reports/greenfield/fomo-lin.md | 86 +++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 docs/reports/greenfield/fomo-lin.md diff --git a/docs/reports/greenfield/fomo-lin.md b/docs/reports/greenfield/fomo-lin.md new file mode 100644 index 00000000..66039ba7 --- /dev/null +++ b/docs/reports/greenfield/fomo-lin.md @@ -0,0 +1,86 @@ +# 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).