ci/woodpecker/pr/ci Pipeline was successful
Three-tree model per canon STRUCTURE-CANON §2 (first carried by the USC estate brain): seat launch envs, roles.local overrides, and profile working copies are user-owned fleet state and resolve from the brain home (~/.mosaic) when one is active; roster.yaml, baseline roles, run/, and services stay under the config home (~/.config/mosaic). Resolution (packages/mosaic/src/fleet/brain-home.ts, mirrored in tools/fleet/start-agent-session.sh): 1. MOSAIC_BRAIN_HOME env — explicit, always wins 2. canonical ~/.mosaic — adopted only when MOSAIC_HOME is the default ~/.config/mosaic AND ~/.mosaic/fleet/agents exists (custom --mosaic-home never adopts: tests/sandboxes stay hermetic) 3. else legacy single-tree behavior Call sites wired: resolveFleetPaths, fleet regen, fleet-agent-crud, fleet-migration, personas overrideDir, profiles dir, reconciler projections, generated-env boundary (validate + ensure + reject split state across trees). Tests: brain-home.spec (8), generated-env-boundary brain case, bash launcher brain + no-brain control cases; full fleet surface 733 green. Pre-existing unrelated failure noted: uninstall.spec 'missing mosaicHome' throws EACCES on this host with and without this change.