Files
vscode-cowriting-plugin/sessions/0040/SESSION-0040.0-TRANSCRIPT-2026-06-12T17-03--2026-06-12T17-21.md

82 lines
3.3 KiB
Markdown

# Session 0040.0 — Transcript
> App: vscode-cowriting-plugin
> Start: 2026-06-12T17-03 (PST)
> End: 2026-06-12T17-21 (PST)
> Type: capture (tracked-lite)
> Posture: careful (capture default)
> Status: **FINALIZED**
## Launch prompt
`/wgl-capture When Claude suggests changes, a single change should be for a
paragraph (or header, or bulletpoint), not individual words. It's too much to
review`
## Pre-state
Third session of the run (after 0038 ship + 0039 capture). `main` clean +
pushed. Backlog: #42 (Edit Document), #46 (accept-all, filed 0039).
## What was captured
**One ask → one issue filed.**
**#47** — `type/feature`, `priority/P1`
"Block-granularity proposals: one change per paragraph/header/bullet, not per word."
https://git.benstull.org/benstull/vscode-cowriting-plugin/issues/47
Confirmed from code: F11 **Ask Claude to Edit Document** mints proposals at **word
granularity** — `diffToHunks` (src/trackChangesModel.ts) uses `diffWordsWithSpace`
and flushes a hunk on every unchanged token, so each changed word is its own ✓/✗
proposal (INV-37 "per-hunk"). A light copy-edit pass explodes into dozens of tiny
proposals → "too much to review."
## Decisions (capture forks)
- **Scope = document edits only** (operator choice) — the `diffToHunks` fan-out.
Selection edits are already a single proposal, so untouched.
- **Type = `type/feature`** (operator choice). Supersedes F11 **INV-37 per-hunk →
per-block**. Real forks recorded for the design step: block taxonomy (list items
vs whole lists, tables, blockquotes, nesting); anchoring inserted blocks (a
block-level analogue of today's word-oriented `anchorInsertion`); and the
**attribution tradeoff** — accepting a block attributes the *whole* block to
Claude, including unchanged words.
- Reuse the existing block splitter (`diffBlocks`; code/mermaid fences atomic,
INV-23). Intra-block `<ins>`/`<del>` **rendering is unchanged** — only the
decision *unit* becomes the block. `priority/P1` (directly removes the stated
pain).
## Session arc
1. Claimed tracked-lite session 0040 (`--type capture`); fast-forwarded `main`.
2. Inspected `diffToHunks` → confirmed word-level granularity is the cause.
3. Reflected the ask; asked scope + sizing → document-edits + feature.
4. Drafted `issues/block-granularity-proposals.md` (full §5 feature template).
5. Operator approved → filed **#47** (labels already ensured this run).
6. Finalized: memory updated, transcript published. Draft left uncommitted in the
content-repo working tree (INV-8).
## Deferred decisions
_None._
## Backlog observation
#42 (Ask Claude to Edit Document), #46 (accept-all), and #47 (block granularity)
form one **edit-flow cluster** around the Ask-Claude / document-edit loop. They
interact (block granularity changes how many proposals exist; accept-all changes
how they're taken; #42 is the entry point that produces them) and are best
**brainstormed / sequenced together** rather than designed in isolation.
## Next-session prompt
The standing coding goal is unchanged; consider folding the cluster in:
```
/goal brainstorm the Ask-Claude document-edit cluster (#42 Edit Document, #47 block-granularity proposals, #46 accept-all) and sequence/design it, starting with #42
```
(Or keep the narrower `/goal brainstorm #42 … then plan-and-execute #42` and take
#47/#46 after.)