build(deps): langchain4j 1.20.0, and correct the log4j pin's rationale - #419
Merged
Merged
Conversation
Both comments still said logcaptor "brings 2.25.3, which is affected by CVE-2026-49844". That stopped being true when this repo moved to logcaptor 2.12.7: its own pom declares <version.log4j>2.26.1</version.log4j>, i.e. exactly what the pin forces. The dependencyManagement entries therefore change nothing about the resolved graph today. The pin is kept deliberately, as a lower bound, so a logcaptor release that fell back to an affected line could not regress the test classpath silently. But a comment that describes it as the fix sends the next reader looking for a vulnerability that is no longer reachable. Also states what the pin is NOT, because the two changes are adjacent in time and easy to conflate: this has nothing to do with the Java 8 class-file floor. That one is slf4j-simple instead of logback and checker-qual at provided scope, and it concerns the shipped artifact. Both log4j artifacts are test scope and reach no published artifact at all. Comment text only; no version, scope or dependency changed. Kept byte-parallel with the same rewrite in BitcoinAddressFinder, which carries the identical pin. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AnNYn8W1xuVxVJtyL34GyH
The only dependency in the four sibling repos genuinely behind a stable
upstream. It is confined to this one module, so it reaches no other artifact:
llama-langchain4j is maven.compiler.release 17 because langchain4j 1.x requires
Java 17, while the core net.ladenthin:llama stays Java 8. That split is
untouched.
Nothing about the pin was deliberate -- no rationale comment accompanied it, and
it is not in the workspace do-not-bump registry. It was simply a lag.
Verified rather than assumed, because a langchain4j minor can move interface
shapes and this module implements four of them. The module imports 44 types
across agent.tool, data.message, model.chat.request(.json), model.chat.response
and model.output; all still resolve, and the adapters compile unchanged against
ChatModel, StreamingChatModel, EmbeddingModel and ScoringModel:
mvn -pl llama -am -DskipTests install -> BUILD SUCCESS
mvn -f llama-langchain4j/pom.xml verify -> BUILD SUCCESS
Tests run: 49, Failures: 0, Errors: 0, Skipped: 7
The 7 skips are the model-gated integration tests, which self-skip without a
GGUF; the 42 that ran are the mapping, schema-serializer and streaming-assembler
suites, i.e. exactly the code that touches the langchain4j API surface.
`verify` is the right goal here rather than `test`: it also builds the javadoc
jar, so a javadoc break introduced by a changed signature fails now instead of
at release time.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnNYn8W1xuVxVJtyL34GyH
bernardladenthin
had a problem deploying
to
maven-central
September 5, 2026 19:20 — with
GitHub Actions
Failure
bernardladenthin
had a problem deploying
to
startgate
September 5, 2026 19:20 — with
GitHub Actions
Error
bernardladenthin
had a problem deploying
to
maven-central
September 5, 2026 19:20 — with
GitHub Actions
Failure
Code Review: PR #419Approved - Maintenance PR with sound changes and thorough verification. Changes Analysis
Security AssessmentNo regressions: log4j pin retained, test-scope only, minor stable dependency bump. Ready to MergeConfirm CI is green before final approval. |
|
bernardladenthin
deleted the
claude/log4j-floor-guard-and-langchain4j
branch
September 5, 2026 19:37
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.



Summary
Two independent maintenance items, one commit each.
1. The log4j pin is a floor guard now, not an active CVE fix (comment text only).
Both comments in
llama/pom.xmlstill said logcaptor "brings 2.25.3, which is affected by CVE-2026-49844". That stopped being true when this repo moved to logcaptor 2.12.7, whose own pom declares<version.log4j>2.26.1</version.log4j>— exactly what the pin forces. ThedependencyManagemententries therefore change nothing about the resolved graph today.The pin is kept deliberately, as a lower bound: a logcaptor release that fell back to an affected line could not regress the test classpath silently. But a comment describing it as the fix sends the next reader looking for a vulnerability that is no longer reachable.
The comment also now states what the pin is not related to, because the two changes landed in the same week and were conflated once already: this has nothing to do with the Java 8 class-file floor. That one is
slf4j-simpleinstead of logback pluschecker-qualatprovidedscope, and it concerns the shipped artifact — both log4j artifacts are test scope and reach no published artifact at all.No version, scope or dependency changed. Kept byte-parallel with the same rewrite in BitcoinAddressFinder, which carries the identical pin.
2. langchain4j 1.19.0 → 1.20.0.
The only dependency across the four sibling repos genuinely behind a stable upstream. Confined to
llama-langchain4j, which ismaven.compiler.release 17because langchain4j 1.x requires Java 17; the corenet.ladenthin:llamastays Java 8 and that split is untouched. Nothing about the old pin was deliberate — no rationale comment, not in the do-not-bump registry. It was a lag.Test plan
Affected unit / integration tests pass locally
Verified rather than assumed, because a langchain4j minor can move interface shapes and this module implements four of them. The module imports 44 types across
agent.tool,data.message,model.chat.request(.json),model.chat.responseandmodel.output; all still resolve, and the adapters compile unchanged againstChatModel,StreamingChatModel,EmbeddingModelandScoringModel. The 7 skips are the model-gated integration tests (they self-skip without a GGUF); the 42 that ran are the mapping, schema-serializer and streaming-assembler suites — exactly the code touching the langchain4j API surface.verifyrather thanteston purpose: it also builds the javadoc jar, so a javadoc break from a changed signature fails now instead of at release time.xml.etreeparses both poms; no--inside any XML commentCI is green on this branch
Docs / CHANGELOG updated where applicable — comment-only change plus a dependency bump with no behaviour change; the cross-repo record lives in
workspace/crossrepostatus.mdRelated issues / PRs
Pairs with the identical comment rewrite in BitcoinAddressFinder and with the registry-row decision in
bernardladenthin/workspace#39.Checklist
CONTRIBUTING.mdandCODE_OF_CONDUCT.md🤖 Generated with Claude Code
https://claude.ai/code/session_01AnNYn8W1xuVxVJtyL34GyH
Generated by Claude Code