Skip to content

Regression: Compact tool activity hides visible interim progress from the live Session timeline #2956

@franksong2702

Description

@franksong2702

Problem

Compact tool activity is meant to reduce tool/debug noise while preserving the agent timeline. The current live Session stream can hide visible interim assistant progress from the main live timeline, making an active run appear to show only Activity/compression/tool chrome instead of the concise progress text the agent emitted.

This is a contract regression, not a request for a new surface.

Expected behavior

  • Visible interim_assistant progress text remains visible in the live Session timeline without requiring the user to expand Activity details.
  • Compact Activity may group tool/debug metadata and Thinking details, but it must not make user-visible progress collapsed-only or effectively invisible.
  • Live SSE and journal/replay paths continue to preserve a chronological agent work story.

Current evidence

The current Settings copy says Compact tool activity should preserve the timeline:

  • static/index.html: Show thinking and tool calls as compact inline activity while preserving the agent timeline.
  • api/config.py: render tools/thinking as compact inline timeline activity

PR #2466 clarified the product contract:

  • Compact activity means quieter inline activity while preserving the timeline.
  • Long-running agent work needs visible chronological progress.
  • Compact mode should reduce visual noise, not erase chronology.

The run-state consistency contract also points in the same direction:

  • docs/rfcs/webui-run-state-consistency-contract.md says visible transcript, live stream / SSE, run journal / replay, and live UI scene/cache must remain coherent.
  • It specifically calls out preserving chronological live-scene order and replaying Thinking / progress / tool / compression turns through the same timeline renderer.

Suspected regression path

PR #2638 changed the compact Activity semantics in the opposite direction:

  • "Render settled and live Compact-mode Thinking inside the shared Activity disclosure instead of separate transcript blurbs."
  • "Stop interim assistant text from splitting the current live Activity group."

That made compact mode prefer a single shared Activity disclosure over visible interim progress timeline boundaries.

PR #2777 later fixed an adjacent rendering loss by adding _flushPendingSegmentRender() before segment reset, but it did not restore the product contract that visible interim assistant progress belongs in the live Session timeline. In the current interim_assistant path, the flush also runs before ensureAssistantRow(true), so interim-only segments can still miss a live assistant body to render into before reset.

Acceptance criteria

  • Visible interim_assistant progress text renders as visible assistant timeline content in the live Session stream.
  • Compact Activity still groups tool/debug details and does not reintroduce noisy expanded tool stacks by default.
  • Visible interim progress is not available only inside a collapsed Activity disclosure.
  • The interim_assistant -> tool and interim_assistant -> compressing boundaries are covered by regression tests.
  • Tests and docs encode the product contract: Compact Activity reduces noise, but must preserve visible progress in the live agent timeline.

Non-goals

  • No new UI surface.
  • No rewrite of compact Activity.
  • No change to provider/runtime callback semantics unless required to preserve the existing visible-progress contract.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions