ci: fix monthly-refresh re-trigger self-stall on 6h timeout#6
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Fixes a self-stalling condition in the Monthly Pipeline Refresh workflow where the verify job incorrectly counts the current workflow run as “another run in progress,” causing timed-out runs to skip the intended re-trigger and preventing the refresh chain from converging unattended.
Changes:
- Adjust the re-trigger guard to exclude the current
github.run_idfrom the in-progress run count. - Add clarifying comments explaining why excluding the current run is necessary (timeout vs manual cancel behavior).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
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.
Problem
Cold-cache validation of the Monthly Pipeline Refresh (run #68) revealed the workflow cannot auto-continue after the 6h job timeout, so it never reaches convergence unattended.
Evidence from #68 (
28631390920):timeout-minutes; convergence needs more. On timeout,refreshis cancelled andverify(if: always()) should re-trigger a successor — but its log shows##[notice]Another run is already in progress — skipping re-trigger.Root cause
The guard counts in-progress runs but includes the current run. While the
verifyjob runs, its own run is stillin_progress, so a timed-out run always sees count >= 1 and self-skips the re-trigger. (A manual cancel flips the run tocancelledbeforeverifychecks, which is why #67 -> #68 re-triggered fine; a timeout does not.) This stalls the monthly chain — also explains the 07-01 scheduled runs that died with no successor.Fix
Exclude
${{ github.run_id }}from the in-progress count, so the guard only fires for a genuinely different concurrent run. Cascade-prevention intent preserved.One-line change to the
verifyjob's re-trigger guard.