Skip to content

fix(release-script): install a module after the siblings it depends on - #513

Merged
DemchaAV merged 1 commit into
developfrom
fix/cut-release-install-order
Aug 4, 2026
Merged

fix(release-script): install a module after the siblings it depends on#513
DemchaAV merged 1 commit into
developfrom
fix/cut-release-install-order

Conversation

@DemchaAV

@DemchaAV DemchaAV commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Why

The 2.1.1 cut failed on this. It stopped at Step 4 with

Could not find artifact io.github.demchaav:graph-compose-testing:jar:2.1.1 in central

after the version bump had rewritten thirty files, and — the one thing that went right —
before any commit, tag or push. Nothing reached the remote.

Step 4 installs each train sibling on its own (install -f <module>/pom.xml, not a
reactor build), so everything a module needs has to be in the local repository already,
at the version the bump just wrote. That version exists in no reactor and is not yet on
Central. render-pptx was listed before testing while depending on it at test
scope, and had been since the PPTX text-fidelity work landed.

It stayed invisible for two reasons, and both are worth naming:

  • ReleaseScriptInstallListGuardTest checked that the list contains every sibling the
    examples need. It said nothing about order.
  • A cut only fails on it when the local repository does not already hold
    graph-compose-testing at the new version. That is the normal state of a clean
    machine — and not of one that has been building all week, which is how the 2.1.0 cut
    went green over the same defect.

What

testing installs second, right after render-pdf. The guard gains a second test that
derives the required order from the poms rather than restating it, so a new edge
fails the build instead of the next cut.

The guard needed fixing before it could fix anything

Worth being explicit, because it went green on the broken order first: the existing
dependency pattern matched only <version>${graphcompose.version}</version>, which is
how examples/pom.xml pins a sibling. A module inside the train uses
${project.version}. Reusing that pattern found no dependencies for render-pptx at
all, so the order check passed over the very edge that broke the cut — a guard reading
the wrong spelling reports on an empty set and calls it clean.

Tests

./mvnw -B -ntp clean verifyBUILD SUCCESS.

Checked from both sides rather than trusted because it passed:

Install order Result
fixed (testing second) passes
original (testing last) fails: render-pptx (position 5) needs testing, installed at 7

cut-release.ps1 -Version 2.1.1 -DryRun → exit 0, and the printed order is now
render-pdf → testing → wrapper → render-docx → render-pptx → templates.

The working tree was restored to a2a3e146 before any of this; the failed cut left no
commit and no tag, locally or on the remote.

Step 4 installs each train sibling on its own — install -f <module>/pom.xml, not
a reactor build — so everything it needs must already be in the local repository
at the version the bump just wrote. That version exists in no reactor and is not
yet on Central, so an install that comes too early cannot resolve it.

render-pptx was listed before testing while depending on it at test scope, and
had been since the PPTX text-fidelity work. Nothing caught it: the guard checked
that the list contains every sibling the examples need, not that the order
respects the graph. And a cut only fails on it when the local repository does
not already hold graph-compose-testing at the new version — the normal state of
a clean machine, not of one that has been building all week. The 2.1.1 cut hit
it and stopped at Step 4, after the bump had rewritten thirty files and before
any commit, tag or push.

testing now installs second. The guard derives the order it requires from the
poms rather than restating it, so a new edge fails the build instead of the cut.

That guard needed its own fix to work at all: it matched only
${graphcompose.version}, which is how examples/pom.xml pins a sibling, while a
module inside the train uses ${project.version}. Reusing that pattern found no
dependencies for render-pptx, so the order check passed over the very edge that
broke the cut — a guard reading the wrong spelling reports on an empty set and
calls it clean. Verified from both sides: with the order fixed it passes, and
with the original order it fails naming "render-pptx (position 5) needs testing,
installed at 7".
@DemchaAV
DemchaAV merged commit 19e33a7 into develop Aug 4, 2026
14 checks passed
@DemchaAV
DemchaAV deleted the fix/cut-release-install-order branch August 4, 2026 23:20
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