Skip to content

Write down how a release is cut, and what keeps going wrong - #149

Merged
ctgnz merged 1 commit into
masterfrom
docs/144-releasing
Sep 30, 2026
Merged

ctgnz merged 1 commit into
masterfrom
docs/144-releasing

Conversation

@ctgnz

@ctgnz ctgnz commented Sep 30, 2026

Copy link
Copy Markdown
Owner

The retro's written output. Part of #144, and the companion to #148.

docs/releasing.md

2.0.0 took three tag cycles and two re-signed tags, and the runbook that eventually worked existed nowhere in the repo. This carries the sequence and, more usefully, the failures.

One cause explains three of the four: -Prelease runs only at tag time, so it drifts, and so does everything that only runs inside it.

failure why nothing caught it
gpg: no default secret key the workflow was copied from foxglove by #103; the four secrets were never created here, and no tag had run since
battleorder missing from the packaging matrix; two of four jars attached both conditional on work that had landed months earlier
six dangling {@link}s to a renamed method javadoc runs nowhere but -Prelease

And the fact that turned a workflow mistake into a re-signed tag: a re-run executes the workflow as it exists at the tagged commit, so you cannot fix it on master and re-run.

The doc also records the release-profile rehearsal that actually proves something — -Pstandard,release clean package without -Dmaven.javadoc.skip — since javadoc and GPG are the only two things the profile adds, and skipping both is what let the javadoc break through.

Written so hallux can follow it; little of it is jmsfx-specific.

README: three claims that outlived their condition

Same shape as the two exclusions this release found — nobody re-reads a comment.

  • "JMSFX is not yet published to Maven Central, so build it from source" — false as of today, and the first thing a reader hits. Replaced with a Using it section: coordinates, the exactly-one-library constraint (discovery must fail rather than choose), and how to depend on the test jar when writing an extension library.
  • "rasterises to PNG", twice — Compose SVG output without requiring the JavaFX toolkit #32 and Drop server-side PNG rendering #37 removed rasterisation entirely. Verified rather than assumed: zero matches in core and the server bar a logo image. The Building section already said "it deliberately does not rasterise", seventy lines below the claim.
  • jmsfx-battleorder "documentation only … not yet in the reactor" — it is generated, in the reactor, and on Central.

Verification

mvn -Pstandard verify clean. Documentation only; no source or build changes.

🤖 Generated with Claude Code

2.0.0 took three tag cycles and two re-signed tags. The runbook that eventually
worked existed nowhere in the repo, so docs/releasing.md now carries it: the
sequence, and the three failures that came from the same cause.

That cause is worth stating plainly, because it will recur: -Prelease runs only
at tag time, so it drifts, and so does everything that only runs inside it. The
secrets had never been created because no tag had run since #103 added the
workflow. Javadoc had dangling {@link}s for the whole #82 epic because javadoc
runs nowhere else. And a re-run cannot fix a workflow bug, because Actions
executes the workflow as it exists at the tagged commit - which is the fact that
turns a workflow mistake into a re-signed tag.

Most of it is not jmsfx-specific, and is written so hallux can follow it.

The README needed three corrections, all of them claims that outlived their
condition - the same shape as the two exclusions this release found:

  - "JMSFX is not yet published to Maven Central, so build it from source" is now
    false, and it was the line a reader would hit first. Replaced with a Using it
    section carrying the coordinates, the one-library-only constraint, and how to
    depend on the test jar when writing an extension.
  - "rasterises to PNG", twice, when #32 and #37 removed rasterisation entirely -
    contradicted by a line seventy lines below it saying so.
  - jmsfx-battleorder described as "documentation only ... not yet in the reactor",
    when it is generated, in the reactor, and published.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ctgnz
ctgnz merged commit 5affe43 into master Sep 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant