Leave a shipped milestone open when it still holds open items - #4813
Open
allister-beamable wants to merge 1 commit into
Open
Leave a shipped milestone open when it still holds open items#4813allister-beamable wants to merge 1 commit into
allister-beamable wants to merge 1 commit into
Conversation
The close-on-release step closed the milestone unconditionally. Closing does not close or detach open issues, but it does drop the milestone off the default milestones view and reads its progress bar as complete, so a straggler stops being somewhere anyone looks. Check open_issues before closing. When any remain, leave the milestone open and emit a warning naming each one, so the release log says what needs triage. Still warns rather than fails in every path, including a failed API call, so it cannot block or redden a release. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
allister-beamable
force-pushed
the
milestone-straggler-guard
branch
from
August 27, 2026 18:29
4e52762 to
3aafd7b
Compare
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
Follow-up to #4701. The
Close shipped milestonestep inrelease-unity.ymlnow checks the milestone'sopen_issuesbefore closing it. If anything is still open, the milestone is left open and each straggler is named in the log.Why
Closing a milestone does not close or detach its open issues - they stay open, stay attached, and stay findable with
is:open milestone:"Unity X.Y.Z". What closing costs is visibility: the milestone drops off the default milestones view and its progress bar reads complete, so an overlooked issue keeps being overlooked.A milestone that still holds open items also has not, in fact, shipped everything it claims. Leaving it open is the honest state and puts the triage where it belongs.
Worth noting the automation is not the problem here. Four closed milestones in this repo carry open issues -
CLI 2.0.1,CLI 4.2.0,CLI 5.1.0,Unity 1.19.20- and all four predate #4701 and were closed by hand. Every milestone closed since #4701 merged has zero stragglers. This change closes the remaining gap: that it closed silently.Behavior
Deliberately not a failure. #4701 asked whether a missing milestone should fail as a hygiene gate; the answer here is no. A release is the moment least tolerant of a spurious delay, and a red job two steps removed from the artifact would obstruct exactly then. Every path exits 0, including a failed API lookup.
Testing
The step's shell was extracted and exercised against a stubbed
ghacross four scenarios - no matching milestone, clean milestone, milestone with two open issues, and a failing API call. All four produce the intended output and exit 0. The workflow file parses as YAML.Sample output for the straggler case:
Note
Leaves the
inputs.dryRun == falseguard in place rather than folding in the pendingdryRunremoval, to keep this diff to one concern.🤖 Generated with Claude Code