Repository navigation
ci: consumer-test the fat JAR on every platform, before tagging and after publishing - #12
Merged
Merged
Conversation
…fter publishing - package.yml builds the natives (moved from ci.yml) and the fat JAR at the given version into build/m2, checks it holds MiniGrafDb, all 7 natives and a JNA dependency, and that a clean rebuild is byte-identical; build.gradle.kts gets reproducible archives and the dist repository. - consumer-test/: a Gradle project that depends on minigraf-jvm by Maven coordinates runs the README quick start (Kotlin) and the consumer contract from Java (in memory, file-backed reopen, MiniGrafException); run.sh local|registry. readme_sync.py checks the README against it. - ci.yml: package, consumer test on Linux x64/arm64, macOS, Windows x64/arm64 and Alpine, readme-sync; on PRs to main, package and consumer-test v2.x with this PR's workflows, since 2.0.x releases use main's. - release.yml: the test job builds and consumer-tests the jar at the release version; publish rebuilds it, refuses unless the file set and bytes match the tested jar, then signs and publishes; verify-published installs it from Maven Central on all six platforms and opens a release-broken issue on failure; README versions are stamped. - README: current version, the real transact output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz
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.
Plan step 3 (
main) of the core binding consumer-test spec (docs/superpowers/specs/2026-10-20-binding-consumer-tests-design.md). Thev2.xpart merged as #11.Changes
package.yml:ci.yml), then the fat JAR at the given version intobuild/m2;MiniGrafDb, all 7 natives, and a JNA dependency;artifact-prefix, so one run can package two refs.build.gradle.kts: reproducible archives and thebuild/m2dist repository.consumer-test/: a Gradle project that depends onminigraf-jvm:<v>by Maven coordinates only (local mode: from the built artifacts exclusively). It runs the README quick start in Kotlin, and the consumer contract from Java: in memory, file-backed across a reopen, andMiniGrafExceptionon invalid Datalog.run.sh local|registrychecks the resolved classpath for the version under test and JNA.readme_sync.pychecks the README.ci.yml:package;readme-sync;main:package-v2xandconsumer-v2x. These package and consumer-test thev2.xbranch with this PR's workflows, because 2.0.x releases runmain's workflows onv2.x. This is the failure mode of java#8.release.yml:testjob builds and consumer-tests the jar at the release version.assemble-and-publishrebuilds from the tag, and refuses unless the file set and every byte match the testeddist-jar. Then it signs and publishes with nmcp.verify-publishedwaits for Maven Central, runs the consumer test on all 6 platforms, and opens arelease-brokenissue if it fails.Change to the plan
The plan says to replace nmcp with the Central Portal publisher API. This PR keeps nmcp and does the rebuild plus byte-compare instead, as Android does (android#8).
Found on the way
The 2.x jar doesn't load on Alpine or Windows arm64: java#13, fixed on
v2.xby #11. Onmainthe loader already handles both, and this PR's Alpine and Windows arm64 legs pass.Codex review: one point.
consumer-v2xusesv2.x's ownconsumer-test/, which arrived with #11. That's intended, because the 2.x API differs.🤖 Generated with Claude Code
https://claude.ai/code/session_01PtCdzbJMSS1V8qEPaJ4jXz