Skip to content

bug(codex): a live compaction can show "Conversation compacted" twice #1401

Open

Description

@Juliusolsson05

Found by review c of #1386.

Sequence (reproduced through the real ledger)

  1. 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').
  2. The durable boundary. The CLI then writes the compacted rollout line, which fix(codex): render committed compaction as a timestamped boundary #1386 maps to a timestamped system:compact_boundary.
  3. 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.
  4. 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.

Activity

  1. Juliusolsson05 commented on Sep 27, 2026

    @Juliusolsson05
    OwnerAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingclass:C8-renderingRendering order/duplicatesprovider:codexAffects Codex integrationsev:P3Minortype:bugSomething works wrong

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions