Repository navigation
ci: raise the diff-coverage gate ceiling to 25 min — the suite outgrew 15 - #3414
qingyun-wu wants to merge 1 commit into
Conversation
…w 15 The gate's instrumented run now dies at its own declared limit, reported as 'cancelled' rather than 'timed_out': measured 15.3 / 15.3 / 15.2 min across recent kills (vs 4.7-9.2 min scattered for genuinely superseded jobs), including attempt-2 reruns on #3376 and #3384 that bought the same 15 minutes and died at the same mark. Re-running cannot clear a ceiling. Co-Authored-By: Claude Fable 5 (1M context) <noreply@anthropic.com>
Coverage Gate✅ No Python changes — nothing to gate (bar: 95% on changed lines). |
qingyun-wu
left a comment
There was a problem hiding this comment.
Exact-head review at 29fb5df031c3d548c0c69bc839f962d801a66ee6: code-ready; no blocking finding found.
The defect is present on the exact parent: the diff-coverage job is capped at 15 minutes, while repeated real runs cluster at 15.2–15.3 minutes and are canceled at that declared ceiling. Raising only timeout-minutes to 25 gives roughly ten minutes of headroom without making a hung instrumented suite unbounded. Splitting the suite can remain a later structural optimization.
Reviewer-run evidence: the full topic diff is one YAML line; Ruby YAML parsing, git diff --check, and repository hardcoded-path/root-artifact checks pass. The adjacent coverage skip-accounting suite passes 11/11 and coverage report formatting passes 4/4. This PR's own coverage job had no Python changes and therefore skipped the long suite, so it does not itself time the new ceiling; the repeated #3376/#3384 timeout measurements in the thread are the load-bearing runtime evidence.
Worst-case disruption is a truly hung coverage job consuming ten additional runner minutes and delaying feedback by the same amount. The explicit 25-minute cap bounds that cost, while the current 15-minute value is already canceling healthy runs. Formal approval is unavailable because this reviewer identity owns the PR.
Reviewed by Qingyun's Codex automation.
|
Approval signal for exact head The one-line change matches the observed failure mode: the diff-coverage workflow's declared 15-minute job ceiling was terminating repeated runs at the same boundary, so raising only that gate to 25 minutes preserves the test and coverage policy while giving the expanded suite time to complete. Concurrency/cancellation behavior is unchanged, and the separate main CI jobs retain their own limits. Reviewer verification: GitHub cannot accept a formal approval from the PR author, so this comment is the approval signal. Reviewed by Qingyun's Personal Codex. |
|
Reviewed at Premise confirmed on
|
|
Closing this on @sonichi's direction — the reasoning is worth recording, because the diagnosis in this PR was right and the remedy is being replaced rather than rejected. Your measurement was correct and I reproduced it: cancelled runs of this job cluster at the declared limit (15.2–15.3) while genuine failures scatter (12.0–13.2), so it is a ceiling and not a flake. I widened it to n=37 jobs and it held, with the sharper form being that successful runs now reach 14 min 43 s — a pass by 17 seconds. What changed is the goal. Raising
Measured across 10 recent PRs: 19 checks run, the median of all 19 job-medians is 0.1 min, and only three exceed a minute — this job at 12.9, The cause is not the amount of suite. I measured the isolation risk before proposing it: 150 files at So the replacement is to parallelise the loop, which drops this job well under any ceiling and makes Credit where it belongs: this PR found the ceiling and the |
The
diff coverage >= 95% (python)job now dies at its owntimeout-minutes: 15and GitHub reports the kill ascancelled, so it reads like a flake and invites futile re-runs.Evidence (owner's measurement on #3376, reproduced on #3384): recent cancelled runs of this job cluster at the declared limit — 15.3 / 15.3 / 15.2 min — while genuinely superseded jobs scatter (4.7–9.2 min). Attempt-2 re-runs bought the same 15 minutes and died at the same mark, so a ceiling, not a flake.
Before (at parent):
.github/workflows/coverage-gate.yml:22→timeout-minutes: 15; job killed at 15.3 min, conclusioncancelled.After (this head):
timeout-minutes: 25— one line, nothing else. 25 gives ~60% headroom over the observed ~15.3-min runtime while still bounding a hung job.Splitting the gate into shards is the structural alternative; this unblocks the currently-red PRs (#3376, #3384) without redesigning the workflow, and a split can supersede it later.
Opened per sonichi's note on #3376 ('worth someone raising the ceiling or splitting the gate; happy to open that separately if nobody has') — searched open PRs first, nobody had.
🤖 Generated with Claude Code