fix(release-decide): squash-merge silently drops release cut (prep-commit subject mismatch) #331

Closed
opened 2026-07-03 13:35:59 +02:00 by bosun · 0 comments
Owner

Finding

scripts/release-decide.sh:321-323 acknowledges: "Squash merges drop the prepare subject entirely and are NOT covered here."

Prep commit at scripts/release-prep.sh:651 uses subject chore(release): prepare vX.Y.Z. PR title at line 684 is chore(release): vX.Y.Z. Forgejo default squash-merge uses PR title → commit subject does NOT match expected pattern. Fallback API safeguards evaluate AFTER CUT_VERSION discovered from subject → they do NOT rescue squash merges.

Blocking rationale

release-please handles both squash and merge commits + RECOMMENDS squash for clean history. Users following standard Git conventions will silently lose their release cut. Buried comment ≠ sufficient for v1.0.0.

Fix

Option A (preferred): fix detection to handle squash merges — normalize PR title vs prep commit subject.
Option B (fallback): required pre-merge check rejecting rolling PR squash-merges with operator guidance.

Anchor

External correctness cold-read (anonymous ChatGPT session, uploaded to operator 2026-07-03). Full review surfaced 10 findings across 5 blocking-v1.0.0 + 2 should-fix pre-v1.0.0 + 3 post-v1.0.0 backlog. This tracker addresses one of them.

BLOCKING v1.0.0.

## Finding `scripts/release-decide.sh:321-323` acknowledges: "Squash merges drop the prepare subject entirely and are NOT covered here." Prep commit at `scripts/release-prep.sh:651` uses subject `chore(release): prepare vX.Y.Z`. PR title at line 684 is `chore(release): vX.Y.Z`. Forgejo default squash-merge uses PR title → commit subject does NOT match expected pattern. Fallback API safeguards evaluate AFTER CUT_VERSION discovered from subject → they do NOT rescue squash merges. ## Blocking rationale release-please handles both squash and merge commits + RECOMMENDS squash for clean history. Users following standard Git conventions will silently lose their release cut. Buried comment ≠ sufficient for v1.0.0. ## Fix Option A (preferred): fix detection to handle squash merges — normalize PR title vs prep commit subject. Option B (fallback): required pre-merge check rejecting rolling PR squash-merges with operator guidance. ## Anchor External correctness cold-read (anonymous ChatGPT session, uploaded to operator 2026-07-03). Full review surfaced 10 findings across 5 blocking-v1.0.0 + 2 should-fix pre-v1.0.0 + 3 post-v1.0.0 backlog. This tracker addresses one of them. BLOCKING v1.0.0.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/release-toolkit#331
No description provided.