Skip to content

fix(workspace): remove "<agent> doesn't report steps" from the Work card (#3001) - #3148

Merged
vybe merged 3 commits into
devfrom
fix/3001-work-steps-activity-v2
Oct 2, 2026
Merged

vybe merged 3 commits into
devfrom
fix/3001-work-steps-activity-v2

Conversation

@dolho

@dolho dolho commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The Workspace Work card no longer says " doesn't report steps", at any point in a run.

  • The sentence was ruled for ent#525, before fix(agent-runtime): kill npx MCP orphans outside claude pgid that hold stdout pipe open (#618) #620 put the agent's live activity line on the same card. Beside "Thinking" / "Reading …" it read as the card contradicting itself, and before the first line it read as a fault. Ruled 2026-10-01: remove it outright.
  • A running card now shows the live activity line, or the stages when the agent publishes them, or nothing.
  • "Steps could not be read right now." stays. It reports a real failure: the agent is stopped or unreachable, or two runs are on one agent.

Supersedes the closed #3002. The first commit here re-landed #3002's narrower rule (hide the sentence once activity has shown) on top of #2972. The second commit replaces it with full removal.

Changes

Test Plan

  • npx vitest run tests/unit/workStepsActivity.spec.js covers:
    • no sentence before the first activity line, beside a live line, or between heartbeats;
    • "could not be read" still shown;
    • the chat card's row blank, aria-hidden and h-4.
  • Mutation: putting the sentence back in stepsLine turns the spec red. The card's own tests stay green because the card silences none by its kind, so there are two independent safeguards.
  • Full frontend suite: 244 files, 4,484 tests. The design-token check passes.
  • Enterprise-docs guard over the doc changes: 0 hits.

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. 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>
@dolho dolho added the ui PR touches the frontend UI — triggers Playwright e2e tests label Oct 1, 2026
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>
@dolho dolho changed the title fix(workspace): don't say "<agent> doesn't report steps" beside its live activity line (#3001) fix(workspace): remove "<agent> doesn't report steps" from the Work card (#3001) Oct 1, 2026
@dolho

dolho commented Oct 1, 2026

Copy link
Copy Markdown
Contributor Author

/review report: fix/3001-work-steps-activity-v2 → dev

Files changed: 9 (+137/-54). Scope: CLEAN. Plan completion: 2/2 done (remove the sentence everywhere; mounted test).
Merges cleanly with today's dev (git merge-tree), and also together with #3155, #3156, #3157 and #3158 (octopus merge).

Execution coverage

changed symbol / test executed by live consumer verdict
stepsLine(steps), kind none → empty text workStepsActivity.spec.js, portalWork.spec.js PortalWorkCard.vue steps computed, its only caller ✅ executed
stepsSilent (pending ∪ none) workStepsActivity.spec.js (mounted), portalWorkCardLiveShape.spec.js the card's steps row ✅ executed
removed who / portal-work-sentence-* 3b in the live-shape spec asserts they're absent none left on dev (grepped) ✅

Fix mutation: putting the sentence back in stepsLine turns the spec red.

Live check (local dev stack, 2026-10-01, dev + this PR)

A real turn on proj-beta in a Workspace chat, sampled every 500 ms: 42 samples, 4 with the live activity line, 9 with the reserved row blank, 0 containing "doesn't report steps".

Critical findings

None.

Informational

None.

Clean categories

Summary: Critical 0 · Informational 0 · Scope clean.

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>
@vybe

vybe commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

merge-train: pushed b4d3cd315. It changes doc and comment text only.

docs/memory/feature-flows/workspace-work.md still described the removed sentence as live: Ruling 2's "says so", "only the agent's name truncates", and "never 'doesn't report steps'". So did comments in PortalWorkCard.vue, client_portal/work/models.py and pipeline_state.py. They now match none-is-silent. There is no behaviour change.

The PR removes the sentence in every case, citing "Ruled 2026-10-01". #3001's Expected section had kept it for agents that report nothing. A one-line note on #3001 recording that ruling would help the next reader.

@vybe vybe left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

merge-train: batch validated on train PR #3179 (all checks green).

@vybe
vybe merged commit 67dc170 into dev Oct 2, 2026
27 checks passed
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.

3 participants