Repository navigation
feat(manifest): name JVM Socket facts files after their build - #1587
Merged
Jeppe Fredsgaard Blaabjerg (jfblaa) merged 17 commits intoOct 9, 2026
Merged
Conversation
Every Maven, Gradle and sbt build now writes its own `<entry>.socket.facts.json` in its build root, so builds sharing a directory no longer overwrite each other's facts: - A file-addressed build is named after the file the tool ran on (`pom.xml.socket.facts.json`, `other-pom.xml.socket.facts.json` for `mvn -f other-pom.xml`); a directory-addressed one after the tool (`gradle.socket.facts.json`, `sbt.socket.facts.json`). - Each build script reports its root and Maven its entry POM, so the file lands where its relative paths resolve, also under `mvn -f sub/x.xml` and `gradle -p dir`. - Facts projects carry the build tool's own unique identifier (`projects[].id`: Maven GAV, Gradle project path, sbt project id) and their own build files (`projects[].manifestFiles`). The sidecar keys project classpaths by that id, and the Maven extension keys modules by GAV, so two modules sharing a directory stay separate. - Scan, reach and fix recognise any `*.socket.facts.json`. Reachability no longer uploads an earlier bare `.socket.facts.json` report as input.
A dependency on one of the build's own projects now resolves to a component whose id is that project's id, linked by each build tool's own resolution: Gradle's project component identifier, Maven's reactor GAV, and sbt's dependsOn closure. Projects sharing a coordinate (Gradle `:a:util` and `:b:util` both `ex:util:1`) no longer merge into one component, and a project's variants (test fixtures, test-jar) collapse into it. Resolved artifact paths are keyed by component/project id instead of by coordinate, so the sidecar gives each sibling component its own project's sources and targets. An sbt module ID reachable through more than one dependsOn project is reported as a resolution failure.
…acts-files # Conflicts: # CHANGELOG.md
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Jeppe Fredsgaard Blaabjerg (jfblaa)
marked this pull request as ready for review
October 8, 2026 09:30
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 2 potential issues.
Bugbot Autofix is ON. A cloud agent has been kicked off to fix the reported issues.
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 649eb2f. Configure here.
A reactor rooted away from its discovery directory by -f/-p could mark a module that escapes it as covered, skipping that module's own build. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Martin Torp (mtorp)
approved these changes
Oct 8, 2026
Martin Torp (mtorp)
left a comment
Contributor
There was a problem hiding this comment.
Looks good ✅
…eports out of input Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mvn -f sub/x.xml and gradle -p dir wrote the facts file to cwd, where its build-root-relative paths do not resolve. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…onent projects[].id is the build tool's unique project identifier (Maven GAV, Gradle project path, sbt project id) and projects[].manifestFiles lists the project's build files. A dependency on one of the build's own projects is that project's component, sharing its id, so projects sharing a coordinate or a directory stay apart. The compute-artifacts sidecar keys paths and classpaths by id. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s-files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This was referenced Oct 8, 2026
Jeppe Fredsgaard Blaabjerg (jfblaa)
changed the base branch from
v1.x
to
jfblaa/facts-project-ids
October 8, 2026 10:00
Oskar Haarklou Veileborg (BarrensZeppelin)
added this pull request to stack #1592
October 8, 2026 10:38
Producers still write that name, so leaving it out of the reachability upload dropped their dependency graphs. Excluding earlier reports moves to the change that renames producer output. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts: # CHANGELOG.md
# Conflicts: # CHANGELOG.md
…s-files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s-files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…acts-files Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…acts-files # Conflicts: # CHANGELOG.md # src/commands/manifest/scripts/assemble.test.mts
Jeppe Fredsgaard Blaabjerg (jfblaa)
deleted the
jfblaa/named-socket-facts-files
branch
October 9, 2026 15:07
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
Follows #1589, #1590 and #1591, now in
v1.x. Each Maven, Gradle and sbt build now writes its own Socket facts file instead of a shared.socket.facts.json, so builds sharing a directory (Gradle next to Maven,pom.xmlnext toother-pom.xml) no longer overwrite each other. depscan already accepts any*.socket.facts.json.pom.xml.socket.facts.json, orother-pom.xml.socket.facts.jsonformvn -f other-pom.xml. The Maven extension reports that entry POM. Future .NET support fits the same rule (Foo.sln.socket.facts.json).gradle.socket.facts.json,sbt.socket.facts.json.manifestFiles..socket.facts.jsonnext to a newly written file triggers a warning..socket.facts.jsonreport out of its input again, as it did before the facts producers existed. The post-scan deletion stays, since a scan without--reachwould otherwise upload a stale report.Dependencies
v1.x) contains coana-tech/coana-package-manager#2545 (recognises named facts files, REA-894) and coana-tech/coana-package-manager#2547 (keys facts units by facts file, not directory).Testing
-fin the same directory and a subdirectory, two modules in one directory), Gradle (-p,:a:util/:b:utilsharing a GAV), sbt, and recursive discovery with the sidecar.🤖 Generated with Claude Code