#48: pinning the baseline leaves the review panel fully un-annotated #52

Merged
benstull merged 1 commits from s48-pin-clean-panel into main 2026-06-13 15:30:56 +00:00
Owner

#48 (story, P2) — pinning the baseline should leave the review panel fully un-annotated.

A pinned baseline with no changes since should read as a clean starting point, but the F10 on-render still author-colored every block, painting the whole document green/blue right after a pin. Now, when the baseline reason is "pinned" and there are zero changes since (every diffBlocks op unchanged), the on-render is fully clean — no change marks and no authorship coloring — while the data-src block mapping (INV-36) and any pending proposals (review actions, not annotations) are kept.

Scoped to the pin, not all zero-diff

Accepting a Claude edit also advances the baseline (F6 INV-18 → zero-diff), but that is a "machine-landing", not a pin — it keeps its authorship coloring so accepted Claude text stays blue (F10 INV-33). So the clean render is gated on reason === "pinned", not any zero-diff. (The F10 authorship E2E caught this — it would have regressed under a pure zero-diff rule.)

Changes

  • trackChangesModel.tsrenderReview gains a pinned RenderOption; when pinned + zero-diff, blocks render plain (skip colorByAuthor).
  • trackChangesPreview.ts — pass { pinned: baseline?.reason === "pinned" } from refresh + the renderHtmlFor test seam.

Tests

218 unit + 74/5 host E2E green. Unit: pinned+zero-diff → no cw-by-*; still shows proposals; zero-diff WITHOUT pin (machine-landing) keeps coloring (INV-33); real change after pin re-colors. s48PinClean host E2E: type → colored; pin → clean; edit → annotations return.

Spec

INV-33 clarification (zero-diff-after-pin clean edge) written for specs/coauthoring-interactive-review.md — currently in the content-repo working tree (the content repo has pre-existing uncommitted drafts + is behind origin; flagged for the operator to push).

Session 0046.

🤖 Generated with Claude Code

**#48 (story, P2)** — pinning the baseline should leave the review panel fully un-annotated. A pinned baseline with no changes since should read as a clean starting point, but the F10 on-render still author-colored every block, painting the whole document green/blue right after a pin. Now, when the baseline reason is **"pinned"** and there are **zero changes since** (every `diffBlocks` op `unchanged`), the on-render is fully clean — no change marks **and** no authorship coloring — while the `data-src` block mapping (INV-36) and any pending proposals (review actions, not annotations) are kept. ## Scoped to the pin, not all zero-diff Accepting a Claude edit *also* advances the baseline (F6 INV-18 → zero-diff), but that is a **"machine-landing"**, not a pin — it keeps its authorship coloring so accepted Claude text stays blue (F10 INV-33). So the clean render is gated on `reason === "pinned"`, not any zero-diff. (The F10 authorship E2E caught this — it would have regressed under a pure zero-diff rule.) ## Changes - **`trackChangesModel.ts`** — `renderReview` gains a `pinned` `RenderOption`; when pinned + zero-diff, blocks render plain (skip `colorByAuthor`). - **`trackChangesPreview.ts`** — pass `{ pinned: baseline?.reason === "pinned" }` from `refresh` + the `renderHtmlFor` test seam. ## Tests 218 unit + 74/5 host E2E green. Unit: pinned+zero-diff → no `cw-by-*`; still shows proposals; zero-diff WITHOUT pin (machine-landing) keeps coloring (INV-33); real change after pin re-colors. `s48PinClean` host E2E: type → colored; pin → clean; edit → annotations return. ## Spec INV-33 clarification (zero-diff-after-pin clean edge) written for `specs/coauthoring-interactive-review.md` — currently in the content-repo working tree (the content repo has pre-existing uncommitted drafts + is behind origin; flagged for the operator to push). Session 0046. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
benstull added 1 commit 2026-06-13 15:30:48 +00:00
A pinned baseline with no changes since should read as a clean starting point,
but the F10 on-render still author-colored every block (colorByAuthor), painting
the whole document green/blue right after a pin. Now, when the baseline reason is
"pinned" and there are zero changes since (every diffBlocks op unchanged), the
on-render is fully clean — no change marks and no authorship coloring — while the
data-src block mapping (INV-36) and any pending proposals (review actions, not
annotations) are kept.

Scoped to the PIN specifically, not all zero-diff: a baseline advanced by a
machine-landing (accept) is also zero-diff but keeps its authorship coloring so
accepted Claude text stays blue (F10 INV-33). renderReview takes a `pinned`
option; the controller passes baseline.reason === "pinned" from both refresh and
the renderHtmlFor test seam.

- trackChangesModel.ts: renderReview gains the `pinned` RenderOption; when pinned
  + zero-diff, blocks render plain (no colorByAuthor).
- trackChangesPreview.ts: pass { pinned } through refresh + renderHtmlFor.
- unit: pinned+zero-diff → no cw-by-*; pinned+zero-diff still shows proposals;
  zero-diff WITHOUT pin (machine-landing) keeps coloring (INV-33); real changes
  after a pin re-color.
- s48PinClean host E2E: type → colored; pin → clean; edit → annotations return.

218 unit + 74/5 host E2E green.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
benstull merged commit 54846da1ea into main 2026-06-13 15:30:56 +00:00
Sign in to join this conversation.