fix(manifest): merge JVM facts components by coordinate - #1557
Merged
Jeppe Fredsgaard Blaabjerg (jfblaa) merged 3 commits intoSep 24, 2026
Merged
Conversation
Jeppe Fredsgaard Blaabjerg (jfblaa)
requested a review
from Martin Torp (mtorp)
September 24, 2026 18:29
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/facts-merge-by-coordinate
branch
from
September 24, 2026 20:13
f938699 to
673a45f
Compare
Drop the path-sensitive subtree hashing and `resolvedAs` from .socket.facts.json and write it compact. The Socket backend never used the per-path precision, and it inflated facts files for large builds. Reachability still needs each subproject's exact classpath, so the compute-artifacts sidecar now carries `projects[].classpath`: the component ids resolved for that subproject across all its configurations.
A facts file carried no trace of which CLI release generated it, so a stale file uploaded by a newer CLI was indistinguishable from fresh output.
Jeppe Fredsgaard Blaabjerg (jfblaa)
force-pushed
the
jfblaa/facts-merge-by-coordinate
branch
from
September 24, 2026 20:17
673a45f to
87e4447
Compare
Jeppe Fredsgaard Blaabjerg (jfblaa)
marked this pull request as ready for review
September 24, 2026 20:20
Jeppe Fredsgaard Blaabjerg (jfblaa)
deleted the
jfblaa/facts-merge-by-coordinate
branch
September 24, 2026 20:21
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.
What
.socket.facts.jsoncomponents by coordinate. This drops the path-sensitive<coordId>#<hash>ids andresolvedAs, which only existed to reconstruct per-path subtrees..socket.facts.jsoncompact instead of pretty-printed.metadata.socketCliVersion, so a stale facts file can be told apart from fresh output.projects[].classpathto the compute-artifacts sidecar only. It lists the component ids resolved for each subproject across all of its configurations.@coana-tech/clito 15.10.55.Why
Large JVM builds produced very large facts files, which made uploads slow and unreliable. A quick test of this restructure on a large build cut a facts file by roughly 80%. The Socket backend never used the per-path precision. Reachability does need each subproject's exact classpath, and the sidecar now carries it explicitly. It never goes into the uploaded file.
Release coordination
Requires
@coana-tech/cli15.10.55 (coana-tech/coana-package-manager#2482), which this PR bumps to. Coana's sidecar schema is strict, so earlier versions would reject the newclasspathfield. Don't release this without that bump.Testing
classpathentriesresolvedAs, it carriessocketCliVersion, and a module's sidecar classpath includes its sibling module.🤖 Generated with Claude Code
Note
Medium Risk
Changes the JVM facts SBOM shape and the Coana sidecar contract for reachability classpaths; requires coordinated release with @coana-tech/cli 15.10.55.
Overview
JVM
.socket.facts.jsonoutput is restructured so Maven, Gradle, and sbt manifests are much smaller: dependency components are merged by coordinate instead of path-sensitivecoordId#hashids, andprojects[].resolvedAsis removed from the uploaded SBOM. When the same coordinate resolves with different subtrees across subprojects, one shared component now lists the union of child dependencies.Facts files are written compact (not pretty-printed), and
metadata.socketCliVersionis stamped when the built CLI inlines its version so stale artifacts are identifiable.Reachability still needs each subproject’s full resolved classpath; that detail moves to the compute-artifacts sidecar only as
projects[].classpath, built from new in-memoryclasspathByProjectdata during assembly.@coana-tech/cliis bumped to 15.10.55, which must accept the new sidecar field.Reviewed by Cursor Bugbot for commit 87e4447. Configure here.