GeezerVison is showing github.com — feat: promote maven and nuget to fully available — retire the SOCKET_EXPERIMENTAL_* gates by mikolalysenko · Pull Request #170 · SocketDev/socket-patch
Conversation
Summary
Maven and NuGet were the last two ecosystems behind runtime opt-ins: the SOCKET_EXPERIMENTAL_MAVEN / SOCKET_EXPERIMENTAL_NUGET env gates silently dropped them from discovery in every flow — scan (all modes), apply, get, rollback, vendor, repair, vex, setup. This PR retires the gates entirely: both ecosystems now crawl and patch unconditionally, like everything else. Setting the old env vars is harmless but does nothing.
Product changes
ecosystem_dispatch.rs: the gates, the "N patch(es) skipped — support is experimental" warnings, and env_truthy are deleted. Maven/NuGet become plain scan_ecosystem! / crawl! branches. crawl_covers_purl now only exempts pkg:<type>/s this build has no crawler for (the newer-CLI-in-a-committed-manifest case).
- Prune GC:
scan --prune/--sync now judges maven/nuget manifest entries like any other ecosystem's. While the gate was closed they were exempt from pruning; with the crawl always on, "absent from the scan" genuinely means uninstalled.
Behavior notes
- A default
scan now walks the local Maven repository (~/.m2 / MAVEN_REPO_LOCAL) and the NuGet caches.
- The in-place sidecar caveat is unchanged and now documented per mode in
docs/ecosystems.md: agent-mode patching leaves Maven's .jar.sha1/.jar.md5 stale, and NuGet's post-apply fixup deletes .nupkg.metadata + raises an advisory for the signed-package .nupkg.sha512 marker. The vendored/hosted modes never touch the caches.
- Follow-up worth considering: Maven has no entry in
patch/sidecars/ (not even advisory-only, unlike pypi/gem/go) — with in-place maven apply now ungated, an advisory-only maven fixup would give downstream tooling the same structured signal nuget emits.
Tests
- The four
#[ignore = "experimental ecosystem"] dispatch e2e tests (dispatch_branch_{maven,nuget}, rollback_dispatch_branch_{maven,nuget}) are un-ignored — they now gate CI and pass.
- Every
SOCKET_EXPERIMENTAL_* export/set is stripped from the suites: docker capstones, the setup-matrix driver (run-case.sh), and the rollback / remote-apply / safety-advisory / dispatch fixtures.
- New pins:
crawl_all_includes_every_ecosystem_unconditionally — a resurrected runtime gate turns this red.
find_packages_resolves_maven_without_any_opt_in — the PURL-lookup path resolves a local-repo maven artifact with no env.
detect_prunable_judges_maven_and_nuget_like_any_ecosystem — replaces the old gate-exemption GC test.
scan_discovers_maven_and_nuget_in_every_mode (in-process) — default, --mode hosted, and --mode vendored scans all POST the maven/nuget purls to the batch endpoint with no opt-in.
Docs
README, docs/ecosystems.md (matrix rows now unconditional with the sidecar caveat; the "discovery gate" blockquote replaced), CLI_CONTRACT.md env-table rows removed, both crates' Cargo.toml comments, and a CHANGELOG entry (two older [Unreleased] passages amended so the section doesn't contradict itself at release time).
Verification
- Full workspace test suite: green. Clippy: clean.
- All four maven/nuget docker capstones pass against freshly built images (the suites bake the binary at image-build time, so stale local images still carry the gated binary — rebuild
Dockerfile.base before running them locally):
maven_install_full_apply_chain, nuget_{local,global}_install_full_apply_chain — agent-mode scan→apply→vex chains, now with no -e SOCKET_EXPERIMENTAL_* in the container env.
maven_vendor_fresh_checkout_install_and_revert, nuget_vendor_fresh_checkout_install_and_revert — vendor capstones with the exports removed from the stage scripts.
🤖 Generated with Claude Code
Note Medium Risk
Behavior change for operators who relied on gates to skip maven/nuget crawls and prune exemptions; in-place agent apply for those ecosystems still leaves cache checksum sidecars stale, now reachable without opt-in.
Overview
Maven and NuGet are always discovered and patched — the SOCKET_EXPERIMENTAL_MAVEN / SOCKET_EXPERIMENTAL_NUGET runtime gates are removed from ecosystem_dispatch.rs (including experimental skip warnings and env_truthy). scan, apply, get, rollback, vendor, repair, vex, and setup now crawl ~/.m2 / MAVEN_REPO_LOCAL and NuGet caches like other ecosystems; setting the old env vars has no effect.
Prune/sync behavior changes: crawl_covers_purl no longer exempts maven/nuget when gates were off, so scan --prune / --sync can drop manifest entries for maven/nuget packages absent from the crawl.
Tests and docs: Four maven/nuget dispatch e2e tests are un-#[ignore] for CI; docker/setup-matrix and other suites drop experimental env exports. New regression tests pin unconditional crawl, maven lookup without opt-in, prune GC for maven/nuget, and batch discovery in default/hosted/vendored scan modes. README, docs/ecosystems.md, CLI_CONTRACT.md, and CHANGELOG reflect full availability and document unchanged in-place cache sidecar caveats (vendored/hosted still avoid touching caches).
Reviewed by Cursor Bugbot for commit 38a389b. Configure here.
Sorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.
…EXPERIMENTAL_* gates
Maven and NuGet were the last two ecosystems behind runtime opt-ins:
the SOCKET_EXPERIMENTAL_MAVEN / SOCKET_EXPERIMENTAL_NUGET env gates
silently dropped them from discovery in every flow (scan in all modes,
apply, get, rollback, vendor, repair, vex, setup). The gates are gone;
both ecosystems now crawl and patch unconditionally, like everything
else.
Product:
- ecosystem_dispatch: delete the gates, the "N patch(es) skipped —
support is experimental" warnings, and env_truthy; maven/nuget become
plain scan_ecosystem!/crawl! branches; crawl_covers_purl now only
exempts ecosystems this build has no crawler for.
- scan --prune/--sync now judges maven/nuget manifest entries like any
other ecosystem's (they were exempt from pruning while the gate was
closed).
Tests:
- Un-ignore the four "experimental ecosystem" dispatch e2e tests
(dispatch_branch_{maven,nuget}, rollback_dispatch_branch_{maven,nuget})
— they now gate CI and pass.
- Strip every SOCKET_EXPERIMENTAL_* export/set from the suites (docker
capstones, setup-matrix driver, rollback / remote-apply / advisory /
dispatch fixtures).
- New pins: crawl_all_includes_every_ecosystem_unconditionally,
find_packages_resolves_maven_without_any_opt_in,
detect_prunable_judges_maven_and_nuget_like_any_ecosystem, and an
in-process scan test proving default + hosted + vendored scans all
POST the maven/nuget purls with no opt-in.
Docs: README, docs/ecosystems.md (matrix rows now unconditional, with
an honest in-place sidecar caveat: maven .jar.sha1/.md5 left stale;
nuget fixup deletes .nupkg.metadata and advises on .nupkg.sha512),
CLI_CONTRACT env-var rows removed, both Cargo.toml comments, CHANGELOG
entry (+ two older Unreleased passages amended to match).
Verified: full workspace suite green, clippy clean, and the four
maven/nuget docker capstones (agent apply chains + vendor fresh-checkout
/ revert) pass against freshly built images.
Co-Authored-By: Claude Fable 5 <[email protected]>
…y layout
The fixture laid the package out as packages/Foo/1.0.0/, which is
neither the legacy packages.config layout (packages/Foo.1.0.0/, dotted,
case-preserved) nor the global-cache layout (both segments lowercased).
The crawler's lowercase global-cache probe only matched it on
case-insensitive filesystems — green on macOS/Windows, red on Linux CI,
which is exactly why this test sat behind #[ignore] before the
promotion. Write the dotted legacy dir the exact-case probe matches on
every filesystem.
Co-Authored-By: Claude Fable 5 <[email protected]>
…ile for #158's empty-record guard)
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 13, 2026
Uh oh!
There was an error while loading. Please reload this page.
Assignees
No one assigned
Milestone
No milestone
Development
Successfully merging this pull request may close these issues.
Uh oh!
There was an error while loading. Please reload this page.
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.
|