Skip to content

feat(console): status grammar reaches Inbox, Approvals, Agents and Cockpit (v0.329.0) - #599

Merged
vikasprogrammer merged 1 commit into
mainfrom
feat/status-grammar-2
Aug 8, 2026
Merged

feat(console): status grammar reaches Inbox, Approvals, Agents and Cockpit (v0.329.0)#599
vikasprogrammer merged 1 commit into
mainfrom
feat/status-grammar-2

Conversation

@vikasprogrammer

Copy link
Copy Markdown
Owner

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, and cancelled — the session ended before anyone decided — is neutral, on every card type alike.

A third private outcome map. After runVerdict and OUTCOME_TONE in #598, OUTCOME_STYLE carried the same synonym gap: a run that reported completed/progressed/blocked read ended, as if it had never reported. And 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 now.

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:governance green.

Web-only — bundle rebuild.

🤖 Generated with Claude Code

https://claude.ai/code/session_015ZUfffxY4hKv7M6wMCcaTz

…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
@vikasprogrammer
vikasprogrammer merged commit 9d949c8 into main Aug 8, 2026
1 check passed
@vikasprogrammer
vikasprogrammer deleted the feat/status-grammar-2 branch August 8, 2026 18:26
vikasprogrammer added a commit that referenced this pull request Aug 11, 2026
…ckpit (v0.329.0) (#599)

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.


Claude-Session: https://claude.ai/code/session_015ZUfffxY4hKv7M6wMCcaTz

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant