Skip to content

Compaction rendering has split ownership between condition strip, semantic stream, and committed rows #343

Description

@Juliusolsson05

Problem

Compaction has three disconnected render paths that can disagree:

  1. Out-of-feed condition strip from claude.compaction.
  2. Live semantic placeholder gated by turn.isCompactionSynthesis.
  3. Committed compact boundary/summary rows after transcript entries arrive.

In saved bundles, the condition can say compaction is running while the feed renders raw semantic synthesis text.

Evidence

Bundle:

~/.config/agent-code/debug-bundles/manual/2026-06-22T12-42-54-045-c973322e

  • claude.compaction condition is visible/running.
  • proxy-semantic.json.currentTurn.text starts with <analysis>.
  • The semantic turn lacks isCompactionSynthesis.

Relevant Paths

  • src/renderer/src/workspace/tile-tree/TileLeaf/CompactionStrip.tsx
  • src/renderer/src/workspace/tile-tree/TileLeaf.tsx
  • src/renderer/src/features/feed/ui/rows/CompactBoundaryRow.tsx
  • src/renderer/src/features/feed/ui/rows/CompactSummaryRow.tsx
  • src/renderer/src/features/feed/ui/semantic/StreamingTurn.tsx
  • src/renderer/src/features/feed/model/renderModel.ts

Expected

There should be one ownership rule for compaction rendering. If any reliable signal says compaction is active, raw synthesis content should be suppressed in the feed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingprovider:claudeAffects Claude Code integration

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions