The previous guard only kept an exited background command published when its task_notification was buffered. Claude's empty background_tasks_changed level can arrive before or after that notification (the SDK leaves the order unspecified), and it published the empty roster straight away. While idle, a roster update now keeps any published task Claude still owes a wake run (wake-eligible or tombstoned). Only the published roster keeps it, so query replacement still sees the cleared internal roster; the wake run's finalize, an interrupted turn, or a process reset publishes it away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Julius Marminge committed on 10/24/2026, 10:29:44 AMparente362ada
Checks
- SuccessfulCodeRabbitGitHub
Review completed
- Successful
Skipped - Not affected
- FailedCheckGitHub
- SkippedTest WebGitHub
- SkippedRustGitHub
- Skipped
- SkippedRelease SmokeGitHub
- SuccessfulTestGitHub
- SuccessfulBuild and TypecheckGitHub
- SuccessfulLabel PR 24391GitHub
- SkippedEAS PreviewGitHub
- Skipped
- SuccessfulLabel PR sizeGitHub
- Skipped
- Successful
- Successful
- SuccessfulPrepare PR size configGitHub
- SuccessfulCollect PR targetsGitHub
- FailedTest Server 4GitHub
- SuccessfulTest Server 5GitHub
- SuccessfulTest Server 1GitHub
- SuccessfulTest Server 8GitHub
- SuccessfulTest Server 6GitHub
- SuccessfulTest Server 7GitHub
- SuccessfulTest Server 3GitHub
- SuccessfulChangesGitHub
- SuccessfulTest Server 2GitHub
- SuccessfulNative fingerprint diffGitHub
- SuccessfulLintGitHub
2 files changedLine totals unavailable