fix(release): scope sqlrite-engine crate with include allowlist (fixes crates.io 413)#154
Merged
Merged
Conversation
…tes.io 413) The `sqlrite-engine` crate publish for v0.11.0 was rejected by crates.io: status 413 Payload Too Large: max upload size is: 10485760 The package root is the workspace root and the engine [package] had no `include`/`exclude`, so `cargo publish` swept the ENTIRE repo tree — every sibling member plus `web/`, `images/`, and the journal example's demo media. After SQLR-42 (web/public/playground/pkg/*.wasm, 2.1 MiB) and SQLR-43 (examples/desktop-journal/docs/demo.gif 9 MiB + demo.mp4 8.7 MiB + screenshots) landed since v0.10.2, the uncompressed tarball hit ~25 MiB and blew the 10 MiB cap. Patch releases before that stayed under the limit, which is why this is the first time it broke. Fix: add an `include` allowlist so only the library/REPL sources, the three declared `[[example]]` targets (their .rs files must be in the tarball or `cargo publish`'s verify step can't parse the manifest), and the readme/license ship. An allowlist beats `exclude` here because new large files anywhere in the repo can't silently re-bloat the crate. Verified locally: `cargo package -p sqlrite-engine` produces a 376 KiB .crate (down from ~25 MiB uncompressed) and the packaged crate compiles clean against the already-published sqlrite-ask 0.11.0. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Jun 1, 2026
Merged
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.
Problem
The v0.11.0 publish run failed at Publish sqlrite crate to crates.io (run 26738895572):
That cascaded:
sqlrite-mcp(needs the engine) and the umbrella finalize were skipped.Root cause
The engine
[package]is the workspace root and had noinclude/exclude, socargo publishpackaged the entire repo tree. Uncompressed it was ~25 MiB, dominated by files that have no business in the library crate:examples/desktop-journal/docs/demo.gifexamples/desktop-journal/docs/demo.mp4web/public/playground/pkg/sqlrite_wasm_bg.wasmimages/, …SQLR-42 and SQLR-43 are exactly the two PRs merged since v0.10.2, which is why the previous (patch) releases stayed under the 10 MiB cap and this minor release was the first to trip it.
Fix
Add an
includeallowlist to the engine[package]— ship onlysrc/**, the three declared[[example]]targets, README, and LICENSE. An allowlist (vs. a fragileexcludelist) means future large files anywhere in the repo can't silently re-bloat the crate.The three
[[example]].rsfiles are included deliberately: their paths are declared as targets inCargo.toml, so they must exist in the tarball orcargo publish's verify step fails to parse the manifest.Verification (local)
cargo package -p sqlrite-engine→ 376 KiB.crate(was ~25 MiB uncompressed) and the packaged crate compiles clean against the already-publishedsqlrite-ask 0.11.0.src/**+ the 3 example targets + README/LICENSE (+ cargo's auto Cargo.toml/Cargo.lock). No media, noweb/, noimages/.How the v0.11.0 release gets completed after this merges
sqlrite-ask,@joaoh82/sqlrite,@joaoh82/sqlrite-wasm, Python wheels (PyPI), C FFI, the Go SDK, and the desktop apps already published at 0.11.0. Onlysqlrite-engine+sqlrite-mcpare missing. A fullrelease.ymlre-dispatch would collide with those already-published artifacts (the npm/PyPI/etc. jobs have no already-exists guard), so the missing two are published surgically from fixedmain:Follow-ups filed separately: make
release.ymlpublish jobs idempotent (skip-if-already-published) so partial-failure recovery is a clean re-dispatch; set up thesqlrite-notesnpm trusted publisher; consider moving the journal demo media out of the repo.🤖 Generated with Claude Code