You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bug(codex): a live compaction can show "Conversation compacted" twice #1401
The live block. Codex compacts in a live, proxy-observed session. The app-server compaction response item becomes a finalized semantic block (CodexResponsesAdapter.mapItemTypeToBlockKind, case 'compaction').
Both rows survive.collectSemanticCandidates admits the block as assistant-text with no text keys, and buildCommittedOwnership does not index compact-boundary against it, so decideLiveCandidate suppresses neither.
Result. Both render through shared.compaction as a muted "Conversation compacted" row.
Scope
Cosmetic and transient. After a reload the semantic history is empty, so only the boundary remains.
Not observed in the corpus. No frozen bundle contains both surfaces; each channel has captured real compactions separately.
Claude already suppresses this class, through isCompactionSynthesis turns being rejected in observations/semantic.ts. Codex's semantic item has no such flag.
Direction
Suppress the finalized semantic compaction row once a durable boundary is committed whose timestamp is at or after the block's turn end. Alternatively, give the two different labels.
Triage (W2): this is blocked on #1386 (W1's open PR, fix/codex-compaction-boundary). The durable system:compact_boundary that the fix must key its suppression on is produced only by #1386's rollout mapping. origin/main has no such boundary for Codex, so there is nothing to reproduce or pin on main. Workers may not stack on another worker's PR. This belongs with #1386's author, or it can be worked once #1386 merges.
Activity
Juliusolsson05 commentedon Sep 27, 2026
Triage (W2): this is blocked on #1386 (W1's open PR,
fix/codex-compaction-boundary). The durablesystem:compact_boundarythat the fix must key its suppression on is produced only by #1386's rollout mapping. origin/main has no such boundary for Codex, so there is nothing to reproduce or pin on main. Workers may not stack on another worker's PR. This belongs with #1386's author, or it can be worked once #1386 merges.