diff --git a/docs/reports/greenfield/fomo-lin.md b/docs/reports/greenfield/fomo-lin.md index 46b30357..b36cc3b2 100644 --- a/docs/reports/greenfield/fomo-lin.md +++ b/docs/reports/greenfield/fomo-lin.md @@ -230,3 +230,35 @@ Claude Code v2.1.226 / sonnet under Node 22.** Net: next cures nothing in F1–F10 (they're all pre-W-F structural issues), carries the gateway fix, and adds one hard regression-class gap (N1 node floor). The W-F gap list stands unchanged as the fix vehicle. + +## Session 5 (2026-08-08 night) — `~/.mosaic` prototype hand-roll (second-host cross-check) + +Hand-rolled per HARNESS-HOMES prototype section, on the next-lane framework: skeleton +(config/claude `{}`, auth/claude/jason_woltje.com with `primary` alias, empty plugins/skills +stores), probe seat (profile.json schema 1, overlay `{}`, composed settings via three-layer +deep-merge, credentials two-hop symlink, identity-bootstrap CLAUDE.md, seeded onboarding +.claude.json, SOUL.md with positive Identity block). + +**Smoke test PASS** (`CLAUDE_CONFIG_DIR= claude --print`): RC=0, auth through the +two-hop chain, seat self-identified as "probe". Post-run: both symlinks survived, live +credential inode unchanged, transcript in probe's own projects/, probe generated its own +backups/sessions, operator ~/.claude untouched. **dragon-lin's results replicate on a +clean second host — the layout stands up greenfield.** + +### Gap-bites during the roll (feed to W-F) + +- **Base-template hole (F4/gap-5 adjacent, NEW):** the design's composition base + `~/.config/mosaic/framework/runtime/claude/settings.json` does NOT exist in the shipped + framework; the closest shipped artifact (`runtime/claude/settings.json`) is the GATED + wedge template. Used the operator's vetted ungated settings as base (as dragon-lin did). + W-F1 must define + ship the canonical UNGATED system base; gate hooks arrive only via + promotion overlay. +- **Identity bootstrap vs permissions (NEW):** in `--print`/restricted mode the seat was + DENIED reading SOUL.md outside cwd — "read SOUL.md" bootstrap depends on tool + permissions. Generator should materialize the identity INTO the generated CLAUDE.md + (parameterized), keeping SOUL.md as source, not runtime dependency. +- **Gap 2 lived experience:** probe exists in profile.json but not roster.yaml — the + hand-rolled seat and `mosaic claude` are disjoint universes on the same host. +- **Gap 4 in miniature:** fresh-host store is empty; nothing defines what seeds it. +- **Lease posture:** hand-rolled seats launch bare `claude` → ungated by construction + until `mosaic fleet launch` exists (consistent with current bare-for-real-work rule).