Repository navigation
ci: bound the test job with timeout-minutes - #455
Merged
Merged
Conversation
The `test` job inherited GitHub's 360-minute default, so a hung leg (release run 30741657854: FlashRank's timeout-less `requests.get`, CHANGELOG 4.17.1) could hold the whole workflow for hours. Measured 2026-09-03 over the last 12 green `main` runs: Test (Python 3.12) took 15-22 min, the other three legs 7-10 min. 45 minutes is about twice the measured maximum. Co-Authored-By: Claude Fable 5.1 <[email protected]>
The in-file source comment read "7-10 min" for the three legs without the extended checks; the measured maximum over the same 12 green main runs is 10 min 59 s (Python 3.11, run 33678125783). Name it, and the slowest-leg run id, so the constant's provenance is re-derivable from the comment. Co-Authored-By: Claude Fable 5.1 <[email protected]>
The previous comment claimed the 3.12 leg was the slowest at 22 min 32 s and the other three legs took 7-11 min. Re-measuring every Test (Python x.y) job of the last 12 green main runs (48 legs, completed_at minus started_at) shows run 33688337476 with Python 3.13 at 27 min 17 s and Python 3.10 at 15 min 06 s, and the 3.12 maximum inside that window at 19 min 36 s. 45 min was 1.65x the true maximum, not "about twice"; 60 min restores the stated rule (60 / 27.3 = 2.2). Co-Authored-By: Claude Fable 5.1 <[email protected]>
Owner
Author
|
ZETETIC-REVIEW: APPROVE Fresh-context review of head e159793 (2026-09-03). Independently re-derived via |
Merged
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
Adds
timeout-minutes: 60to thetestjob of.github/workflows/ci.yml, which previously inherited GitHub's 360-minute default.Why
A hung leg holds the whole workflow for hours. The precedent is release run 30741657854 (v4.17.0): FlashRank's timeout-less
requests.getstalled insock.connectuntil pytest-timeout killed the suite, and nothing bounded the job itself (CHANGELOG 4.17.1). Since issue #392 the release path is gated through this very job (ci-green->test->release-gate), so bounding it bounds the release path too.Source of the constant
Measured 2026-09-03 over the last 12 green
mainruns of this workflow (gh run list --workflow ci.yml --branch main --status success --limit 12, runs 31417063954 to 33688337476), 48Test (Python x.y)jobs, duration =completed_at - started_atfromgh api repos/cdeust/Cortex/actions/runs/<id>/jobs:The slowest green leg in the window is therefore Python 3.13 at 27 min 17 s (run 33688337476, c5ec018), not the 3.12 leg. The constant follows the same rule as before, about twice the measured maximum so a slow runner still passes while a stalled job is cut within one ordinary run's wall time: 60 / 27.3 = 2.2. The earlier 45 would have been 1.65x a single passing observation, too thin a margin to keep the stated rule honest.
Not in this PR
The sibling jobs of ci.yml (
test-sqlite,test-windows,lint,craftsmanship,typecheck,build, the Docker jobs) still inherit the 360-minute default. Pre-existing, unworsened by this diff, left for a separate change.release.ymlhas no test job of its own since #392, so there is nothing to bound there.Review
🤖 Generated with Claude Code