Premise (corrected from pact, not from old guesses): VibeCoder is a sovereign workspace (one of 4: Origin, VibeCoder, VibeScope, FreshCards). Two layouts: Vibe (Stencil + Preview + Inspector) and Coder (code editor + VSIL execution + Logs). Co-equal, not 'main + sidekick'. Centre pane IS the Monaco code editor per the pact. Externalize it for build size, do NOT replace it.
Externalize monaco-editor (one vite config line + CDN script tag), add prebuild hash-stamp hook, wire MAVIS_BYPASS_TOKEN lookup. 30 min. Zero risk.
Rename right surface per layout (Vibe -> Inspector, Coder -> Logs), add DNA + lineage hooks, finish ⌘K command palette, enforce 3-tab Inner Card limit toast. 1.5h. Medium risk.
Replace hardcoded date string with new Date().toLocaleDateString('en', {dateStyle:'full'}). 15 min. Zero risk.
Search input + sort dropdown (name/modified/type) for FileTreeRail. Spec'd in vibe-card-variant.md §2 but never implemented. 45 min. Low risk.
Breakpoint ~768px, right rail -> slide-out drawer, left rail -> hamburger. 1.5h. Low risk.
Modal: theme (light/dark/auto), default layout (1/2/3-col/stacked/quad-grid), surface visibility toggles. Reads/writes perWorkspaceState from StudioContext. 2h. Medium risk.
"Clone from URL" action in file tree context menu (per vibe-card-variant §2). Real simple-git on desktop, stub fallback on web. 2h. Medium risk.
Wire typescript-language-server real adapter. Coder Layout only (Vibe Layout has no code). go-to-def, hover, autocomplete. 2-3h. Medium risk (proven in FVS Phase 4.4).
Drift-check, Playwright screenshot at 1440x900 + 375x667 (mobile), commit MAVIS-WORKFLOW.md, update memory. 1h. Zero risk.