Skip to content

Semantic tool and edit rows can disappear without diagnostics explaining the suppression reason #344

Closed

Description

@Juliusolsson05

Problem

Saved debug bundles do not expose why semantic tool/edit rows disappear. Several code paths intentionally suppress semantic rows, but render diagnostics only show high-level row state.

Evidence

Bundle:

~/.config/agent-code/debug-bundles/manual/2026-06-22T12-41-25-706-450b5c8a

  • Note says edits/tool rows stopped rendering.
  • Diagnostics show semantic history turns with text plus tool_use blocks.
  • Current semantic turn has only empty thinking, so emitting no visible current row is expected.
  • The bundle does not say whether missing tool/edit rows were skipped as committed-owned, collapsed, running, empty, or unparseable.

Known Suppression Paths

  • semantic blocks owned by committed tool indices
  • collapsed activity rows returning null while running
  • empty reasoning blocks
  • live edit rows waiting for parseable edit input
  • committed rich edit/write/todo surfaces taking ownership

Relevant paths:

  • src/renderer/src/features/feed/ui/semantic/renderUnits.ts
  • src/renderer/src/features/feed/ui/semantic/CollapsedActivityRow.tsx
  • src/renderer/src/features/feed/ui/semantic/BlockRow.tsx
  • src/renderer/src/features/feed/ui/rows/Block.tsx

Expected Diagnostics

For each semantic turn, include raw block count, emitted render units, skipped reason, and whether the React row returned null.

Useful skip reasons:

  • committed_tool_use
  • committed_tool_result
  • empty_thinking
  • collapsed_running
  • owned_text
  • unparseable_live_edit

Activity

  1. Juliusolsson05 commented on Jun 22, 2026

    @Juliusolsson05
    OwnerAuthor

    Linking this back to #172. This is the diagnostic companion to the new rendering engine work: the single ordered ownership plan should emit explicit owner/suppression decisions for semantic tool/edit rows.

    When #172 is implemented, this issue should verify that render diagnostics include candidate owners, selected owner, skipped reasons, and final DOM order for each feed item.

  2. Juliusolsson05 commented on Jul 7, 2026

    @Juliusolsson05
    OwnerAuthor

    Structurally fixed by the ledger rewrite (#442).

    Every suppressed candidate now records a typed RenderReason + evidence in the ownership decision (src/renderer/src/rendering/model/types.ts), serialized verbatim into feed-debug and debug bundles — so "why did this row disappear" is answerable directly from a bundle. The named skip reasons (committed-tool-use-owned, empty-thinking, collapsed-running, compaction-synthesis, synthetic-user-filtered, sidechain-filtered, …) are the enum. Closing.

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions