Skip to content

ci: the consumer path from the published package - #8

Merged
gafferongames merged 1 commit into
mainfrom
ci/consumer-path
Sep 4, 2026
Merged

ci: the consumer path from the published package#8
gafferongames merged 1 commit into
mainfrom
ci/consumer-path

Conversation

@gafferongames

Copy link
Copy Markdown
Contributor

Item six of the production bar: a real consumer path for every distribution claim.

What is published

Nothing. Checked against Maven Central directly:

query result
a:serialize 3 artifacts, none ours (org.mvnpm.at.keyv:serialize and friends)
g:io.github.mas-bandwidth 0
g:com.mas-bandwidth, g:com.masbandwidth 0
free text mas-bandwidth 0

The README's "Getting it" section already said there is no artifact under any coordinate and no Maven or Gradle build here to produce one. Both halves are accurate: the repository builds with a plain Makefile over a pinned JDK, and find . -name pom.xml -o -name 'build.gradle*' returns nothing.

So there is no consumer job here

A consumer job installs a released version from an index and round trips a message through it. With nothing on Maven Central there is nothing to install, and a job that skips itself is not a gate. serialize.go, serialize.rs and serialize (C++) get one in their own PRs, because those three have a published artifact.

What changes instead

One sentence. The README said "v1.1.0 is current" while the newest tag is v1.1.2, and two paragraphs above it correctly said "Version 1.1.2 (SerializeUtil.VERSION)", so the page disagreed with itself. Naming a version in that closing line means editing it by hand at every release, so it now points at the releases page and cannot go stale. It also says why pinning matters, which the bare version number did not: a release states a format version, and two endpoints interoperate only when they carry the same one.

When an artifact is published

This port already exports the constant a consumer job would check: SerializeUtil.VERSION, currently 1.1.2. Add a consumer job matching the one in serialize (C++), which checks SERIALIZE_VERSION from the installed header the same way: resolve the coordinate from Maven Central, build a fresh project outside the checkout against the released jar, encode the family's three field message (a boolean, an int in [0,1000], a 16 bit unsigned), check the bytes against 121 149 132 0 (verified against the published Rust crate and the published Go module), compare SerializeUtil.VERSION in the jar against this repository, and fail on drift naming both versions.

The README said "v1.1.0 is current" while the newest tag was v1.1.2, and two
paragraphs above it correctly stated the library version as 1.1.2. It now
points at the releases page, which is always right, and says why pinning a tag
matters: a release states a format version, and two endpoints interoperate only
when they carry the same one.

The distribution claim above it was checked against Maven Central and is
accurate as written: no artifact under any coordinate.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@gafferongames
gafferongames merged commit 77f2325 into main Sep 4, 2026
4 checks passed
@gafferongames
gafferongames deleted the ci/consumer-path branch September 4, 2026 15:00
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