Repository navigation
fix(manifest): block on a non-blocking JVM failure whose module resolved nowhere - #1647
Merged
Jeppe Fredsgaard Blaabjerg (jfblaa) merged 2 commits intoOct 23, 2026
Conversation
Jeppe Fredsgaard Blaabjerg (jfblaa)
added this pull request to stack #1651
October 23, 2026 12:11
Jeppe Fredsgaard Blaabjerg (jfblaa)
removed this pull request from stack #1651
October 23, 2026 12:11
Jeppe Fredsgaard Blaabjerg (jfblaa)
added this pull request to stack #1652
October 23, 2026 12:12
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Bugbot Autofix is ON, but none of the reported issues met your autofix severity threshold.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit bcc0e4b. Configure here.
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/facts-report-resolved-modules
branch
from
October 23, 2026 12:33
bcc0e4b to
bff5259
Compare
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/facts-report-resolved-modules
branch
from
October 23, 2026 12:44
bff5259 to
5cf6db3
Compare
Martin Torp (mtorp)
approved these changes
Oct 23, 2026
Martin Torp (mtorp)
left a comment
Contributor
There was a problem hiding this comment.
[agent] Approving. The inline note is a policy question for the whole stack, not a problem with this diff.
…ved nowhere Variant ambiguity is lenient because the module is almost always captured through another configuration. The report now checks that: an ambiguous module that resolved in no configuration of its project is missing from the SBOM, so it blocks. Reachability scans also name --reach-continue-on-install-errors next to ignoreUnresolved, since reachability cannot install a dependency that was let through.
Failures were merged by coordinate across projects before checking whether the module resolved, so one project that resolved it kept the failure lenient for another project whose SBOM lacked it. Blocking is now decided per failure, and failures aggregate by coordinate, category and that decision.
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/facts-report-resolved-modules
branch
from
October 23, 2026 17:09
5cf6db3 to
ccfff3a
Compare
Jeppe Fredsgaard Blaabjerg (jfblaa)
deleted the
jfblaa/facts-report-resolved-modules
branch
October 23, 2026 17:24
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
resolvedModulesfor this.group:namefailure is only folded into its versioned form when both come from the same projects.--reachwith auto-manifest or--dynamic-sbom-inference) name--reach-continue-on-install-errorsnext toignoreUnresolved: reachability cannot install a dependency that was let through.Testing: new renderer unit tests.
🤖 Generated with Claude Code
Note
Medium Risk
Changes exit-code and messaging for JVM manifest generation and reachability prep; incorrect classification could block or allow incomplete SBOMs, but scope is limited to resolution reporting and hints.
Overview
Tightens JVM manifest resolution reporting so “lenient” failures cannot silently omit dependencies from the SBOM, and reachability flows get clearer remediation when users ignore unresolved deps.
Blocking vs notice: Resolution reports now carry
resolvedModules(per subprojectgroup:name). A failure category that is normally non-blocking—e.g. Gradle variant ambiguity—is treated as blocking when that module did not resolve in any configuration of the failing project, because it would be missing from the facts. Assembly populatesresolvedModulesonly when there are failures, by scanning what actually landed in the graph.Deduping: Bare
group:namevs versioned coordinates are collapsed only when both refer to the same projects, so cross-subproject duplicates stay visible in the summary.Reachability hints: Auto-manifest / recursive DSI paths that resolve artifacts for reach (
withFiles/computeArtifactsSidecar) pass a new hint so error text also mentions--reach-continue-on-install-errorsalongsideignoreUnresolved(including when failures are already ignored). Plain manifest commands do not surface install-error wording.Gradle’s ambiguous-variant blocking header is updated to match the new “resolved nowhere” behavior. CHANGELOG and renderer unit tests cover the new rules.
Reviewed by Cursor Bugbot for commit bcc0e4b. Configure here.