thread-briefs: ask the summarizer whether a thread is finished - #9
Closed
trotterdylan wants to merge 1 commit into
Closed
trotterdylan wants to merge 1 commit into
trotterdylan wants to merge 1 commit into
Conversation
Finished threads almost never read as done. The status derivation calls a
brief done when nextStep and blockedOn are both empty, and nextStep is asked
for as "the single most concrete next action" — a model asked for one finds
one. Nearly every agent turn that finishes something ends by handing it over
("try it out", "let me know if anything looks off", "want me to also…?"), and
that sentence is concrete, addressed to the user and would not happen on its
own, so it passed the owed-action test to the letter. A thread whose work had
entirely landed sat in Waiting on you until someone pinned it.
The prompt now asks a direct boolean, "finished", placed before nextStep so
the verdict is committed before the step is written, with the bar set at the
state of the work rather than the last message. A new rule names the hand-over
pattern as not owing an action, and another says an offer of further work
nobody took up is an idea for currentState, not a nextStep. The previous
brief's nextStep is labelled as something to re-test rather than carry
forward, since feeding it back is what made a stale step sticky.
The parser makes the verdict stick: finished:true clears whatever nextStep
came back beside it, so the thread derives done and reconcileStage reads
implementation as review. blockedOn overrules it the other way — a named
blocker is the higher bar and a blocked thread never reads as done. A reply
without the key falls back to the old reading of nextStep alone, so a model
that ignores it changes nothing.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
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.
Problem
Finished threads almost never read as Done. Status derives
doneonly whennextStepandblockedOnare both empty, andnextStepis asked for as "the single most concrete next action". A model asked for one finds one: nearly every agent turn that finishes something signs off with a hand-over ("try it out", "let me know if anything looks off", "want me to also…?"). That sentence is concrete, addressed to the user, and would not happen on its own, so it passed the owed-action test to the letter, and a thread whose work had entirely landed sat in Waiting on you until someone pinned it.Change
All under
plugins/thread-briefs:finished, placed beforenextStepso the verdict is committed before the step is written, with the bar set at the state of the work rather than the last message. New rules: a hand-over sign-off is not an owed action; an offer of follow-up work nobody took up belongs incurrentState; the previous brief's step is something to re-test, not carry forward.normalizeFinishedandreconcileNextStep.finished: trueclears whatevernextStepcame back beside it, so the thread derivesdoneandreconcileStagereadsimplementationasreview. A namedblockedOnoverrules it, so a blocked thread still never reads as done. A reply without the key behaves exactly as before.doneis "the agent has nothing left to do and is waiting on nobody", not "nobody will ever touch this again". If the result turns out broken, the next turn is activity and the next brief reopens the thread.Verification
tsc --noEmitvitest runbb plugin buildNot exercised against the live summarizer (the API key is server-side), so the first few summaries after rollout are worth a glance.
Rollout note
Per
.bb/AGENTS.md, merging restarts the bb-dylan server within about ten minutes. Existing briefs do not update until each thread has new activity or Re-summarize is pressed.🤖 Generated with Claude Code