chore(#116): adopt release-cut branch model (dev/main + tags) — framework only#126
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
Formalises the release-cut branch model (sometimes called gitflow-lite) that the framework repo has been operating under informally since the start of this hooks-wave.
devis daily-work;mainonly receives release PRs fromdev; each release-PR merge tags a semver. Adopters'/updateskill pullsupstream/main, which is now strictly release-only — no more WIP commits leaking to forks.Framework-only. This pattern is for
me2resh/apexyarditself. Managed projects under apexyard governance (entries inapexyard.projects.yaml) stay trunk-based — they have no downstream consumers and don't need the ceremony. Both CLAUDE.md anddocs/multi-project.mdcall this out explicitly so the pattern doesn't cargo-cult into project templates.Added:
/releaseskill at.claude/skills/release/SKILL.md— diffs dev against main, proposes a semver bump from conventional-commit types, generates a CHANGELOG draft, opens the release PR, tags + pushes after mergedocs/release-process.md— prose runbook (the skill is the automation; the doc is the manual fallback + conceptual reference).git.protected_branchesinproject-config.defaults.json(default[main, master, dev, develop])Modified:
block-main-push.sh— extended to block direct pushes/commits to ALL protected branches, not just main/master. Reads the list from project config via the shared reader ([Chore] Make ticket-prefix whitelist + schema project-configurable (not hardcoded) #109). Forks that legitimately usedevas a working trunk under their own convention can override.CLAUDE.md— new "Branch model — framework only" subsection under Git Conventions./releaseadded to the skills table.docs/multi-project.md— note in the "Upgrades" section thatupstream/mainis release-only as of v1.2.0 + reminder that the split applies to apexyard itself, not to managed projects.Testing
No automated tests (the
/releaseskill is a markdown spec;block-main-push.shextension is verified by tracing the regex against the protected list).Manual smoke:
The first real
/releaseinvocation will be the v1.2.0 cut — at that point we'll dogfood the skill end-to-end and any rough edges show up there.Scope — what this does NOT do
Closes #Nfor the batch and triggers auto-close en masse when it merges tomain. Manual close-with-merge-trace in the meantime (see closing pattern on [Chore] Make ticket-prefix whitelist + schema project-configurable (not hardcoded) #109/[Chore] block-private-refs-in-public-repos.sh — hook to scrub registry names from upstream tickets #110/[Chore] warn-stale-review-markers.sh — surface invalidated reviews at push-time, not merge-time #115/[Chore] pre-push-gate.sh — upgrade from advisory reminder to blocking check-runner #111/[Chore] validate-issue-structure.sh — config-driven PreToolUse hook for gh issue create #107/[Chore] require-agdr-for-arch-pr.sh — block gh pr create when diff touches architecture without AgDR link #112/[Chore] Require Testing section in PR body (extend validate-pr-create.sh) #113/[Chore] Enforce single Closes-keyword per PR body (one ticket per PR) #114). A small post-merge automation could be a follow-up.release/*orhotfix/*branches. Hotfixes are just patches cut quickly. If multi-version maintenance becomes a real need, revisit AgDR-0007.pull_requesttriggers fire regardless of base branch, so dev-targeting PRs already get the full check matrix.Branch protection (manual GitHub setting)
For maintainers of
me2resh/apexyard, configure GitHub branch protection onmainperdocs/release-process.md § Branch protection:This is documentation-only here — the actual GitHub setting is a one-time admin action.
Glossary
me2resh/apexyarditself, NOT to managed projects under governance.block-main-push.sh. Default list is configurable.dev → mainPR that, when merged, becomes the source for a new semver tag. Body uses the<!-- multi-close: approved -->skip marker because it legitimately closes many tickets.Closes #116