Repository navigation
Fix Maven vendor reporting unwired patch applied (#513) - #1826
Merged
Mikola Lysenko (mikolalysenko) merged 5 commits intoOct 29, 2026
Merged
Mikola Lysenko (mikolalysenko) merged 5 commits into
Mikola Lysenko (mikolalysenko) merged 5 commits into
Conversation
Assisted-by: Claude Code:claude-opus-5-5
When every reactor declaration of the patched package was left at an
uncertain ${property} or another version, and no root could be pinned,
vendor still wrote the tree, exited 0 and counted the patch as applied,
while the build kept resolving the unpatched jar. vendor --check then
reported the artifact as no longer wired.
vendor now refuses such a plan (vendor_jvm_shape_unsupported, reason
nothing_wired) with the degraded reasons that left it unwired, and
writes nothing.
Fixes #513
Assisted-by: Claude Code:claude-opus-5-5
The refusal now lists only the reasons that left a declaration or root unwired, not the repository and config notes. A probe run for a patch without files refuses the same reactor shapes the real vendor does, so the preview and the run agree. Assisted-by: Claude Code:claude-opus-5-5
Mikola Lysenko (mikolalysenko)
marked this pull request as ready for review
October 29, 2026 13:04
Collaborator
Author
|
BugBot review Generated by Claude Code |
1 similar comment
Collaborator
Author
|
BugBot review Generated by Claude Code |
Tanmay Singla (Tanmay182003)
approved these changes
Oct 29, 2026
github-merge-queue
Bot
removed this pull request from the merge queue due to failed status checks
Oct 29, 2026
main now discovers Maven 4 implicit subprojects by listing directories (#1807), so wired_checked takes a lister. The nothing_wired check passes the same lister the plan used, so it sees the same reactor. Assisted-by: Claude Code:claude-opus-5-5
Collaborator
Author
|
BugBot review Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 2e242f3. Configure here.
Mikola Lysenko (mikolalysenko)
deleted the
agent/fix-maven-reactor-unwired-applied
branch
October 29, 2026 15:04
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.
LLM Description written by Claude Code:claude-opus-5-5
Fixes #513
Summary
vendorno longer reports a Maven patch as applied when the reactor planwires nothing. It refuses with
vendor_jvm_shape_unsupported/reason: nothing_wired, lists the reasons that left the reactor unwired(e.g.
property_unresolved,conflicting_literal_version), and writesnothing.
Root cause
#1787 stopped the vendored Maven reactor planner from pinning a root over a
${prop}version it can't resolve with certainty, and madevexwithholdattestation. But when that leaves nothing wired, no pom of the reactor
names the suffixed version. That happens in #513 case 1 with no sibling
module at the literal base, and on the
conflicting_literal_versionpath.vendorstill wrote the tree, the repository andmaven.config, exited 0and counted the patch as
applied.vendor --checkthen said "no longerwired". This was the part #1787 left open (see its
Refs #513).Change
maven_reactor::refuse_unwired: overlays the plan's writes on thecheckout and refuses when
wired_checkedwould be false. The refusalnames only the degraded reasons that leave a declaration or root alone.
maven_repo::vendor_maven_jvmcalls it for reactor and mixed roots,both on the real run and on the probe run (a patch with no files), so a
preview and a real run agree. Dry runs plan first, so they refuse too.
in
jvm::plan_with_externalandvendor --check, which already needsthe Maven half wired on a mixed root.
external management unreadable offline) now refuses and leaves the
existing pin alone. Before, it removed the pin and still reported success.
Tests
${prop}, no sibling)vendor_jvm_cli::maven_reactor_uncertain_property_version_withholds_vexvendorexits 0 (assert_refused)conflicting_literal_version, no sibling)maven_reactor::tests::a_plan_that_wires_nothing_is_refused,a_wired_plan_is_not_refusedCommands run locally:
cargo fmt --all -- --check,cargo clippy --workspace --all-features -- -D warnings: cleancargo test -p socket-patch-core --all-features: 6925 pass. 4 fail, all in files this PR doesn't touch (copy_tree,vlt_heal,pypi_poetry,pypi_requirements). They are permission-injection tests, and the container runs as root, which ignores the chmod they rely on.cargo test -p socket-patch-cli --all-features --lib --bins: pass.--test vendor_jvm_cli: 52/52.--test e2e_vendor_jvm_build -- --ignored maven_reactor(Maven 3.9.x): 2/2.--test e2e_vendor_maven_build -- --ignored: pass.cargo test --workspaceran out of container disk while linking every integration binary, so CI covers the remaining suites./code-review highran. Fixed: the reasons list leaked unrelated warnings, the probe path was uncovered, and the vex assertion was weak. Not changed, by design: refusing on mixed roots (see above), and the extra reactor discover per vendor run (one parse of the checkout's poms, cheap next to the download).No npm/pypi/gem wrapper changes needed (Rust-only behavior).
Generated by Claude Code