Repository navigation
Conversation
A thread whose pull request waits on someone else can now be snoozed with no wake time, held by pull request watches. The new thread.snooze-until-attention command and the agent's snooze_until_pull_request_needs_attention tool both go through PullRequestWatchReactor.snoozeUntilAttention. It reads each open linked pull request from its host and dispatches the snooze with watches primed from that read, the way a watch pass records it. Nothing the pull request already shows (failing checks, required checks that passed, a conflict) wakes the thread, and anything that changes afterwards does. A watch already on keeps its start, remark cursor, and wake count, so comments after its last read still wake it. The snooze is refused when no linked pull request is open, when one cannot be read, or when the thread's linked pull requests or their watches changed while the host was read. It follows the snooze rules, and an agent's call that lands after the user pressed Stop is refused, like watch_pull_request. A watch pass that began before a snooze primed a pull request reports nothing about it, caches no read of it, and does not count a failed read of it against the watch, so a stale read cannot replace what the snooze recorded, settle the thread on a close the pull request has since undone, let the next pass skip it, or end the watch early. The snooze's own read starts the failure count over, the way a pass's successful read does. A later watch wake brings the thread back and the watch continues. Merging or closing the last watched pull request settles the thread instead of sending the closed note, unless the thread's link snapshots show another linked pull request open, such as one that reopened after its watch ended and so is not watched again. Then the snooze ends with the watch and the agent hears of the close as usual. The orchestrator decides this under the thread lock. While the thread is still at work, the watch reactor leaves the watch and snooze in place and settles it on the first pass after the turn ends. A merge is final, so that pass does not read the host again; a closed pull request can reopen, so each pass reads it again first. Any other way the last watch ends (unwatch, Stop, unlink, settle, archive) ends the snooze, so it can never outlive what could wake it. Waking or pinning the thread clears it too, and a subagent made under such a thread does not inherit it. Usage-limit recovery respects it: the worker's automatic arming records the recovery without replacing the snooze, and an armed continuation waits until the snooze ends. Pull requests only such threads watch are checked every 10 minutes. With the new snoozePullRequestsAwaitingReview setting, agents are told to snooze instead of unwatching when a pull request only waits on review: in the shared runtime instructions when the thread attaches to a provider session, and in watch wakes. Servers advertise the threadSnoozeUntilAttention capability for the command and the setting, because servers from before it already advertise threadSnooze. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Thread transfer impact
This comment will update automatically after the next completed run. |
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.
Note
🤖 Claude Opus 5.5 on behalf of Oliver
Important
Bottom of a three-PR stack on this fork: server → web → mobile. Review in that order. The upstream PR will be a single squashed PR pointing back here.
Problem
An external contributor's pull requests often sit ready for days, waiting on a maintainer. Since pingdotgg#16204, a watched thread stays in Working, and agents are told to unwatch when they hand work back. That leaves two bad options: keep the thread visible while nothing is actionable, or unwatch and miss the maintainer's feedback when it arrives.
Fix
A thread can now be snoozed until its pull request needs attention: a snooze with no wake time, held by the thread's PR watches.
thread.snooze-until-attentioncommand for clients, and an always-available MCP tool,snooze_until_pull_request_needs_attention. The tool uses the samewritesThreadaccess aswatch_pull_request, respects Stop, and passes refusal reasons back to the agent. Both callPullRequestWatchReactor.snoozeUntilAttention.sidebarAutoSettleOnMerge, with no reopening message. If the agent is mid-turn, it settles after the turn. If another linked PR is still open, the snooze ends instead.snoozePullRequestsAwaitingReview(off by default) tells agents, through the runtime instructions and watch wake text, to use the tool when a PR only waits on someone else's review. When it's off, nothing suggests the tool.snoozedUntilNeedsAttention: truewithsnoozedUntil: null, plus the capabilitythreadSnoozeUntilAttentionso clients can gate the feature.docs/user/source-control.md.Validation
runtimeLayer,pullRequestWatch,ThreadStop,ThreadSettlementService,ProjectionSettlement, PR toolkit handlers,RuntimeInstructions,McpToolAccess, andProviderSessionManager. Typecheck passes for contracts, shared, client-runtime, server, web and mobile.Implemented by Claude Opus 5.5 subagents through the T3 Code orchestrator, reviewed by GPT-6.1-Sol (Codex), and coordinated by Claude Opus 5.5 in Claude Code within T3 Code.