Skip to content

fix(coding-agent): stop retry watchdog after provider recovery - #1671

Open
asdfqwerzxcc wants to merge 4 commits into
code-yeongyu:mainfrom
asdfqwerzxcc:fix/retry-watchdog-tool-abort
Open

asdfqwerzxcc wants to merge 4 commits into
code-yeongyu:mainfrom
asdfqwerzxcc:fix/retry-watchdog-tool-abort

Conversation

@asdfqwerzxcc

@asdfqwerzxcc asdfqwerzxcc commented Sep 13, 2026

Copy link
Copy Markdown

Summary\n\nStop the provider-timeout retry watchdog from aborting a recovered run after the provider has already produced a tool call. The watchdog now checks retry-request ownership before aborting the active Agent, so a long foreground eval can cross the old deadline and still return its result to the model.\n\nThis is the separate lifecycle defect observed while reproducing oh-my-openagent #8246: no Esc/Ctrl+C input was involved.\n\n## Changes\n\n- add a retry-request ownership predicate to the bounded continuation watchdog\n- derive ownership from AgentSession retry-attempt state, which resets at the recovered provider response boundary\n- add deterministic fake-timer coverage for provider timeout -> recovered eval -> old deadline -> provider call three\n- preserve the existing watchdog for genuinely wedged provider retries\n- document the core ownership contract and release note\n\n## QA & Evidence\n\n- RED: parent Agent signal became aborted and only 2 provider calls occurred\n- GREEN focused: 11/11 timeout continuation tests pass\n- Provider regression cluster: 32/32 pass\n- Static/build: changed-file Biome pass, root TypeScript no-emit pass, diff check pass, full build exit 0, changelog gate pass\n- Manual runtime driver: recoveredParentAborted=false; a still-wedged retry remains wedgedRetryAborted=true\n- Real source CLI: eval hard-limit mock loop 5/5 pass, two model turns served, final assistant text returned, real auth unchanged\n- Artifact: local-ignore/qa-evidence/20260914-retry-watchdog-tool-abort/README.md in the task worktree (ignored by repository policy)\n\n## Risks & Residuals\n\n- The predicate relies on the existing invariant that a genuinely successful provider message_end resets retry-attempt state before tool execution. The regression pins that ordering.\n- Broad Windows suites retain pre-existing path, release-script, and native-prebuild fixture failures documented on the sibling PR; focused changed-domain tests are green and GitHub CI is authoritative.\n- The local gate-review agent remained non-terminal in its bounded attempt, so no local reviewer approval is claimed; repository CI/review remains required.\n\n## Related\n\n- Sibling file-integrity fix: #1670\n- Original report: https://github.com/code-yeongyu/oh-my-openagent/issues/8246\n


Summary by cubic

Stops the provider retry watchdog from aborting a session after a timeout retry has already recovered. Previously, a retry that successfully yielded a long-running local tool could still hit the original watchdog deadline, abort the Agent mid-execution, and drop the tool result. Now the watchdog only aborts while a retry request is still pending, so a recovered run continues normally.

  • The pending check is derived from retry-attempt state, which resets when the recovered provider response reaches message_end before the tool runs.
  • Adds a deterministic fake-timer regression test covering the timeout → recovered eval → old deadline → provider call 3 sequence.
  • A genuinely wedged provider retry is still aborted by the watchdog as before.

Written for commit 168f2ee. Summary will update on new commits.

Review in cubic

asdfqwerzxcc and others added 4 commits September 14, 2026 00:42
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Ultraworked with [omo](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: sisyphus-dev-ai <sisyphus-dev-ai@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant