> **WARNING:** This document describes only the change applied in this PR.
> It may already be outdated once the next PR is merged.
> Historic PR-documentation is not maintained along with new PRs — treat it as a snapshot, not as current documentation.
## The Problem
The version was bumped per *deployment*, not per pull request — `build.gradle.kts` said so in as many words: "bump at least the patch version for every deployment — and only then, not per commit".
It does not hold up.
PR#50 and PR#51 were both merged and both deployed while calling themselves v1.8.0's predecessor, v1.7.0.
The running instance reported a version that named neither of them, so the footer, `--version` and the release notes agreed with each other and with nothing else.
A version that does not distinguish two deployments is not identifying what is running, which was the whole reason for having one.
The rule also had no home: it was stated in four places — `build.gradle.kts`, `AGENTS.md`, `docs/prs/README.md` and the pr-doc skill — and a new one would have had to be changed in all four to take effect.
## Non-Goals
- No change to the release-notes format, the page, or `ReleaseVersionConsistencyTest`, which already enforces that the version and the top entry agree.
- No retroactive versions for PR#50 and PR#51: they are released together as v1.8.0 rather than invented as 1.7.1 and 1.7.2 after the fact, because neither was ever deployed under a version of its own.
- No automation of the bump. Choosing patch or minor is a judgement about what changed.
## The Scenarios
### Feature: a version per pull request
#### Background
- `version` in `build.gradle.kts` is what `BuildProperties` feeds to the UI footer and `--version`.
- The top `
vX.Y.Z
` of `src/main/resources/templates/releases.html` is the release-notes entry for it.
- `ReleaseVersionConsistencyTest` fails the build when the two disagree.
#### Scenario#52.01: Every PR brings its own version
So that a running instance names the change it contains.
- **Given** a pull request that changes behaviour or fixes a defect
- **When** it is prepared for merging
- **Then** it bumps `version` — patch for a fix, minor for new behaviour
- **and** adds its own entry at the top of the release notes
- **and** the build fails if the two disagree
##### Verified by
- [ReleaseVersionConsistencyTest "the top release-notes entry names the current project version"](../../src/test/kotlin/de/hoennig/werkator/ReleaseVersionConsistencyTest.kt)
#### Scenario#52.02: The rule reads the same wherever it is stated
So that the next change does not follow a copy that was left behind.
- **Given** the four places that state when the version is bumped
- **When** any of them is read
- **Then** all four say per pull request, patch for a fix and minor for new behaviour
## The Solution
`version` goes to **1.8.0** — minor, because the highest-significance change it now carries is new behaviour: werkdock's `import` verb and the stale-binary rebuild of PR#50.
The v1.8.0 release-notes entry covers PR#50 and PR#51 together and says, in its last bullet, that this is the last release assembled that way.
The comment above `version` is rewritten to the new rule and names the failure that produced it, so the reason survives next to the line it governs.
`AGENTS.md`, `docs/prs/README.md` and the pr-doc skill get the same sentence.
The pure-release exception stays: a PR of nothing but a bump and its notes still needs no PR-doc — it is now the rare case rather than the normal one.
## Open Questions
- Nothing enforces that a PR bumped anything; only the *consistency* of version and notes is enforced.
A check comparing the version against `origin/main` would be possible and is deliberately not added here — it would fail every branch that is merely out of date.
## Additional Changes
- None.
## Prerequisite PRs
- PR#50 and PR#51 — this PR releases them.