Cutting 0.47.0 surfaced a release-breaking conflict between the Spotless self-closing-tag rule (#535, ponder-lab#351) and the maven-release-plugin.
Problem
ponder-lab#351 pins the spaceless self-closing form (<tag/>) via a Spotless replaceRegex, and its commit message states this "matches the maven-release-plugin's native output." That premise is incorrect. maven-release-plugin 3.3.1 re-serializes the root pom.xml during the version bump and emits the spaced form (<tag />):
- base master:
<argLine/>
[maven-release-plugin] prepare release 0.47.0 commit: <argLine />
So every release commit is Spotless-dirty on the root POM, in direct conflict with the enforced style.
Why it now breaks deploys
Previously this was only a master-hygiene nuisance, patched after the fact (e.g. c3d3d51e, "Apply spotless to pom.xml after release-plugin rewrite"), because the old ml-X.Y.Z tags failed the semver deploy gate and skipped deploy anyway. After ponder-lab#349 pinned tagNameFormat to plain X.Y.Z, the tag-push deploy actually runs — and its build job fails at "Check formatting with Spotless" on the dirty POM, so release-upload is skipped and the version never publishes via CI. 0.47.0 had to be deployed manually.
Suggested fix
Reconcile the two so releases produce Spotless-clean POMs with no manual step. Since maven-release-plugin owns POM serialization and emits the spaced form, the simplest fix is to exclude pom.xml from the spaceless self-closing enforcement (keep enforcing it on the summary XMLs like tensorflow.xml, where #351's normalization is valuable and nothing else rewrites them). Alternatively, automate spotless:apply into the release flow so both the release commit and the tag are clean.
Surfaced while releasing ponder-lab/ML 0.47.0 (the #539 fix).
Cutting 0.47.0 surfaced a release-breaking conflict between the Spotless self-closing-tag rule (#535, ponder-lab#351) and the
maven-release-plugin.Problem
ponder-lab#351 pins the spaceless self-closing form (
<tag/>) via a SpotlessreplaceRegex, and its commit message states this "matches themaven-release-plugin's native output." That premise is incorrect.maven-release-plugin3.3.1 re-serializes the rootpom.xmlduring the version bump and emits the spaced form (<tag />):<argLine/>[maven-release-plugin] prepare release 0.47.0commit:<argLine />So every release commit is Spotless-dirty on the root POM, in direct conflict with the enforced style.
Why it now breaks deploys
Previously this was only a master-hygiene nuisance, patched after the fact (e.g.
c3d3d51e, "Apply spotless topom.xmlafter release-plugin rewrite"), because the oldml-X.Y.Ztags failed the semver deploy gate and skipped deploy anyway. After ponder-lab#349 pinnedtagNameFormatto plainX.Y.Z, the tag-push deploy actually runs — and itsbuildjob fails at "Check formatting with Spotless" on the dirty POM, sorelease-uploadis skipped and the version never publishes via CI. 0.47.0 had to be deployed manually.Suggested fix
Reconcile the two so releases produce Spotless-clean POMs with no manual step. Since
maven-release-pluginowns POM serialization and emits the spaced form, the simplest fix is to excludepom.xmlfrom the spaceless self-closing enforcement (keep enforcing it on the summary XMLs liketensorflow.xml, where #351's normalization is valuable and nothing else rewrites them). Alternatively, automatespotless:applyinto the release flow so both the release commit and the tag are clean.Surfaced while releasing ponder-lab/ML 0.47.0 (the #539 fix).