Skip to content

fix: lower GATE_TIMEOUT_MS to a measured 8 s - #10

Merged
ribdsp merged 1 commit into
mainfrom
fix/gate-timeout-measured
Aug 29, 2026
Merged

ribdsp merged 1 commit into
mainfrom
fix/gate-timeout-measured

Conversation

@ribdsp

@ribdsp ribdsp commented Aug 29, 2026

Copy link
Copy Markdown
Owner

What

GATE_TIMEOUT_MS was 25 s. blocking.ts said 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_hypotheses call 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 --noEmit clean, 293/293 tests pass. ask-human-visual-prompt.tsx renders the value from the constant, so its copy follows automatically. docs/tools.md § Blocking tools updated.

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.
@vercel

vercel Bot commented Aug 29, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
traces Ready Ready Preview Aug 29, 2026 10:09am

@ribdsp
ribdsp merged commit 54a842e into main Aug 29, 2026
4 of 5 checks passed
@ribdsp
ribdsp deleted the fix/gate-timeout-measured branch August 29, 2026 10:12

This branch was successfully deployed

1 active deployment
Preview — 168c904c Deployed Aug 29, 2026 by vercel[bot]
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