Poll jobs in short intervals: long blocks are unreliable - #185
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Found by running the real thing: a headless Claude Code session against the deployed server, scoring 1p on the UK basic rate through start_job. It got the right answer -- costings 6.463..7.378, cumulative GDP -10.713bn, matching a local run to the pound -- but needed NINE polls, and reported that "several polls hit transport timeouts and one Modal InternalFailure; wait_seconds: 30 polled reliably where 60-120 did not". So staying under the 150s ceiling is necessary but not sufficient. The flakiness tracks how long the connection is held open, not how close it gets to the ceiling -- the same intermittent `InternalFailure: Server has lost track of input` that shows up on long direct calls. Default wait drops 60 -> 30 and the cap 120 -> 60, so a caller asking for a long block is capped well below the ceiling rather than at it. Both descriptions now say a poll that ERRORS is not a job that failed: the job runs on regardless of the connection watching it, so the right response is to call again with the same job_id. An agent that reads a transport error as a failed score would throw away a running job and start another. 293 integration tests pass (16 in test_jobs). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Lcj9DDqam9KmVCfhEdnJcJ
Repairs main. The vintage refresh (#177) generated twelve release-note pages under notes/releases/2026-08-26-* without running site_nav.py, so the Site provenance job has been failing on main since that merge with "FAIL stale navigation" on each new page. My miss: I checked #177 against the site test suite, site_contract.py and its own no-edited-vintages invariant, all of which passed, and merged it while only the Vercel checks had reported. site_nav.py is a separate gate and I did not run it. Mechanical regeneration -- `python3 site_nav.py --write`, now clean on 110 pages.
vahid-ahmadi
force-pushed
the
fix/job-poll-interval
branch
from
August 26, 2026 11:42
eba5bf3 to
765ccb0
Compare
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.
Found by running the real thing: a headless Claude Code session against the deployed server, scoring 1p on the UK basic rate through
start_job.It got the right answer — costings 6.463…7.378, cumulative GDP −£10.713bn, matching a local run to the pound — but needed nine polls, and reported:
So staying under the 150s ceiling is necessary but not sufficient. The flakiness tracks how long the connection is held open, not how close it gets to the ceiling — it's the same intermittent
InternalFailure: Server has lost track of inputthat shows up on long direct calls.Changes
job_id. An agent that reads a transport error as a failed score would throw away a running job and start another.Testing
293 integration tests pass (16 in
test_jobs.py). Site contract consistent.🤖 Generated with Claude Code
https://claude.ai/code/session_01Lcj9DDqam9KmVCfhEdnJcJ