Skip to content

fix(workspace): don't say "<agent> doesn't report steps" beside its live activity line (#3001) - #3002

Closed
dolho wants to merge 1 commit into
devfrom
fix/3001-work-steps-activity
Closed

dolho wants to merge 1 commit into
devfrom
fix/3001-work-steps-activity

Conversation

@dolho

@dolho dolho commented Sep 24, 2026

Copy link
Copy Markdown
Contributor

Summary

A live Work card could show the agent's activity line ("Thinking", "Reading …", #620) and, right beneath it, " doesn't report steps." The detection is correct: none means the agent publishes no #919 pipeline. But that sentence was ruled for ent#525, before the activity row existed on the same card.

  • stepsLine(steps, agent, { activitySeen }): once the card has shown a live line on this run, none renders nothing (kind: 'activity').
  • PortalWorkCard: activitySeen is sticky for the run, so the sentence doesn't flicker back between beats (a beat expires every 15 s). It resets when the card shows a different run.
  • Unchanged:
    • "Steps could not be read right now", because it stays true either way.
    • The ruled sentence for an agent that reports neither stages nor activity.

Changes

  • src/frontend/src/components/portal/portalWork.js: the stepsLine option.
  • src/frontend/src/components/portal/PortalWorkCard.vue: the activitySeen tracking.
  • src/frontend/tests/unit/workStepsActivity.spec.js: new, mounted.
  • The rule as stated in requirements/core-agent.md, feature-flows/workspace-work.md, architecture/workspace.md and user-docs/operations/executions.md.

Test Plan

Fixes #3001

🤖 Generated with Claude Code

…ive activity line (#3001)

The Work card's steps sentence was ruled for ent#525, before #620 put the
agent's live activity line on the same card. An agent that publishes no #919
pipeline (steps `none`) therefore showed "Thinking" / "Reading …" with
"<agent> doesn't report steps." directly beneath it — the card contradicting
itself.

stepsLine gains `{ activitySeen }`: once PortalWorkCard has shown a live line
on this run the `none` sentence is withheld (kind 'activity', nothing
rendered), sticky across the 15 s beat gaps and reset for a new run.
"Could not be read right now" is unchanged — it stays true either way. The
sentence still shows for an agent reporting neither stages nor activity.

workStepsActivity.spec.js (mounted) went red before the fix: 3 failed —
the activity rule, a live line beside the sentence, and suppression between
beats — and green after.

Fixes #3001

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@dolho dolho added the ui PR touches the frontend UI — triggers Playwright e2e tests label Sep 24, 2026
@dolho
dolho requested a review from vybe September 24, 2026 09:19
@dolho dolho closed this Sep 24, 2026
vybe pushed a commit that referenced this pull request Oct 2, 2026
…ard (#3001) (#3148)

* fix(workspace): don't say "<agent> doesn't report steps" beside its live activity line (#3001)

The Work card's steps sentence was ruled for ent#525, before #620 put the
agent's live activity line on the same card. So an agent that publishes no
pipeline showed "Thinking" / "Reading …" with "<agent> doesn't report steps."
directly beneath it, and the card contradicted itself.

stepsLine() gains `{ activitySeen }`. Once PortalWorkCard has shown a live line
on this run, the `none` sentence is withheld (kind `activity`, no text). This
is sticky across the 15 s beat gaps and resets for a new run. "Could not be
read right now" is unchanged, since it stays true either way, and the sentence
still shows for an agent that reports neither stages nor activity.

This re-lands the closed #3002 on top of #2972, which rewrote the same row for
the chat's one-line card (`reserveLiveRows`, #2964). There, `activity` is
silent like `pending`: the reserved row stays, blank and aria-hidden, so the
card keeps its shape. stepsLine still returns `who` for the `none` sentence.

workStepsActivity.spec.js (mounted): 4 of 8 fail on dev and all pass with the
fix. It covers the rule, a live line beside the sentence, suppression between
beats with a reset for the next run, and the chat card's reserved row staying
blank at h-4.

Fixes #3001

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(workspace): remove "<agent> doesn't report steps" entirely (#3001)

Ruled 2026-10-01: the sentence goes, not only beside a live activity line.
Before the first line it read as a fault, and beside "Thinking" / "Reading …"
as the card contradicting itself. A running card now shows the live activity
line, or the stages when the agent publishes them, or nothing.

- stepsLine(steps) returns { kind: 'none', text: '' } for an agent with no
  stages. The `activitySeen` option and the name/claim split (`who`), which
  existed only for the sentence, are gone.
- PortalWorkCard treats `none` like `pending`. It renders nothing outside the
  chat. In the chat's one-line card (`reserveLiveRows`, #2964) the reserved
  row stays, blank and aria-hidden, so the card keeps its shape.
- "Steps could not be read right now." stays, since it reports a real failure.

Tests: workStepsActivity.spec.js covers the card before the first line, beside
a live line, between heartbeats, the unknown sentence, and the chat card's
blank h-4 row. Four #2964 and ent#525 tests that asserted the sentence now
assert its absence, with the shape guarantees they protect kept. Restoring
the sentence in stepsLine turns the spec red. Full suite: 244 files, 4,484
tests.

Docs: architecture, feature flow, requirement and user doc updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* docs(workspace): drop stale "doesn't report steps" references (#3001)

The feature-flow and three code comments still described the removed
sentence (the agent-name truncation, "the card says ..."). Comment and
doc text only; no behaviour change.

merge-train: mechanical, per the merge-train note on the PR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: trinity-ability <309458136+trinity-ability@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ui PR touches the frontend UI — triggers Playwright e2e tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant