fix: add timeout-minutes to remaining workflows - #166
Merged
Conversation
Jobs in update-skills, translate-incremental, stale, and codeql had no timeout-minutes, so a hang could occupy a runner until GitHub's six-hour default. Short jobs use 15. CodeQL uses 30. prepare uses 70 so the default 3600s debounce can finish. GitHub rejects timeout-minutes on reusable-call jobs, so incremental shell-check and finalize are bounded in the callee (15 and 60). Signed-off-by: Sebastien Tardif <SebTardif@ncf.ca>
Contributor
|
Verified head
The 70-minute preparation budget accommodates the existing one-hour debounce. Reusable workflow limits are on the callee jobs, avoiding GitHub's prohibition on job timeouts at reusable call sites. Branch autoreview against All exact-head CI workflows succeeded after approval:
Ready for the orchestrator's squash merge. The shared changelog update will be in #167. |
steipete
pushed a commit
that referenced
this pull request
Sep 5, 2026
Apply configurable request deadlines to hostname cutover API calls and reject malformed or overflowing budgets before requests begin. Document both request-timeout controls and consolidate the prepared dependency and publishing changelog entries. Land after PRs #132, #152, #161, #163, #164, #165, and #166. Co-authored-by: Sebastien Tardif <SebTardif@ncf.ca>
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 Problem This Solves
Fixes an issue where four docs workflows could occupy a GitHub-hosted runner until the six-hour default if a step hung.
update-skills,Translate Incremental,Stale, andCodeQLhad notimeout-minutes. Sibling workflows (r2-pages,pages,docs-code-ci,llms-full,translate-locale) already set one.Why This Change Was Made
Each local job in those four files now sets
timeout-minutes. Short jobs use 15. CodeQL uses 30, matching Docs Code CI. Incrementalprepareuses 70 so the default 3600-second debounce can finish. GitHub does not allowtimeout-minuteson a job that onlyuses:a reusable workflow, so incrementalvalidate-workflow-shellandfinalizeare bounded in the callee files (15and60). The locale worker already had 360.User Impact
A hung skills update, incremental debounce, stale scan, or CodeQL run now fails on a job budget instead of holding a runner for up to six hours. Healthy runs are unchanged. Incremental translation still waits up to one hour for main to settle.
Evidence
Live
nodereading the four workflow files (plus the two incremental callees). The reader walksjobs:and reports each job'stimeout-minutes. It was first run againstorigin/maincopies written to a temp dir (production files left in place), then against the patched files.Before, every job in the four files reports
timeout: null:After the patch, local jobs report a positive timeout. Reusable-call jobs stay unset on the caller (GitHub restriction). Their callees now report 15 and 60:
rg -L timeout-minutes .github/workflows/now lists onlydocs-live-smoke.yml(sibling #164). The four files from this finding are no longer in that list.r2-upload.mjsanddocs-live-smoke.ymlare not in this diff.Related: #164, #69, #70, #61.
Real behavior proof
uses:a reusable workflow stay unset.Summary
Audit finding F004. Sibling hang bounds are #161, #163, #164, and #165.