Skip to content

test(rendering): slice 13 — shadow parity suite (legacy vs new pipeline in CI)#441

Merged
Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
feat/rendering-slice13-parity
Jul 7, 2026
Merged

test(rendering): slice 13 — shadow parity suite (legacy vs new pipeline in CI)#441
Juliusolsson05 merged 1 commit into
integration/rendering-pipelinefrom
feat/rendering-slice13-parity

Conversation

@Juliusolsson05

Copy link
Copy Markdown
Owner

The Stage 2 diff run, executed inside CI: the exact comparison useRenderShadow performs live — legacy selectMergedEntries + deriveFeedRenderModel vs createLedgerInputAdapter + createSessionLedger, diffed by shadowDiff — over constructed SessionRuntime states, so divergence triage starts in a test with a minimal repro rather than in a soak console with a live session attached.

Seven scenarios from the incident trail:

  1. idle committed conversation
  2. live streaming turn over committed rows + work indicator
  3. claude whole-turn suppression (committed assistant row owns its archived live twin)
  4. empty session (both sides paint the empty row)
  5. orphaned stuck-tool ghost renders on both sides
  6. sidecar-shaped orphan ghost hidden on both sides
  7. the Optimistic submitted user prompts are buried behind semantic/work rows #239 buried-prompt class — optimistic prompt vs stale semantic history

All seven pass with zero divergences on first run — including #7, meaning legacy and the new pipeline agree at the unit grain on every scenario tested so far. The suite is structured so a legitimate future disagreement (the new pipeline fixing a legacy bug) must be asserted explicitly with an issue reference — no blanket "known to differ" escape hatch.

79 pipeline tests total; tsc gate (node + web) clean.

Left open for review per request — not self-merging this one.

🤖 Generated with Claude Code

…ne in CI)

Runs the exact comparison useRenderShadow performs live — legacy
selectMergedEntries + deriveFeedRenderModel vs adapter + ledger, diffed
by shadowDiff — over constructed runtimes, so divergence triage starts
in CI with a minimal repro, not in a soak console. Seven scenarios from
the incident trail: idle conversation, live turn + work, claude
whole-turn suppression, empty session, stuck-tool ghost renders,
sidecar ghost hidden, and the #239 buried-prompt class (both sides now
agree at the unit grain — parity pinned, not just divergence tolerated).

All seven pass with ZERO divergences on first run.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant