ci: add per-job timeout-minutes to bound runner hangs - #96
Merged
Conversation
Run #130's `leaks (macOS)` job passed its actual leak check in ~10s, then hung ~45 minutes on the post-job checkout cleanup before the hosted runner was reclaimed and the job was marked failed — a known macOS-runner infra flake (the re-run passed cleanly). With no `timeout-minutes`, jobs inherit the 6-hour default, so a hung runner ties up the job for a very long time. Add a generous per-job timeout (10-20 min; real runtimes are seconds to ~1 min) so a stuck runner fails fast instead of hanging. No effect on healthy runs. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
Why
Run #130's
leaks (macOS)job showed as failing ~45 minutes after starting. Root cause: the leak check itself passed (~10s), but the GitHub-hosted macOS runner then hung on the auto-injected Post Run actions/checkout cleanup step and was eventually reclaimed (logs returnedBlobNotFound). A re-run passed cleanly — it's a transient runner-infra flake, not a code or memory-leak issue.leaksis a non-required check, so nothing was ever blocked.With no
timeout-minutes, every job inherits GitHub's 6-hour default, so a hung runner can sit for a very long time.What
Add a per-job
timeout-minutesto all 7 CI jobs (10–20 min, vs real runtimes of seconds to ~1 min). A stuck runner now fails fast instead of hanging. No effect on healthy runs.YAML validated; the affected run #130 is already green after re-run.
🤖 Generated with Claude Code