feat: promote maven and nuget to fully available — retire the SOCKET_EXPERIMENTAL_* gates - #170
Merged
Merged
Conversation
…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 <noreply@anthropic.com>
Mikola Lysenko (mikolalysenko)
enabled auto-merge (squash)
August 13, 2026 21:16
…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 <noreply@anthropic.com>
…ile for #158's empty-record guard)
Wenxin Jiang (Wenxin-Jiang)
approved these changes
Aug 13, 2026
This was referenced Aug 13, 2026
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.
Summary
Maven and NuGet were the last two ecosystems behind runtime opt-ins: the
SOCKET_EXPERIMENTAL_MAVEN/SOCKET_EXPERIMENTAL_NUGETenv 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, andenv_truthyare deleted. Maven/NuGet become plainscan_ecosystem!/crawl!branches.crawl_covers_purlnow only exemptspkg:<type>/s this build has no crawler for (the newer-CLI-in-a-committed-manifest case).scan --prune/--syncnow 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
scannow walks the local Maven repository (~/.m2/MAVEN_REPO_LOCAL) and the NuGet caches.docs/ecosystems.md: agent-mode patching leaves Maven's.jar.sha1/.jar.md5stale, and NuGet's post-apply fixup deletes.nupkg.metadata+ raises an advisory for the signed-package.nupkg.sha512marker. The vendored/hosted modes never touch the caches.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
#[ignore = "experimental ecosystem"]dispatch e2e tests (dispatch_branch_{maven,nuget},rollback_dispatch_branch_{maven,nuget}) are un-ignored — they now gate CI and pass.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.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 vendoredscans 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.mdenv-table rows removed, both crates'Cargo.tomlcomments, and a CHANGELOG entry (two older[Unreleased]passages amended so the section doesn't contradict itself at release time).Verification
Dockerfile.basebefore 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_NUGETruntime gates are removed fromecosystem_dispatch.rs(including experimental skip warnings andenv_truthy).scan,apply,get,rollback,vendor,repair,vex, andsetupnow crawl~/.m2/MAVEN_REPO_LOCALand NuGet caches like other ecosystems; setting the old env vars has no effect.Prune/sync behavior changes:
crawl_covers_purlno longer exempts maven/nuget when gates were off, soscan --prune/--synccan 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.