ci: bound the remaining unbounded CI jobs on main - #33
Conversation
The fleet timeout sweep bounded the development branches; main carries an older, separate copy of these workflows that was missed. Add job-level timeout-minutes so a hung runner fails fast instead of burning the full 6-hour GitHub default. Bounds are deliberately loose relative to observed durations: a timeout that fires under normal contention turns a slow run into a phantom defect. The goal is to catch a hang, not to enforce speed. Jobs that call a reusable workflow via uses: are untouched - GitHub rejects timeout-minutes on such a job and the whole file becomes a startup_failure. Those are bounded at source in ConductionNL/.github.
Note on this repo's
|
|
Verified before merge: no new timeout fired, and the red checks are pre-existing. 1. None of the jobs this PR bounds hit its timeout. Measured on this PR's head SHA:
2. The failures are inherent to the branch tree, not to this diff. This PR is additions-only and touches only files under Where Merging with |
What
Adds job-level
timeout-minutesto the CI jobs onmainthat still had none.A fleet-wide sweep bounded these repos'
developmentbranches.maincarries anolder, separate copy of the same workflows that the sweep missed, so those jobs were
still running with GitHub's 6-hour default: a hung runner burns six hours of minutes
and blocks the queue before anyone notices.
.github/workflows/branch-policy.ymlcheck-source-branchWhy these numbers
Measured from actual fleet run history (successful + failed executions only; skipped
records excluded, since they otherwise drag every median to zero):
lint-checkvalidatecheck-source-branch(Branch Policy Check)The bounds are deliberately loose — roughly an order of magnitude above observed max.
A timeout that fires under normal contention is worse than no timeout: it converts
a slow run into a phantom defect and trains people to re-run red checks. The goal is to
catch a hang, not to enforce speed. Please do not tighten these.
What is deliberately NOT touched
Every other job in these repos'
.github/workflowsis a reusable-workflow caller(
uses: ConductionNL/.github/...). GitHub rejectstimeout-minuteson such a job andturns the whole file into a
startup_failure, so those are bounded at source inConductionNL/.github(already merged). No job in this PR is auses:caller.Verification
mainwithyaml.safe_loadrather than taken on trust.asserted to carry its exact expected value, and every untouched job asserted byte-equal.
Noneforeach target job, so it distinguishes bounded from unbounded rather than emitting a constant.
actionlinton the edited files produces exactly the findings the base files alreadyproduce (only line numbers shift) — zero new findings.
N 0in--numstat, no deletion lines) and confined to.github/workflows/.