Skip to content

Ship the agent as a core-less release jar, gate publishing on it; fix Windows tool-call test - #457

Merged
bernardladenthin merged 1 commit into
mainfrom
claude/busy-archimedes-lo9uyy
Sep 27, 2026
Merged

bernardladenthin merged 1 commit into
mainfrom
claude/busy-archimedes-lo9uyy

Conversation

@bernardladenthin

Copy link
Copy Markdown
Owner

Summary

  • Agent release asset. llama-atmosphere-agent-<core version>-jar-with-dependencies.jar (~7 MB) is now attached to every GitHub release and the snapshot pre-release, with .sha256 and a GPG .asc. It is never deployed to Maven Central.

    • A new assembly profile in llama-atmosphere-agent/pom.xml (descriptor src/assembly/agent-jar.xml) builds it.
    • It leaves out the core and everything it brings (via useTransitiveFiltering), plus jspecify and slf4j-simple, because every core fat jar already carries them.
    • The manifest Class-Path lists the core fat jars, so java -jar works when the agent jar sits next to any of them.
    • The model-free agent job builds and uploads it. The attach jobs put it next to the core fat jars, where sign-fatjars.sh signs it.
  • New job smoke-agent-linux (.github/smoke-agent-jar.sh) starts the real agent jar next to the real all-linux-x86-64 fat jar and checks:

    • bytecode is at most Java 21 (major 65);
    • started alone, the jar fails with NoClassDefFoundError for the core;
    • --help works;
    • a one-shot "2 + 2" answer contains a 4;
    • a read_file round prints a marker from --workspace.

    These run on the cached tool model with --ngl 0. The model-free agent job, the model-backed agent integration job and this smoke now gate both publish jobs.

  • Fix: ToolCallingIntegrationTest#requiredToolCallIsParsedFromStreamingResponse. It failed on both Windows x86-64 jobs of run 36314602700 after the b11211 bump.

    • The streamed request produced 512 tokens without a tool call; the prompt ("Write an example") never asked for the tool.
    • The likely cause is the new tiled k-quant matmul (upstream #27851) taking a different ISA path on those runners and tipping greedy decoding. This is not reproduced; there is no Windows host here.
    • The prompt now asks for the call outright. Both assertions now include the streamed content, finish_reason and chunk count.
  • Docs: README, agent README, CLAUDE.md and CHANGELOG. The workspace policy change is a companion PR in bernardladenthin/workspace.

Test plan

  • Agent mvn -P assembly package builds the jar. Its contents contain no core classes, no Jackson 2, no SLF4J and no jspecify, and the manifest Main-Class and Class-Path are correct.
  • java -jar next to a local core fat jar loads the core; alone it fails with NoClassDefFoundError. java -cp with both jars works.
  • The smoke script's model-free steps (manifest, "jar alone fails", --help) pass locally. The model steps run only in CI because HuggingFace is blocked here.
  • Core test-compile and spotbugs:check pass. spotless:apply was run.
  • publish.yml parses; the new needs were checked.
  • CI is green on this branch, including smoke-agent-linux and the two Windows Java test jobs.
  • Docs / CHANGELOG updated

Related issues / PRs

Follow-up to #456 and publish run 36314602700.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QSXAwbXqx9u5xsMArMvgT8


Generated by Claude Code

The llama-atmosphere-agent is now a GitHub Release asset (never Maven
Central): llama-atmosphere-agent-<core version>-jar-with-dependencies.jar,
built by a new `assembly` profile that excludes the core and its whole
runtime graph plus jspecify/slf4j-simple, all of which every core fat jar
already carries. ~7 MB instead of hundreds, no natives twice, no second
SLF4J provider. Its manifest Class-Path names the core fat jars, so
`java -jar` works next to any of them.

CI: the model-free agent job builds it (+ .sha256) and uploads it; the
snapshot and release attach jobs put it next to the core fat jars, where
sign-fatjars.sh signs it. New job smoke-agent-linux runs the real pair:
bytecode <= 65, the jar alone must fail for the missing core, --help, a
one-shot answer and a read_file round on the cached tool model. The
model-free job, the model-backed integration job and the smoke now gate
both publish jobs.

ToolCallingIntegrationTest: the streaming variant failed on both Windows
x86-64 jobs after b11211 (512 tokens, no tool call), while the prompt
never asked for the tool. Ask for it outright and put the streamed
content, finish_reason and chunk count into both assertion messages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QSXAwbXqx9u5xsMArMvgT8
@bernardladenthin
bernardladenthin merged commit 1c23d8e into main Sep 27, 2026
10 of 15 checks passed
@bernardladenthin
bernardladenthin deleted the claude/busy-archimedes-lo9uyy branch September 27, 2026 12:15
@sonarqubecloud

Copy link
Copy Markdown

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