Skip to content

docs: switch merge policy to squash-only for reliable release-plz - #480

Merged
Destynova2 merged 1 commit into
mainfrom
docs/squash-merge-policy
Jul 26, 2026
Merged

docs: switch merge policy to squash-only for reliable release-plz#480
Destynova2 merged 1 commit into
mainfrom
docs/squash-merge-policy

Conversation

@Destynova2

Copy link
Copy Markdown
Contributor

The CI/CD bug this fixes

feat(routing) (#478) merged cleanly but never produced a release. release-plz
kept reporting grob: no commit matches the release_commits regex and there was
no way to cut v0.36.84.

Root cause

Every PR was merged with a merge commit (gh pr merge --merge), so the
feature commit sits on the merge's second parent:

572f539 Merge #478      parents: 95db3f6 (release v0.36.83)  de4b690 (feat routing)

When release-plz cut v0.36.83 between the routing branch's creation and its
merge, de4b690 ended up beside the release commit rather than after it. Its
version walk over v0.36.83..HEAD doesn't traverse into that second parent —
git log --first-parent v0.36.83..main is empty — so the feat commit is
invisible to the bump calc. It works for most PRs only because they're released
immediately after merging, before the next merge buries them.

Fix

Squash-merge only. Repo settings now:

  • allow_merge_commit = false
  • squash_merge_commit_title = PR_TITLE

Every PR becomes one conventional commit on a linear main, which release-plz
reads reliably — the second-parent hiding place no longer exists. Applied to the
repo already; this PR aligns CLAUDE.md (--auto --merge--auto --squash,
plus a note on why the PR title must be a conventional commit) and documents the
manual gh workflow run release-plz.yml trigger added in #479.

For the currently-stranded routing fix

It's on main and ships with the next release cut for any releasable commit
(now reliably, thanks to squash). Meanwhile it has a trivial workaround — name
the config entry gpt-5-5 instead of gpt-5.5.

Note

This PR is the first squash-only merge — its single commit validates the new
policy end to end.

🤖 Generated with Claude Code

Merge commits put a PR's feature commit on the merge's second parent. When
release-plz cuts a release between two such merges, a feature branched before
that release and merged after lands beside the release commit, and release-plz's
version walk over `v<prev>..HEAD` does not traverse into it — `git log
--first-parent` of that range is empty. That stranded #478's `feat(routing)`:
release-plz reported "no commit matches the release_commits regex" and never cut
v0.36.84, with no way to re-run short of a new push to `main`.

Repo settings now disable merge commits and squash with the PR title as the
commit subject, so every PR is one conventional commit on a linear `main` that
release-plz reads reliably. Also documents the new manual `workflow_dispatch`
trigger (#479).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Destynova2
Destynova2 enabled auto-merge (squash) July 26, 2026 08:38
@Destynova2
Destynova2 merged commit a348112 into main Jul 26, 2026
27 checks passed
@Destynova2
Destynova2 deleted the docs/squash-merge-policy branch July 26, 2026 08:40
Destynova2 added a commit that referenced this pull request Jul 27, 2026
## 🤖 New release

* `grob`: 0.36.83 -> 0.36.84

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

##
[0.36.84](v0.36.83...v0.36.84)
- 2026-07-27

### Fixed

- *(cli)* make grob stop recognise its daemon on macOS
([#481](#481))

### Other

- switch merge policy to squash-only for reliable release-plz
([#480](#480))
- *(release-plz)* allow manual workflow_dispatch
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant