Repository navigation
fix(pkg): remove the archive size caps from the npm, PyPI and Go wrappers - #2664
Merged
Merged
Conversation
…pers v0.12.0 could not be installed through npm, pnpm, pip or the Go wrapper on any platform (#2657): each wrapper refused an archive member above 256 MiB, and every v0.12.0 binary is 331-335 MB. The v0.11.0 binaries were already about 300 MB, so the Go wrapper, which has had the cap since v0.10.0, was broken before; npm and PyPI gained it in v0.12.0. The archive is verified against the release's checksums.txt before it is unpacked, so a byte cap only ever refused what we ship. - npm, PyPI, Go: delete every byte-size cap (compressed archive, per member, aggregate, checksum manifest, download size). The checksum, the exact member set, path and link refusal, the member count, HTTPS and the --version check stay. - All three honour CBM_DOWNLOAD_URL like install.sh, for testing: https, or plain http to an exact loopback authority with no proxy and no redirect. - Smoke: scripts/smoke-wrappers.sh installs the three wrappers from the checkout against the release fixture and runs the binary each one installed. smoke-test.sh Phase 13w runs it; SMOKE_REQUIRE_WRAPPERS=1 makes it required on the PR smoke lanes and in the release smoke, which gates publishing. Other install paths found broken while checking every channel: - Homebrew: the formula was still at 0.10.3 and installed the dynamic Linux build, which needs glibc 2.38 (Ubuntu 22.04, Debian 12 and RHEL 9 lack it). It now installs 0.12.0 with the static -portable Linux assets and tracks the newest release in the version contract like the other surfaces. - Go: `go install .../pkg/go/cmd/codebase-memory-mcp@vX.Y.Z` never worked (no pkg/go/v* tags, so Go fetched the whole repository, over its 500 MB module limit), and @latest built main's wrapper, whose version constant lags each release. The release now also tags pkg/go/vX.Y.Z, and the wrapper installs its own module version (the constant only for local and untagged builds). - npm: a stable release also moves the `next` dist-tag to itself; `next` still pointed to 0.9.1-rc.1. - Docs: winget and Chocolatey were listed as install channels but are not published; they are removed until they are. Windows arm64 ships and is now listed. Fixes #2657. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
WhaleChao
pushed a commit
to WhaleChao/codebase-memory-mcp
that referenced
this pull request
Oct 16, 2026
The v0.12.1 release smoke failed on every leg in Phase 13w, the package-wrapper install gate added in DeusData#2664: - macOS: the runner images have no Go on PATH, and SMOKE_REQUIRE_WRAPPERS=1 rightly fails without one. pr-smoke and the three release smoke jobs now set up Go from pkg/go/go.mod, with the same pinned step the wrapper test job uses. - Windows: `mkdir -m 700` changes the mode in a second step, which MSYS2 cannot do under the smoke profile's owner-only DACL. mktemp -d sets the mode at creation. - Linux: the runner's older Go downloaded the 1.26.1 toolchain into the smoke profile's HOME. Go writes its module cache read-only, so the harness could not delete its profile afterwards. All Go state now stays in the wrapper's own work tree, and its cleanup restores write permission before removing it. npm and PyPI passed on every leg that reached them; the gate itself is unchanged. Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
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.
Fix: the package wrappers can install the release again (#2657)
Thank you @hydroplexus for the precise report in #2657.
v0.12.0 cannot be installed through npm, pnpm, pip or the Go wrapper on any
platform: each wrapper refuses an archive member above 256 MiB, and every
v0.12.0 binary is 331-335 MB (linux-amd64 331.4, linux-arm64 332.2,
darwin-arm64 334.8, windows-amd64 333.7). The v0.11.0 binaries were already
~300 MB, so the Go wrapper (capped since v0.10.0) was broken before; npm and
PyPI gained the cap in v0.12.0 (52ab4e5).
install.sh,install.ps1,Homebrew, Scoop and winget have no such cap and were never affected.
What changes
pkg/npm/install.js,pkg/pypi/.../_cli.py,pkg/go/.../main.go): every byte-size cap is gone (compressed archive, permember, aggregate, checksum manifest, download size). The archive is still
verified against the release's
checksums.txtbefore it is unpacked, themember set must be exact, paths and links are refused, the member count is
bounded, every hop is HTTPS, and the binary must answer
--version.CBM_DOWNLOAD_URLexactly likeinstall.sh:https://..., or plainhttp://to an exact loopbackauthority, then with no proxy and no redirect. Anything else is refused.
scripts/smoke-wrappers.shinstalls the npm (packedtarball, global install, postinstall), PyPI (venv + pip) and Go (build)
wrappers from the checkout against the release fixture and runs the binary
each one installed.
smoke-test.shPhase 13w runs it on every venue;SMOKE_REQUIRE_WRAPPERS=1makes it required (a missing toolchain fails) onthe PR smoke lanes and in the release smoke, which gates the release draft
and publishing.
Other install paths (checked channel by channel)
dynamic Linux build, which needs glibc 2.38 (fails on Ubuntu 22.04,
Debian 12, RHEL 9). It now installs 0.12.0 with the static
-portableLinux assets (hashes from the release's
checksums.txt) and is areleasesurface in the version contract, so it moves with every release.go install .../pkg/go/cmd/codebase-memory-mcp@v0.12.0fails("module source tree too large"): there are no
pkg/go/v*tags, so Gofetches the whole repository.
@latestbuilds main's wrapper, whoseversion constant lags (it installs 0.11.0). The release now also pushes
pkg/go/vX.Y.Z, and the wrapper installs its own module version (fromdebug.ReadBuildInfo; the constant only for local and untagged builds).next: still pointed to0.9.1-rc.1; a stable release now alsomoves
nextto itself (idempotent, release CI token).(
manifests/d/DeusDatais 404; no community package); removed from theREADME, the site and
llms.txtuntil they are. Windows arm64 ships andis now listed.
install.sh/install.ps1, Scoop (official bucket at0.12.0), the MCP registry, the
.mcpbbundles, Glama/Docker, andupdate(it hands off to the install scripts). AUR is community-maintained(0.11.0). npm 12 blocks install scripts by default; the launcher then
downloads on first run, which works once the caps are gone.
Proof on the shipped artifact
Loopback fixture with the real v0.12.0
darwin-arm64archive (334.8 MBbinary) and the release's
checksums.txt:exceeds the 268435456-byte expanded safety limitchecksum verified,ready, runscodebase-memory-mcp 0.12.0codebase-memory-mcp 0.12.0codebase-memory-mcp 0.12.0Unit suites: npm 20 pass / 3 Windows-only skips, PyPI 45 pass, Go
go vet+go test ./...ok.Not in this PR
pkg/aur, 0.8.1); the published AURpackages are community-maintained.