Milab 6707 changeset coverage gate - #197
Closed
AStaroverov wants to merge 2 commits into
Closed
Conversation
`pnpm changeset --empty` already waived require-package-bump's half of the gate but not coverage, so an author who declared "no release needed" was passed by one half and failed by the other. Coverage now accepts the same declaration, waiving every missing package at once. Scoped to changesets ADDED in the branch: an empty changeset inherited from the base branch must not disable the gate for every branch cut after it. Exit 2 (tooling broken) still wins over the waiver. The rule is duplicated rather than shared — there is no bash-sharing precedent between actions here, and refactoring the working, tested require-package-bump.sh was not worth the risk. Both copies state the rule in place. Six cases added to the bats suite.
The per-package coverage check ran as its own always-green job, so a red result cost nothing and nobody had to act on it. It now runs as a second step inside `check for changesets`, under the existing require-package-path-bump toggle, and the separate diagnostic job is gone. Neither half implies the other, so both run and both must pass: require-package-bump ignores the diff and demands a bump of `package-path` on every PR, while check-coverage ignores untouched packages and demands a bump for each edited publishable one. Replacing the first with the second would have weakened the gate — in a block repo the model/ui/workflow/test siblings are private and so skipped by coverage, leaving a ui-only PR unchecked. The second step runs under `!cancelled()` so one red check reports the complete set of missing bumps instead of one per run. No new input and no new check name. With the toggle off — every consumer today — `check for changesets` behaves exactly as before; what those repos give up is the never-actionable diagnostic check.
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.
Greptile Summary
This PR turns changeset coverage from a standalone diagnostic into the second half of the opt-in blocking changeset gate and adds a branch-scoped empty-changeset waiver.
Important touched terms
check-changesetsjob when block mode is enabled.package-path, rather than a dependency-cascade bump. It remains the first half of the release gate..changeset/*.mdfile with empty YAML front matter, produced bypnpm changeset --empty, declaring that no release is needed. A file added on the PR branch now waives both halves of the gate.require-package-path-bumpworkflow option that makes release-contract failures block pull requests. It now enables both direct-bump and edited-package coverage checks.Confidence Score: 5/5
The PR appears safe to merge, with the blocking gate, waiver behavior, and failure precedence consistently implemented and tested.
The integrated coverage step retains its required checkout and installation context, runs after ordinary step failures through
!cancelled(), and only accepts empty changesets added relative to the configured base branch after tooling checks succeed.Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart TD PR[Pull request] --> Enabled{Block mode enabled?} Enabled -- No --> Native[Run ordinary changeset status] Enabled -- Yes --> Label{skip-changelog label?} Label -- Yes --> Skip[Skip changeset gate] Label -- No --> Direct[Check direct package bump] Direct --> Coverage[Check edited-package coverage] Coverage --> Missing{Coverage gap?} Missing -- No --> Pass[Gate passes] Missing -- Yes --> Empty{Branch-added empty changeset?} Empty -- Yes --> Pass Empty -- No --> Fail[Gate fails]Reviews (1): Last reviewed commit: "MILAB-6707: fold changeset coverage into..." | Re-trigger Greptile
Context used: