chore(#168): accept release/vN.N.N branches + release(...) PR titles#169
Merged
Conversation
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #168. Fixes the contradiction between the
/releaseskill's prescribed branch name + PR title and the framework's own validators. Surfaced cutting v1.2.0 — the first release under the dev/main model (AgDR-0007).Three small changes:
.claude/hooks/validate-branch-name.sh— added an early-out clause that accepts^release/v\d+\.\d+\.\d+(-rcN)?$as a valid branch name. Narrow, intentional exception for the framework's release-cut convention; release branches don't carry a ticket-id because the release itself IS the ticket..claude/project-config.defaults.json— addedreleasetopr.title_type_whitelistso a title likerelease(#160): v1.2.0passesvalidate-pr-create.sh's existing regex unchanged..claude/skills/release/SKILL.mdstep 4 — corrected the prescribed PR title torelease(#<release-ticket>): vA.B.Cso future/releaseinvocations produce a title that satisfies the validators by construction.Why now
Cutting v1.2.0 is blocked on this. The release-cut convention exists; the validators don't recognise it; the contradiction was invisible until the first release tried to land. Tiny scope (3 file edits), but blocks the v1.2.0 release.
Testing
Branch validator probes against all relevant patterns:
Full hook test suite —
for t in .claude/hooks/tests/test_*.sh; do bash "$t"; done→ 196/196 across 12 test files. No regression.PR-title regex unchanged —
validate-pr-create.shis untouched; only the type whitelist gets a new entry.Live integration — confirmed by the act of opening this PR (title
chore(#168): ...passes the same regex it always did).Glossary
dev, land onmain, and get a semver tag on the merge commit. The/releaseskill automates this; the source branch's prescribed name isrelease/vA.B.C.validate-branch-name.shfor branches that match a known framework convention without fitting the standard{type}/{TICKET-ID}-{description}shape. Used here forrelease/vN.N.Nbecause release branches are scoped by the release itself, not by a single ticket.pr.title_type_whitelistarray in.claude/project-config.{defaults,}.json. Drives thevalidate-pr-create.shregex's${PR_TYPES}capture group. Addingreleaseletsrelease(#N): vA.B.Cpass.🤖 Generated with Claude Code