Problem
After a next → master release squash-merges, the next-reset step force-resets next to the new master commit. A PR that merges into next in the seconds between the release merge and that reset is wiped: its merge commit disappears from next, it isn't in the release that just shipped, and it isn't in any later one. The PR still shows as merged, so nobody notices.
Three cases found on 2026-10-04 while backfilling changelogs:
Related but different: #278 was the next-reset lane bug that reset next on every hotfix. This one is a race in the normal next → master path. It mostly hits Dependabot and bot auto-merges, which fire as soon as their checks pass and so often land right after a release.
Fix ideas
- Before force-resetting, compare
next with the release's squash source: only reset when next's tip is the commit the release PR was built from (no extra commits). If next has moved, merge master into next (or rebase the extra commits onto master) instead of resetting.
- Or make the reset atomic against the expected tip:
git push --force-with-lease=next:<release head sha>. The push is then rejected if anything landed meanwhile, and the step falls back to a merge.
- Hold auto-merge into
next while a release merge is in progress (a lock or concurrency group shared with the reset).
- Whatever the fix, report any commits that would have been dropped (in the run summary, or as a comment on each affected PR) so a lost merge is never silent.
Also check other v4 consumers for the same loss: a merged PR into next whose merge commit isn't reachable from next or master.
Problem
After a
next → masterrelease squash-merges, the next-reset step force-resetsnextto the newmastercommit. A PR that merges intonextin the seconds between the release merge and that reset is wiped: its merge commit disappears fromnext, it isn't in the release that just shipped, and it isn't in any later one. The PR still shows as merged, so nobody notices.Three cases found on 2026-10-04 while backfilling changelogs:
nextthree minutes after the v1.1.7 release and was gone after the reset. A later PR (docs(readme): modernize for v4; drop stale v3-launch markers; fix ruleset-generator links #45) happened to re-apply the same bump.@cldmv/vitest-runner1.2.0 → 1.5.1) merged seconds after a release PR and is on neithermasternornext.Related but different: #278 was the next-reset lane bug that reset
nexton every hotfix. This one is a race in the normalnext → masterpath. It mostly hits Dependabot and bot auto-merges, which fire as soon as their checks pass and so often land right after a release.Fix ideas
nextwith the release's squash source: only reset whennext's tip is the commit the release PR was built from (no extra commits). Ifnexthas moved, mergemasterintonext(or rebase the extra commits ontomaster) instead of resetting.git push --force-with-lease=next:<release head sha>. The push is then rejected if anything landed meanwhile, and the step falls back to a merge.nextwhile a release merge is in progress (a lock or concurrency group shared with the reset).Also check other v4 consumers for the same loss: a merged PR into
nextwhose merge commit isn't reachable fromnextormaster.