Repository navigation
fix(workspace): remove "<agent> doesn't report steps" from the Work card (#3001) - #3148
Conversation
…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>
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>
/review report:
|
| 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
- SQL/auth/credentials: no backend change.
- Enum completeness:
kindvaluespending|unknown|none|stages; every consumer is inPortalWorkCard.vue, and all were checked. - Docs: the 4 docs describing the sentence are updated; enterprise-docs guard: 0 hits.
- Frontend: tokens only, the row footprint is kept (principle 4), mounted tests (Safety-critical UI logic keeps landing in the one tier with no executable coverage — and the stated reason is false #2918).
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>
|
merge-train: pushed
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. |
Summary
The Workspace Work card no longer says " doesn't report steps", at any point in a run.
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
portalWork.js:stepsLine(steps)returns{ kind: 'none', text: '' }for an agent with no stages. TheactivitySeenoption and the name/claim split (who), which existed only for the sentence, are gone.PortalWorkCard.vue:noneis silent likepending.reserveLiveRows, bug(workspace): the live chat card jumps ~2s into a turn — "<agent> doesn't report steps." and Stop pop in after first paint #2964): the reserved row stays, blank,aria-hiddenandh-4, so the card never changes shape.workStepsActivity.spec.js(new, mounted, Safety-critical UI logic keeps landing in the one tier with no executable coverage — and the stated reason is false #2918);architecture/workspace.md,feature-flows/workspace-work.md,requirements/core-agent.md,user-docs/operations/executions.md.Test Plan
npx vitest run tests/unit/workStepsActivity.spec.jscovers:aria-hiddenandh-4.stepsLineturns the spec red. The card's own tests stay green because the card silencesnoneby its kind, so there are two independent safeguards.Fixes #3001
🤖 Generated with Claude Code