From 8a76a7f14282bf257a608326de28ac90b4791b82 Mon Sep 17 00:00:00 2001 From: Brad Harris Date: Tue, 18 Aug 2026 22:05:27 -0600 Subject: [PATCH] Correct the Status Events docs and add a status-correction tip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deep-dive of the docs-pane Status Events section against its two sources of truth. Verified clean: the five event types match dispatch_event's enum as a set in both directions, done/waiting_user/blocked are exactly what triggers browser + Slack notifications, the activity monitor's 3-minute window and its "Activity detected" / "No recent activity detected" strings are exact, and every Activity-page claim (year heatmap, active hours, working-time stats, status breakdown) still renders. Two drifts fixed: - The sidebar claim only described top-level cards. #977 added describeAgentStatus, which sub agent rows and the Session details dialog use instead of the raw event label — a stopped or errored agent reads Stopped/Error there rather than a stale "Working", and one that hasn't reported yet reads "Running". None of those three labels were in the documented set. - "Startup rules tell the agent which event types to use" is only true on the verbose branch of buildLaunchGuidance. With Settings → Agents → Launch guidance → Use short startup rules on, that rule keeps the timing and the `blocked` distinction but deliberately leaves the type list to the dispatch_event tool description. Also adds an ambient tip for automatic status correction (since 0.21.9, confirmed by ancestry against the v0.21.8/v0.21.9 release commits): the Status Events section had no tip pointing at it, and a background loop authoring "No recent activity detected" under an agent's name is exactly the kind of thing a user reads as the agent's own report. Gave that H3 an id so the tip can deep-link to it. Co-Authored-By: Claude Opus 5 (1M context) --- .../components/app/docs-sections/events.tsx | 24 ++++++++++++++----- apps/web/src/lib/tips/tips.ts | 8 +++++++ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/apps/web/src/components/app/docs-sections/events.tsx b/apps/web/src/components/app/docs-sections/events.tsx index 141bbe8a..c08f0650 100644 --- a/apps/web/src/components/app/docs-sections/events.tsx +++ b/apps/web/src/components/app/docs-sections/events.tsx @@ -48,10 +48,18 @@ export function EventsContent() { them to build the activity and active-hours heatmaps, working-time stats, and the status breakdown chart.

+

+ Sub agent rows and the Session details dialog show + the agent's current state instead of a stale event: an agent that has + stopped reads Stopped (or Error if + it failed), whatever its last reported event was, and one that hasn't + reported yet reads Running. The timestamp next to it + is still the last event's. +

-

Automatic status correction

+

Automatic status correction

Agents don't always report accurately, so Dispatch cross-checks each running agent's status against its terminal activity. If the terminal @@ -69,11 +77,15 @@ export function EventsContent() {

Configuring agent instructions

Dispatch already injects startup rules at launch telling the agent - which event types to use and when to emit them, so reporting works - without any setup. To reinforce or customize the behavior, add - instructions to your repo's CLAUDE.md (or equivalent - config) covering the checkpoints that matter to you: start of turn, - phase transitions, and a terminal event before the final response. + what each event type means and when to emit them, so reporting works + without any setup. With Use short startup rules on + (Settings → Agents → Launch guidance), that rule keeps the timing and + the blocked distinction but leaves the list of types to + the dispatch_event tool description. To reinforce or + customize the behavior, add instructions to your repo's{" "} + CLAUDE.md (or equivalent config) covering the checkpoints + that matter to you: start of turn, phase transitions, and a terminal + event before the final response.

diff --git a/apps/web/src/lib/tips/tips.ts b/apps/web/src/lib/tips/tips.ts index 8c962178..d7e7f570 100644 --- a/apps/web/src/lib/tips/tips.ts +++ b/apps/web/src/lib/tips/tips.ts @@ -308,6 +308,14 @@ export const tips: Tip[] = [ since: "0.35.0", surfaces: ["ambient"], }, + { + id: "status-correction", + title: "Status Correction", + body: 'Agent statuses are self-reported, so Dispatch cross-checks them against terminal activity. An expanded card showing "Activity detected" or "No recent activity detected" is that correction, not something the agent reported.', + docsSection: "events#status-correction", + since: "0.21.9", + surfaces: ["ambient"], + }, ]; export function getTipById(id: string): Tip | undefined {