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.
Retry Copilot startup no-output watchdog failures in scheduled/push runs #48514
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Retry Copilot startup no-output watchdog failures in scheduled/push runs #48514
Changes from all commits
88e67ebc3c5831005f49c612ae737f8aa27File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
There are no files selected for viewing
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[/diagnosing-bugs] The
watchdogFired === true && !hasOutputcondition is contradictory: the post-result watchdog is armed only afterhasTerminalSafeOutput(safeOutputsPath)returns true (line 1151), which requires safe-output to exist — implyinghasOutputis true when the watchdog fires. This means the new watchdog-based retry branch can never trigger in practice.💡 Root cause analysis
The watchdog's
shouldArmpredicate is() => hasTerminalSafeOutput(safeOutputsPath). A process that exits code 1 via watchdog will have produced terminal safe-output, sohasOutputwill betrue. The retry candidate predicate!result.hasOutput && exitCode === 1 && watchdogFiredtherefore requires a state combination the current wiring cannot produce.Before merging: pull the actual
agent-stdio.logfrom the failingDaily Issues Report Generatorrun and confirm whetherhasOutput=false watchdogFired=trueappears. If it does not, this branch is dead code.@copilot please address this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The existing review comment raises a concern about
watchdogFiredbeing true in a startup context, and there is a related correctness gap worth addressing.If a prior attempt already wrote terminal safe-output to disk (e.g. from a partial-execution run that produced output), the watchdog on the next attempt arms on the first poll interval, fires before the process produces any console output, and yields
hasOutput=false, watchdogFired=true, failureClass=no_output.The existing terminal-safe-output guard at ~line 1273 only fires for
failureClass === "partial_execution"or"long_run_exit". WhenhasOutput=false,failureClassis"no_output"so this guard is bypassed — and the startup no-output retry can fire even though a terminal safe-output was already written by the prior attempt.Suggested fix: add a
hasTerminalSafeOutputguard to the startup retry condition:This prevents a spurious fresh retry when
watchdogFired=trueoriginates from stale safe-outputs arming the watchdog, rather than a true startup-only failure.@copilot please address this.