Repository navigation
Conversation
Its host says it started before berthd reads the log, so the catch-up read says nothing, and a session with no turn state lists as running: after a box restarted or a conversation was opened again, the app showed it working, its timer counting up, until someone sent it something. The catch-up now says the agent is ready when nothing else did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@tinhthanh is attempting to deploy a commit to the seanbrydonio's projects Team on Vercel. A member of the Team first needs to authorize it. |
There was a problem hiding this comment.
All reported issues were addressed across 5 files
Reply with feedback, questions, or to request a fix.
View guided diff | Re-trigger cubic
… start; changelog says it needs the box upgraded Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts host starts The catch-up said Ready for any agent not busy with no turn state, also a new session whose host hadn't started: the app then sent its first prompt sooner, and that turn could end before anything saw it running. Each driver now notes when its agent last said it was ready (Claude: its host started; Codex and ACP: their thread or session opened) and the catch-up says Ready only then. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
All reported issues were addressed across 3 files (changes from recent commits).
Reply with feedback, questions, or to request a fix.
View guided diff | Re-trigger cubic
Codex said Ready only for a new thread id, so a session resumed on its own thread stayed exited and listed as working. It now says Ready each time a thread opens, live, and reads the result once (a result that fails to decode changes nothing). The Codex driver test checks the resumed session lists as idle. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
Bug: A structured (stream-json) agent that is started again without a new prompt lists as
runningforever: the app shows it working with a timer counting up, until someone sends it something. This happens after its agent exits and the session is resumed, or after the box restarts and its conversation is opened in a new session. Seen on a real box: the last turn ended normally (end_turn), the box rebooted, the conversation was resumed at its prompt, and the session showed "working" for over 90 minutes withberth session turnsreporting no turns.Cause:
startedentry before berthd starts following the log.follow()reads entries already in the log without saying anything (live=false), so the driver'sReadyfor that start is never sent.reconcile()only correctsrunning/waiting→Finished. With the turn state empty orexited, nothing is sent.enrichthen defaults the session torunning(tasks.go).Fix: Each driver notes when its agent last said it was ready, whether the log was read live or not: Claude when its host started; Codex and ACP when their thread or session opened. The note clears when the host starts again or exits. In
reconcile(), a new case: not busy, nothing pending, the agent at its prompt, and turn state""orexited→ sendReady. The turn tracker makes thatidle(only when no turn is open). A new session whose host hasn't started yet gets nothing from the catch-up, as before. An earlier version sentReadythere too: that moved its first prompt sooner, andTestATurnClaudeStartsByItselfShowsAsWorkingthen missed the first turn's shortrunning(17/30 runs). It passes 30/30 now.Test:
TestAResumedConversationWithNoPromptIsIdle, with the stand-in stream Claude. It covers three cases:It fails before the fix (
AgentState: runningwith the turn stateexited) and passes 10/10 with-raceafter;TestATurnClaudeStartsByItselfShowsAsWorkingpasses 30/30.go test -race ./...passes, exceptTestAttachPassesShiftEnter, which also fails onmainwithout this change. Changelog bullet added under Unreleased.🤖 Generated with Claude Code