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.
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.compactioncondition is visible/running.proxy-semantic.json.currentTurn.textstarts with<analysis>.turn_startedevent has noisCompactionSynthesis.proxy-events.jsonl: request flow reportsrequest_shape.compaction_synthesis:false.Bundle
2026-06-14T14-02-05-796-a8ad1ebb:<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 attachisCompactionSynthesis, andStreamingTurnrenders the raw semantic text.Related paths:
packages/claude-code-headless/src/proxy/mitmAddon.pypackages/claude-code-headless/src/proxy/ClaudeProxyAdapter.tssrc/renderer/src/features/feed/ui/semantic/StreamingTurn.tsxExpected
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.