Skip to content

Live compaction synthesis can leak raw analysis and summary XML into the feed #345

Description

@Juliusolsson05

Problem

During /compact, the feed can render the raw synthesis response as ordinary assistant markdown, including <analysis> / <summary> style content, instead of showing the live compaction placeholder.

Evidence

Bundle 2026-06-22T12-42-54-045-c973322e:

  • feed-debug.jsonl: claude.compaction condition is visible/running.
  • proxy-semantic.json.currentTurn.text starts with <analysis>.
  • Semantic turn_started event has no isCompactionSynthesis.
  • proxy-events.jsonl: request flow reports request_shape.compaction_synthesis:false.

Bundle 2026-06-14T14-02-05-796-a8ad1ebb:

  • Same shape: semantic current turn text starts with <analysis>, text length around 15k, rendered as a normal semantic block.

Suspected Cause

The proxy compaction detector likely depends on a request signature that drifted. Because request shape explicitly reports compaction_synthesis:false, the adapter does not attach isCompactionSynthesis, and StreamingTurn renders the raw semantic text.

Related paths:

  • packages/claude-code-headless/src/proxy/mitmAddon.py
  • packages/claude-code-headless/src/proxy/ClaudeProxyAdapter.ts
  • src/renderer/src/features/feed/ui/semantic/StreamingTurn.tsx

Expected

When any reliable signal says compaction is running, the feed should never paint raw synthesis XML. It should show the compaction placeholder until compact boundary/summary entries land.

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