0002 — The release is prepared in the story's pull request; main only takes a tag
Status: superseded by 0006 (the story-PR process is removed) Date: 2026-10-04 Story: stories/006-release-prepared-in-the-story-pull-request.md
Context
ADR 0001 settled that a release on a protected main is two tp release
runs with the forge holding the state between them. Story 005 built that
around a release branch: the rolled CHANGELOG goes on release/vX.Y.Z
and through its own pull request. In use (gobank v0.5.0, v0.6.0) every
story therefore cost two pull requests and two reviews, the second of
which only ever contained the changelog roll.
Options
| Option | Complexity | Testability | Domain clarity | Operational risk |
|---|---|---|---|---|
| A. Keep the release PR (005 as is) | none | as today | a release is a visible PR of its own | two merges per story; the second review is a formality |
B. Prepare the release on the story branch; main takes only a tag |
prepare run and tag run added beside 005's; base branch detected from the remote | the same bare-repo and fake-forge harness covers the new rows | the story PR is the whole change, version heading included; a release is a tag on what was reviewed | the version is chosen before review, so a story that waits while another ships needs its heading edited |
| C. Tag from the story branch before merge, rely on fast-forward | smallest | poor: depends on the forge's merge style | a tag that is not on main is a lie |
a merge commit or squash strands the tag |
Decision
B. Off the base branch, tp release prepares the release in the branch
and opens or updates its pull request; on the base branch it tags a
merged, untagged heading. 005's release-branch run stays as the fallback
when nothing was prepared. Two runs remain (ADR 0001 stands): one before
the review, one after the merge, and the second needs nothing local.
Consequences
Easier: one pull request and one review per story; the tag run prompts for nothing.
Harder: the version is fixed when the branch is prepared; if two stories are prepared in parallel the second to merge must edit its heading before its tag run, and the tool reports the mismatch rather than guessing.