Repository navigation
Keep waiting for the answer when a page read stalls after the send - #17
Merged
Merged
Conversation
The answer wait failed the run on the first page read that timed out or threw, although ChatGPT was still answering. Every prompt was already sent, so the answer was lost unless its tab could still be read. The wait now rides out such reads for up to 10 command budgets. Each poll repeats the same reads, so nothing is sent again, and a privacy refusal or closed connection still ends it at once.
This was referenced Oct 30, 2026
…e-stalls # Conflicts: # CHANGELOG.md
ryanduguid
enabled auto-merge (squash)
October 30, 2026 23:26
|
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.



Summary
A page read that times out or throws after the send no longer fails the run while ChatGPT is still answering. The answer wait keeps polling for up to 10 command budgets, and no prompt is sent again.
Evidence
a_page_stall_after_the_send_keeps_waiting_and_captures_the_answer_without_a_second_sendfails with the error seen in live runs:CDP command timed out; acknowledgement is uncertain. Do not replay. Method: Runtime.evaluate.After: it passes, with the answer captured and exactly 1 send.
a_privacy_refusal_from_the_result_read_ends_the_wait_at_oncepasses: the guard's refusal stays final. A live CDP check in a blank tab confirmed a thrown error reports its message inexceptionDetails.exception.description, which this classification reads.cargo fmt --check,cargo buildandcargo clippy --all-targets -- -D warningspass.cargo test --no-fail-fast: 923 pass.bridge_doctor_accepts_and_ignores_verbose_like_commanderandlocal_browser_cli_and_mcp_admit_foreground_and_detached_rust_workersfail here and on clean main f12ebe9.Merge danger
Door: two-way. Blast radius: browser runs
A page that stays stalled now fails after about 11 minutes rather than at the first failed read. Answers are still accepted only after Temporary Chat is verified on the poll that reads them.
Unverified
Browser expression failedwas the privacy guard is not recorded. Those that were still fail at once, by design.Browser profile transaction deadline reached). All were rerun alone and passed; a clean full run on the first commit of this change had 0 failures. CI is the check for a quiet run.This branch does not contain the tab cleanup or tab retention work, which exists only on the separate local Alcuin line.