Honor per-task check_timeout_s: the check kill timer was hard-coded at 60s - #91
Open
brandoncordoba wants to merge 2 commits into
Open
Honor per-task check_timeout_s: the check kill timer was hard-coded at 60s#91brandoncordoba wants to merge 2 commits into
brandoncordoba wants to merge 2 commits into
Conversation
…t 60s The manifest field was silently dropped in TaskSpec parsing, so checks wrapping cold builds (ipad-hover-sweep 2026-08-02, styled-by-you-picker 2026-07-18) were killed at the 60s default and honest work landed as TIMEOUT. Parse and validate the field (positive, ceiling 3600), plumb it into Verifier._run_check, print it in dry-run, and lint-nudge checks that run build/test tools directly at the default. Wrapper-check kits (fix-swarm, repo-feature, test-hardening, doc-swarm) now set it in their skeletons since lint cannot see inside wrapper scripts. Regression tests: parsing/validation, the verifier honoring the task's value, an end-to-end run where the manifest value governs the kill timer, and a slow check that finishes because the raised limit — not the shrunk default — governs. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Hit this same wall independently, a check wrapping a real test suite got killed Been running an equivalent fix locally since and it's held up. Nothing to add to |
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
The manifest field
check_timeout_swas silently dropped inTaskSpecparsing, so every check ran against the hard-coded 60sCHECK_TIMEOUT_Sregardless of what the manifest said. Any check that wraps a real build or test suite (afix-swarm.pycheck running a coldxcodebuild buildtakes 4–8 minutes) was killed at ~60s and the task verdicted TIMEOUT even when the worker's output was correct.Hit twice in real runs:
styled-by-you-picker(2026-07-18) andipad-hover-sweep(2026-08-02), where all 3 lanes produced correct patches and all 3 falsely verdicted TIMEOUT.How
TaskSpec.from_objparses and validatescheck_timeout_s(must be positive, ceiling 3600 — a check is verification, not the work).Verifier._run_check's kill timer; the timeout message reports the actual limit used.run --dry-runprints it per task.xcodebuild,cargo test,swift test,pytest, …) at the default timeout gets a nudge to raise it. Matching is command-position only, so tool names inside echo strings or wrapper-script arguments don't fire.check_timeout_sin their skeletons, since lint cannot see inside wrappers.Verification
All claims are backed by executed tests (258 pass on macOS, Python 3.13):
Verifier.verifyhonoring the task's value (asleep 5check killed at 1s)runwhere the manifest'scheck_timeout_sgoverns the kill timer and the state file recordscheck_timed_outfrom_objwhose check outlives a shrunk default but passes because the manifest's raised limit — not the default — governsxcodebuild/swift testat the default is flagged; the same command hidden inside a wrapper-script argument is not; a raised value clears the findingRebased on current main (includes #84 — an earlier draft of this carried its own StateWriter race fix, dropped in favor of yours).
🤖 Generated with Claude Code