fix: lower GATE_TIMEOUT_MS to a measured 8 s - #10
Merged
Merged
Conversation
A 25 s gate lost a propose_hypotheses call outright when run from a real agent: the ChatGPT in-app browser severed the control connection at roughly 20 s, so the host gave up before the gate could hand back its ticket. The card rendered and the human's decision was recorded, but the agent received neither -- the one outcome the blocking contract exists to prevent. 25 s was never a measurement; blocking.ts said so at the definition. This replaces it with one, at 8 s, and records where the number came from.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully 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.
What
GATE_TIMEOUT_MSwas 25 s.blocking.tssaid at the definition that the number was a guess rather than a measurement, and asked whoever measured a real host to replace it. This replaces it with 8 s and records where that came from.Why
Running all sixteen tools from a real agent in the ChatGPT in-app browser lost the first
propose_hypothesescall outright. The host severed the agent's control connection at roughly 20 s — below the 25 s gate — so it gave up before the gate returned its ticket.The page behaved correctly throughout: the hypothesis card rendered and the human's decision was recorded. The agent received neither. That is precisely the outcome the three-way blocking contract (
answered/pending+ ticket / readable error) exists to prevent, and a gate longer than the host's tolerance defeats it.A second run, with a decision available quickly, returned normally — which confirms the ceiling is the host's, not the gate's.
Why 8 s
Far enough under a ~20 s ceiling to survive a slower host, and it costs nothing. A human already looking at the screen answers inside 8 s; one who isn't was always going to arrive by ticket, which is the designed path and reads to a model as a normal polling loop.
Verification
npx tsc --noEmitclean, 293/293 tests pass.ask-human-visual-prompt.tsxrenders the value from the constant, so its copy follows automatically.docs/tools.md§ Blocking tools updated.