Repository navigation
chore(build): point the development version at the next release - #82
Merged
Merged
Conversation
The committed default was `0.0.1-SNAPSHOT` and stayed there permanently: the release coordinate is injected with -Pversion, so the placeholder never needed to move. That held while the version was only a publishing coordinate. It stopped holding when the SSE `ready` frame started reporting it to clients as `platformVersion`. `0.0.1-SNAPSHOT` sorts BEFORE `0.0.1`. So a build of main -- carrying a frame that 0.0.1 does not have -- announced itself as older than the release that lacks it. Not vague, inverted. A console asking "does this server send ready?" got a number saying "pre-0.0.1" from a server that was sending it. The default now names the version being worked towards and is bumped right after each release. Decision "b" is unchanged in substance: release coordinates are still never committed and still arrive via -Pversion. What changed is which version the development placeholder holds -- the next one instead of the last. Six places carried the literal and had to move together, since one left behind would disagree with the rest: the version itself, a POM comment, the release workflow's two explanatory comments, the consume-verification harness's default coordinate, and the operations guide (en + ko), which now also states the bump-after-release rule that makes the new default stay true. CI gained the gate this needs. `platformVersion` is read from the jar manifest, and nothing in the test suite can observe it: tests run from exploded classes, where there is no manifest and the field is null by design. Dropping the manifest attribute would therefore ship platformVersion=null to every consumer with a fully green build. The build job now asserts, on the artifact, that the manifest version equals the version the build declared. Consumers of development snapshots are affected and the changelog says so: the GitHub Packages coordinate moves to 0.1.0-SNAPSHOT, so a build pinned to 0.0.1-SNAPSHOT stops receiving updates. Released coordinates are untouched. Also narrowed the `platformVersion` docs. They said null happens on "tests, IDE runs", which reads as common; every path a console actually connects to resolves protean as a jar, including the quickstart demo, so null is rare in practice. Verified: build.gradle and the manifest both report 0.1.0-SNAPSHOT, the CI check passes against the built artifact, and the PoC gate passes 6 combinations x 6 criteria with no SKIPPED and no unreported cell. Co-Authored-By: htjulia <htjulia1@gmail.com>
8 of 12 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
The committed development version was
0.0.1-SNAPSHOTand stayed therepermanently — release coordinates are injected with
-Pversion, so theplaceholder never needed to move. That held while the version was only a
publishing coordinate. It stopped holding in #80, when the SSE
readyframestarted reporting it to clients as
platformVersion.0.0.1-SNAPSHOTsorts before0.0.1. So a build ofmain— carrying aframe that
0.0.1does not have — announced itself as older than the releasethat lacks it. Not vague: inverted. A console asking "does this server send
ready?" got a number meaning "pre-0.0.1" from a server that was sending it.The default now names the version being worked towards and is bumped right after
each release.
Decision "b" is unchanged in substance. Release coordinates are still never
committed and still arrive via
-Pversion. What changed is which version thedevelopment placeholder holds — the next one instead of the last.
Six places carried the literal
One left behind would disagree with the rest, so they move together:
build.gradlebuild.gradle.github/workflows/release.ymlverification/consumer/build.gradledocs/guide/11-operations.md+.ko.mdCI gained the gate this needs
platformVersionis read from the jar manifest, and nothing in the test suitecan observe it: tests run from exploded classes, where there is no manifest and
the field is
nullby design. Dropping the manifest attribute would thereforeship
platformVersion=nullto every consumer with a fully green build.The
buildjob now asserts, on the artifact, that the manifest version equals theversion the build declared — not merely that it is non-empty, which an earlier
draft of this check would have satisfied with a stale jar.
Consumers of development snapshots are affected
The GitHub Packages coordinate moves to
0.1.0-SNAPSHOT, so a build pinned to0.0.1-SNAPSHOTstops receiving updates. Released coordinates are untouched. Thechangelog says so in both languages.
Also narrowed the
platformVersiondocs. They saidnullhappens on "tests, IDEruns", which reads as common; every path a console actually connects to resolves
protean as a jar, including the quickstart demo, so
nullis rare in practice.Type of change
fix— bug fix (no new API)feat— new capability (dynamic loading, gates, isolation, MCP, debug, data access)perf— performance, no observable behaviour changedocs— documentation onlyrefactor/chore/test/ci— no behaviour changeCorrectness & safety
No production code path is touched: this changes a build property, comments, docs,
and adds a CI assertion. The only runtime-visible effect is the string a jar
reports as its version, which is the point.
Verification
gradle clean bootJarassembles — the jar isprotean-0.1.0-SNAPSHOT.jarand its manifest carries
Implementation-Version: 0.1.0-SNAPSHOT, checkedon the built artifact
gradle testpasses (full regression, run after the jar exists) — 599tests, 0 failures, 0 skipped
docs/guide/11-operations.md+.ko.md,CHANGELOG(en + ko)(
0.1.0-SNAPSHOT==0.1.0-SNAPSHOT)Related
Follow-up to #80, which made this version runtime-visible.