Skip to content

llama.cpp b11320, shared plugin versions in the parent, agent on Maven Central - #474

Merged
bernardladenthin merged 12 commits into
mainfrom
claude/hopeful-pascal-9jlbqb
Oct 1, 2026
Merged

bernardladenthin merged 12 commits into
mainfrom
claude/hopeful-pascal-9jlbqb

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

  • Dependency sweep: palantir-java-format 2.100.0, logback 1.6.5 (core and agent).
  • llama.cpp b11259 → b11320 in eight reviewable chunks (b11275, b11278, b11279, b11293, b11302, b11303, b11313, b11320). Each chunk bumps GIT_TAG, the README badge, CLAUDE.md and LlamaCppVersion, and adds two history rows: the changes, and the patch apply/drop-check. All 9 patches still apply at every step, and each drop-check shows the defect is still present upstream. Notable upstream changes:
    • #29601 removed common_batch_clear/common_batch_add/common_batch_from_llama_batch and the llama_batch overload of common_speculative_process. The project uses none of them.
    • #28520: training computes K/V gradients only when n_ubatch == n_ctx and warns otherwise. LlamaTrainer behaves like upstream finetune.
  • Plugin versions in one place: the root pom's <pluginManagement> now pins central-publishing, compiler, gpg, jar, javadoc, resources, source and surefire. Before this, a module that pinned nothing built with whatever its Maven version defaulted to (compiler 3.13.0 locally, 3.15.0 in CI). The duplicates in llama/, llama-langchain4j/, llama-kotlin/ and the root release profile are removed. The standalone agent pom pins resources and jar itself.
  • llama-atmosphere-agent on Maven Central:
    • Published at the core's version as a thin jar whose pom names llama-platform as a runtime dependency, so jbang net.ladenthin:llama-atmosphere-agent:<v> starts it with the CPU natives of every desktop platform.
    • New release profile (sources, javadoc, GPG, central-publishing).
    • A publish step after the reactor deploy in publish-snapshot and publish-release.
    • check-natives.py now fails when the agent's version differs from the reactor's.
    • CI installs only the classes and the llama-platform pom (-Dllama.natives=none).
    • The fat-jar release asset is unchanged (still built without the core).

Test plan

  • Fresh native build at b11320; C++ suite 590/590
  • Java suite: 1831 tests, 0 failures (model-gated tests skipped locally); NativeLibraryLoadSmokeTest, RpcServerTest, LlamaLoggerTest green
  • pluginManagement move: effective-pom diff (no profile / release / release,natives) shows llama and llama-platform unchanged, and the side modules differ only in plugin versions; reactor install and side-module tests green
  • Agent: -P release verify produces jar, sources and javadoc; empty-repo CI simulation with -Dllama.natives=none (277 tests green); a consumer pom and JBang 0.132.1 resolve the agent plus llama, the 7 CPU/Metal natives jars and a single slf4j-simple, and the agent starts
  • buildcheck unit tests, check-natives (falsified), check-shared-files, check-run-scripts, check-release-gate, REUSE
  • CI is green on this branch
  • Docs / CHANGELOG updated (README, agent README/CLAUDE.md, CLAUDE.md, docs/RELEASE.md, CHANGELOG, breaking-changes history)

Related issues / PRs

Part of the 2026-10-01 cross-repo dependency sweep (BitcoinAddressFinder, srcmorph, streambuffer, BroomCabinet, workspace).

Checklist

  • No security-sensitive changes. The new agent publish step uses the existing Central/GPG secrets of the same jobs, and nothing new is printed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2


Generated by Claude Code

claude added 12 commits October 1, 2026 14:10
No formatting change under the new formatter (spotless:apply over llama/ and
llama-atmosphere-agent/ left every source untouched). logback is test scope here.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
llama-kotlin and llama-langchain4j left maven-resources-plugin unpinned, and
llama-kotlin maven-compiler-plugin, llama-langchain4j maven-jar-plugin too, so
both modules -- each published to Central -- built with the defaults of whatever
Maven ran them: resources 3.3.1 locally and 3.4.0 in CI, compiler 3.13.0
locally and 3.15.0 in CI, jar 3.4.1, against 3.5.0/3.16.0/3.5.1 in llama.

Every plugin version more than one module uses (compiler, jar, resources,
surefire, source, javadoc, gpg, central-publishing) now sits once in the root
pom's pluginManagement. It replaces the copies in llama's pluginManagement, the
two side modules' version properties and the literals in the parent's release
profile, which named each of these versions two or three times. Plugins only
llama uses stay pinned there.

Checked by diffing help:effective-pom before and after, with no profile, with
release and with release,natives: llama and llama-platform are unchanged, and
the side modules differ only in the plugin versions above. Reactor install,
llama-langchain4j verify and llama-kotlin test are green, and the release
profile still loads central-publishing as a build extension.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
The standalone agent pom left both unpinned, so it built with the defaults of
whatever Maven ran it (resources 3.3.1 and jar 3.4.1 here). Now 3.5.0 and 3.5.1,
the reactor's versions, as properties next to its other plugin pins. The
effective pom, with and without -P assembly, changes only in these two versions;
-P assembly verify is green (277 tests, 63 model-gated skips).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
net.ladenthin:llama-atmosphere-agent goes to Maven Central as a thin jar
(with Main-Class), sources and javadoc, signed, from a step of its own in
publish-snapshot and publish-release right after the reactor deploy, which has
just installed the core and its natives jars it resolves against. So
`jbang net.ladenthin:llama-atmosphere-agent:<version>` starts it with no
checkout and no download by hand. The GitHub-release jar without the core is
unchanged.

- The natives are a plain runtime dependency on llama-platform, no longer a
  profile: the published pom must carry them whatever a consumer's tool does
  with profiles. CI, which installs only the classes and now the llama-platform
  pom, passes -Dllama.natives=none as before; that activates a profile whose
  dependencyManagement excludes everything llama-platform names.
- The agent's version is the reactor's (5.2.0-SNAPSHOT), llama.version
  defaults to ${project.version}, and check-natives.py fails when the agent
  pom and the reactor disagree, since versions:set does not reach it.
- developers, scm and distributionManagement for Central; a release profile
  mirroring the parent's. Javadoc found a {@link} to a test class in
  ApprovalMode, now {@code}.

Checked: -P release verify builds the jar, sources and javadoc jars; in an
empty local repository holding only the core classes and the llama-platform pom
the agent builds and tests green with -Dllama.natives=none (277 tests, 63
model-gated skips); a consumer project and JBang 0.132.1 resolving only the
agent coordinates get the core, the seven CPU/Metal natives jars and one SLF4J
provider, and the agent starts; the release-asset jar still carries no core and
no natives.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AytmJF9faEiQEVt6eetQS2
@claude

claude Bot commented Oct 1, 2026

Copy link
Copy Markdown

Code review complete. Strong PR with thorough llama.cpp b11320 upgrade, solid plugin consolidation, and proper agent publication mechanism. Key observations: (1) Agent pom still pins plugin versions—consider simplifying with parent inheritance; (2) Agent version sync requires discipline—ensure release checklist is clear; (3) Consider adding dependencyConvergence enforcer to agent pom. Security is solid, test coverage is comprehensive (590 C++ tests, 1831 Java tests, 277 agent tests). Recommendation: Ready to merge.

@sonarqubecloud

sonarqubecloud Bot commented Oct 1, 2026

Copy link
Copy Markdown

@bernardladenthin
bernardladenthin merged commit 5901980 into main Oct 1, 2026
18 of 79 checks passed
@bernardladenthin
bernardladenthin deleted the claude/hopeful-pascal-9jlbqb branch October 1, 2026 16:59

This branch had an error being deployed

1 failed deployment
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.

2 participants