jamesfredley opened a new pull request, #15741: URL: https://github.com/apache/grails-core/pull/15741
## Summary Follow-up fix to #15623. That PR's release-drafter overhaul added a workflow step computing `filter-by-range: ~MAJOR.MINOR.0` and passing it to release-drafter as "defense-in-depth" cross-branch isolation. That filter is **redundant and actively harmful**, and is the cause of the flood of fake `v0.1.0` draft releases (`untagged-*`) on the [releases page](https://github.com/apache/grails-core/releases). ## Root cause On any release branch with **no published release inside its own `MAJOR.MINOR` range** (today `7.2.x`, which has no tag yet; and every newly-cut branch in the future), release-drafter finds no "last release" and falls back to its default version `0.1.0`. `0.1.0` does **not** satisfy the semver range `~7.2.0` (`>=7.2.0 <7.3.0`). So on the *next* run the `filter-by-range` filter **hides the very `v0.1.0` draft the action just created**, logs `No draft release found`, and creates **another** `v0.1.0` draft. This repeats on every push, flooding the releases page. Verified live in the `7.2.x` drafter run [27720548965](https://github.com/apache/grails-core/actions/runs/27720548965): ``` Branch 7.2.x -> filter-by-range ~7.2.0 Found 343 releases No draft release found ##[warning]No published release found - last release: none RESOLVED_VERSION: 0.1.0 Creating new release... <- new v0.1.0 draft every single run ``` ## Fix Remove the `filter-by-range` mechanism entirely - the "Derive semver range from branch" step and the `filter-by-range` input. Per-branch isolation is **already fully provided** by `filter-by-commitish: true` in `.github/release-drafter.yml` (a release's `target_commitish` must equal the branch; release-drafter strips `refs/heads/` before comparing, so the legacy `refs/heads/7.0.x` releases still match correctly). With `filter-by-range` gone: - `7.2.x` finds and **updates its single existing draft** instead of duplicating it. - `7.0.x` / `7.1.x` / `8.0.x` keep resolving the next version correctly from their in-branch releases (`v7.0.11` -> `v7.0.12`, `v7.1.1` -> `v7.1.2`, `v8.0.0-M1` -> `v8.0.0`). A do-not-reintroduce comment is added so the trap is not re-added later. ## Cleanup (already done out-of-band) The 68 accumulated fake `v0.1.0` draft releases have been deleted via the API. The three legitimate drafts (`v8.0.0`, `v7.1.2`, `v7.0.12`) were preserved. ## Cascade Lands on `7.0.x` and should be merged forward into `7.1.x` / `7.2.x` / `8.0.x` in the usual cascade, same as #15623. Assisted-by: claude-code:claude-4.8-opus -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
