@@ -7,6 +7,35 @@ this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
77
88## [Unreleased]
99
10+ ### Fixed — four release scripts derived the Maven coordinate and two were wrong
11+
12+ ADR-0035's decoupled cut fixes the JVM major at **`npm major + 7`**, so `1.0.0` on
13+ npm/PyPI/NuGet is `8.0.0` on Maven Central. Four scripts each worked that out for themselves:
14+ `finish-release.mjs` (correct, rationale written out); `release-verify.mjs` (correct, but only
15+ since it was fixed for asking Central for `7.0.0` — a version *below* the last release — and
16+ would have reported all nine live modules missing); **`prerelease.mjs`** (`const MAVEN_MAJOR =
17+ 7`, so a `1.0.0` base derives `7.0.0-rc.N` — the same defect, still shipped, in the script that
18+ PUBLISHES); and **`release.mjs`** (prints `java-v7.<minor>.<patch>` as the tag to create — an
19+ instruction to a human, and therefore the hardest of the four to catch, because nothing
20+ executes it and no gate reads it).
21+
22+ Two of those are one defect wearing a different hat, which is what a rule with four doors
23+ eventually produces. `scripts/maven-coordinate.mjs` is now the single derivation and all four
24+ import it; no hardcoded `7` remains outside it.
25+
26+ **The 1.0 cases are the whole reason it needs a test:** every one of them is a version this
27+ repo has never released, which is exactly how two derivations stayed wrong with every gate
28+ green. The test pins the historical `0.x` mappings unchanged, the `1.0`/`2.0` majors, an RC
29+ suffix surviving verbatim (`1.0.0-rc.5` → `8.0.0-rc.5`), and malformed input throwing rather
30+ than deriving a plausible-looking wrong coordinate. It runs in `gate_release_tag`, beside the
31+ tag gate it serves. `finish-release.test.ts` copies the script under test into a temp tree, so
32+ it now copies the module too — a REAL copy, not a stub, because a stub would let that suite
33+ pass while the shipped derivation was wrong.
34+
35+ Verified end to end rather than by inspection: `release-verify.mjs 1.0.0-rc.5
36+ --registries=maven` derives `8.0.0-rc.5` through the shared module and finds all nine modules
37+ live on Central.
38+
1039### Fixed — the 1.0 upgrade path told adopters to destroy records 1.0 keeps
1140
1241`verified-by-retirement.md` §2 says, in bold, *"Not 'change its status' — **delete the
0 commit comments