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]

Reply via email to