docs(f8): manual smoke runbook + README hybrid-model/non-shareability note + plan

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ben Stull
2026-06-11 13:15:54 -07:00
parent 5030cad612
commit bfd951552c
3 changed files with 1413 additions and 0 deletions
+27
View File
@@ -196,6 +196,33 @@ the manual smoke, not the sealed-sandbox E2E.
Design: `vscode-cowriting-plugin-content/specs/coauthoring-rendered-preview.md`.
Live smoke: [`docs/MANUAL-SMOKE-F7.md`](docs/MANUAL-SMOKE-F7.md).
## F8 — Out-of-workspace authoring (Feature #25)
"Ask Claude to Edit Selection" (and F2 threads / F3 attribution / F4
propose-accept) now work on **any** document the editor shows — saved in the
workspace folder, saved outside it, or untitled — matching the already-universal
F6 diff and F7 preview. Authoring is no longer gated to in-workspace files, and
the commands are live even with **no folder open**.
Persistence is **hybrid** (one `SidecarStore` abstraction, routed per-document):
- an **in-workspace** file keeps its committable `.threads/<repo-rel>.json`
sidecar, **byte-for-byte unchanged** (INV-2) — the only home the F5 cross-rung
contract ever sees;
- an **out-of-workspace** file or **untitled** buffer stores its coauthoring
artifact in VS Code **global storage** keyed by `sha256(uri)` (the same home
and key F6's baseline uses, INV-19/24); untitled buffers are **in-memory
only** (lost on reload/save).
A global-storage artifact is **not a committed file**, so it is **never
cross-rung-shareable** (INV-25), and renaming/moving the file **orphans** its
artifact (the key is the URI hash) — both stated as design contract, not
discovered later. Routing leaves the in-workspace path untouched, so rollback is
a plain PR revert with zero data migration.
Design: `vscode-cowriting-plugin-content/specs/coauthoring-out-of-workspace.md`.
Live smoke: [`docs/MANUAL-SMOKE-F8.md`](docs/MANUAL-SMOKE-F8.md).
## Develop
- `npm run watch` — rebuild on change.