feat(console): status grammar reaches Inbox, Approvals, Agents and Cockpit (v0.329.0) - #599
Merged
Merged
Conversation
…ckpit (v0.329.0) Finishes the sweep started in v0.328.0. Decision cards resolved in the card TYPE's colour, so "applied" and "rejected" looked identical: every proposal (policy, agent edit, goal edit, automation, skill, secret) rendered its outcome as the same violet/indigo/amber outlined badge whatever the human decided. The per-type verb stays — it says more than "approved" (installed, granted, applied) — but the ROLE behind it is now shared (RESOLUTION_ROLE / ResolutionChip), so approved is green, rejected is red, and `cancelled` (the session ended before anyone decided) is neutral, on every card type alike. A THIRD private outcome map (OUTCOME_STYLE, after runVerdict and OUTCOME_TONE in v0.328.0) carried the same synonym gap: a run that reported completed/progressed/ blocked read `ended`, as if it had never reported. Worse, the card's own icon keyed off a bare `=== 'failure'`, so a run that reported the synonym `blocked` announced its failure with a GREEN TICK. Both go through verdictOf/VERDICT_META. Also: - a question card is amber (needsHuman) rather than sky — it is blocked on a person, exactly like every other such signal. Sky stays what it means elsewhere: chat/unread. - the last "in progress = sky" in the app (a task-event card that is neither blocked nor done) is emerald. New: - The Agents roster says which agents are busy right now — the first thing you want when deciding who to give work to, and something it never showed. Newest live run per agent, off the feed the console already polls, through the same SessionStatus. Both the roster rail and the grid card. - Cockpit candidates show whether that agent is already running, so you can see before dispatching that your best-fit agent is mid-run. The Cockpit has no status vocabulary of its own — it is a dispatcher — so this is the only status-shaped thing on the page. Verified by screenshotting Inbox (resolutions + every outcome synonym), Agents and Cockpit against stubbed data; typecheck + both builds + test:governance green. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015ZUfffxY4hKv7M6wMCcaTz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Finishes the sweep started in #598.
Inbox / Approvals
Decision cards resolved in the card TYPE's colour, so "applied" and "rejected" looked identical. Every proposal — policy, agent edit, goal edit, automation, skill, secret — rendered its outcome as the same violet/indigo/amber outlined badge, whatever the human actually decided.
The per-type verb stays (it says more than "approved":
installed,granted,applied); the role behind it is now shared, so approved is green, rejected is red, andcancelled— the session ended before anyone decided — is neutral, on every card type alike.A third private outcome map. After
runVerdictandOUTCOME_TONEin #598,OUTCOME_STYLEcarried the same synonym gap: a run that reportedcompleted/progressed/blockedreadended, as if it had never reported. And the card's own icon keyed off a bare=== 'failure', so:Both go through
verdictOf/VERDICT_METAnow.Smaller: a question card is amber (
needsHuman) rather than sky — it's blocked on a person, like every other such signal. And the last "in progress = sky" in the app (a task-event card that's neither blocked nor done) is emerald. Sky now only ever means chat/unread.Agents
The roster never said which agents are busy — the first thing you want when deciding who to give work to. Newest live run per agent, off the feed the console already polls, through the same
SessionStatus, so an agent whose run needs a human rings the same bell here as in the sidebar. Both the roster rail and the grid card.Cockpit
No status vocabulary of its own — it's a dispatcher, so there was nothing to unify. The one status-shaped thing worth having: candidates show whether that agent is already running, so you can see before dispatching that your best-fit agent is mid-run.
Verification
Screenshotted the Inbox (resolution chips + every outcome synonym), Agents and Cockpit against stubbed data. Typecheck, both builds,
test:governancegreen.Web-only — bundle rebuild.
🤖 Generated with Claude Code
https://claude.ai/code/session_015ZUfffxY4hKv7M6wMCcaTz