Skip to content

Commit 4e98e72

Browse files
donislawdevclaude
andcommitted
ci: give the race job a ceiling that matches the work it now does
Raises the race detector's limits from 25m under a 30m job to 40m under 45m, which is the owner's call and the other half of the change beside it. Not because a run went red. Because the margin had already gone and the reds were the symptom. Measured on the runner across four consecutive runs: 21m35s on main before JPEG XL, a timeout on the JPEG XL branch, 20m15s on main after it merged, and a timeout on the dependency bump. Two out of four, and no data race reported in any of them - a limit that decides on how busy the runner happens to be is telling you about the runner, not about the code. 21m35s against 25m was never a margin, and that predates JPEG XL. What this package holds today is twenty four formats, two of them running a borrowed encoder, twenty five screens and two binaries, and the 25m was chosen when it held less. The gap between the two numbers is kept on purpose. Go's limit stays below the job's so a slow run fails as a test, with the list of what was still running, rather than as a killed job with no output - which is the reason the number was stated here in the first place, on 2026-08-25. The cheap half of the answer is the commit before this one: the JPEG XL ladder sweep stopped spending the budget on arithmetic that finds no races, 102s to 54s under -race. This half stops the work being shaved to fit a ceiling nobody had remeasured. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent 3f84b42 commit 4e98e72

1 file changed

Lines changed: 24 additions & 3 deletions

File tree

‎.github/workflows/ci.yml‎

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -625,7 +625,9 @@ jobs:
625625
github.event_name == 'workflow_dispatch' ||
626626
needs.touched.outputs.concurrency == 'true'
627627
runs-on: ubuntu-latest
628-
timeout-minutes: 30
628+
# Raised from 30 on 2026-08-31, with the Go timeout below, and the reason is
629+
# measured rather than "it went red". See that step for the numbers.
630+
timeout-minutes: 45
629631
env:
630632
# The one thing in this project that needs a C toolchain. Linux runners
631633
# ship one, so this job carries the cost and the matrix above stays on
@@ -678,8 +680,27 @@ jobs:
678680
#
679681
# Race instrumentation costs five to twenty times the wall clock, and
680682
# this package renders twenty five screens and builds two binaries. The
681-
# job's own thirty minutes is the ceiling that means something.
682-
run: go test -tags "$(cat .github/build-tags)" ./... -count=1 -race -timeout 25m
683+
# job's own ceiling is the one that means something, and this number
684+
# stays below it so a slow run fails as a test rather than as a killed
685+
# job with no output.
686+
#
687+
# Both were raised on 2026-08-31, from 25m under a 30m job. Not because
688+
# a run went red, but because the margin had already gone and the reds
689+
# were the symptom. Measured on the runner across four consecutive runs:
690+
# 21m35s on main before JPEG XL, a timeout on the JPEG XL branch, 20m15s
691+
# on main after it merged, and a timeout on the dependency bump. Two out
692+
# of four, with no data race reported in any of them - a limit that
693+
# decides on how busy the runner is tells you nothing about the code.
694+
#
695+
# 21m35s against 25m was never a margin, and that predates JPEG XL. What
696+
# this package holds now is twenty four formats, two of them running a
697+
# borrowed encoder, twenty five screens and two binaries, and the 25m
698+
# was chosen when it held less. The cheap half of the answer is in
699+
# internal/guard/jxlladder_test.go, which stopped spending the budget on
700+
# arithmetic that finds no races - 102s to 54s under -race. This is the
701+
# other half: the ceiling now matches the work rather than the work
702+
# being shaved to fit a ceiling nobody remeasured.
703+
run: go test -tags "$(cat .github/build-tags)" ./... -count=1 -race -timeout 40m
683704

684705
coverage:
685706
name: coverage gate

0 commit comments

Comments
 (0)