e617f504e7
F6 no longer requires a workspace file. It gets its own diffable predicate (any file: or untitled:) decoupled from F2 isTracked, keys baselines by a sha256 of the document URI, and stores them in VS Code GLOBAL storage (context.globalStorageUri) — always present, never the repo (INV-19). Untitled buffers have no durable identity → in-memory baseline only (lost on reload). DiffViewController is now constructed before the workspace-root check and its commands are always live (never stubbed) — the machine-landing advance wiring stays in the with-root branch since the seam only fires on workspace files. BaselineStore generalized to key-by-hash (Baseline.docPath → uri). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>