Repository navigation
feat(tasks): replace Steps with task briefs and confidence ratings - #308
Conversation
Steps relied on the agent maintaining .claude/steps.json, which it often forgot. Remove the panel, watcher, IPC channels, prompt injection and setting. Add a task brief instead: after each agent turn the task-naming model rewrites a short brief (goal, headline, changed, extra, open, decided) from the turn's prompts, the agent's last message and the branch diff. The task header shows the headline; the full card lets the user keep a decision or send the agent a correction, view turns, and open the change tour. Add a generic confidence_publish MCP tool. Ratings carry named scores and findings, are tied to the diff they rated, and show as out of date once the code changes. "Rate confidence" sends a configurable prompt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu
Address review findings on the task brief: - Skip the model call when no prompt went out and the diff is unchanged, so agent startup and typed-input echo no longer cost a brief; "Update now" still forces one. Only turns with a prompt are recorded. - Date a brief by when its prompts and diff were read, so prompts sent while it is written are not lost and new ratings are not marked stale. - Treat an unreadable diff as unknown rather than empty. - Truncate prompts before fencing them, so the fence always closes. - Drop a queued rerun when the brief is cancelled or the watcher stops. - Use the last chat reply for chat-mode agents. - Keep the bar for published ratings when briefs are off; untint it. - Restore the sidebar line's styling and keep half-typed corrections across brief updates; focus the card on open and tick its times. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu
Briefs send each turn's prompts, the agent's last message and the diff to a model provider and cost a call per turn, like model task naming, which is also off by default. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu
Address the second review: - Read a brief's prompts and agent reply before awaiting the diff, so a prompt sent meanwhile lands in the next brief exactly once. - Count a new end-of-turn reply as news, so answer-only turns are not skipped; screen snapshots still do not count. - Prefer the selected pane's reply, then the newest, across agents. - Always clear the "updating" status when a brief run ends. - Compare ratings against the newest code read, and read it when the card opens, so ratings go out of date with briefs off too. - Keep one draft and send state per decision, and let a finished send clear only its own draft. - Keep the newest prompts within the budget and fence each one. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 626048e9b6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| const onKeyDown = (event: KeyboardEvent) => { | ||
| if (event.key !== 'Escape') return; | ||
| event.stopPropagation(); | ||
| setOpen(false); | ||
| anchor?.focus(); |
There was a problem hiding this comment.
Remove document listeners when Escape closes the card
After Escape closes the brief, this handler leaves the capture-phase document listeners installed by toggle(). The stale handler then intercepts every later Escape with stopPropagation() and refocuses the brief anchor even though the card is closed, preventing dialogs and other global Escape actions from working until the bar is explicitly toggled or unmounted. Remove both listeners on every close path.
AGENTS.md reference: AGENTS.md:L29-L29
Useful? React with 👍 / 👎.
| if (!store.taskBriefs) { | ||
| // Forget what was working, so turning briefs back on is not read as a turn ending. | ||
| for (const taskId of [...timers.keys()]) clearTimer(taskId); | ||
| working.clear(); | ||
| return; |
There was a problem hiding this comment.
Cancel active brief requests when briefs are disabled
If the user turns off Write task briefs while a model request is in flight, this branch clears only scheduled timers and leaves inFlight running. Because refreshTaskBrief does not re-check the setting after awaiting the model, the subprocess continues and its response is persisted after opt-out, contrary to the stop behavior documented in PRIVACY.md. Cancel the active handles here and prevent late responses from committing once the setting is off.
Useful? React with 👍 / 👎.
Steps relied on the agent maintaining .claude/steps.json, which it often
forgot. Remove the panel, watcher, IPC channels, prompt injection and
setting.
Add a task brief instead: after each agent turn the task-naming model
rewrites a short brief (goal, headline, changed, extra, open, decided)
from the turn's prompts, the agent's last message and the branch diff.
The task header shows the headline; the full card lets the user keep a
decision or send the agent a correction, view turns, and open the
change tour.
Add a generic confidence_publish MCP tool. Ratings carry named scores
and findings, are tied to the diff they rated, and show as out of date
once the code changes. "Rate confidence" sends a configurable prompt.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01SBomevzY6LUq8GNZpBfQEu