Skip to content

fix(release): publish verify uses cargo package, restore CI step (#146)#190

Merged
avrabe merged 1 commit into
mainfrom
fix/publish-verify-cargo-package-146
May 30, 2026
Merged

fix(release): publish verify uses cargo package, restore CI step (#146)#190
avrabe merged 1 commit into
mainfrom
fix/publish-verify-cargo-package-146

Conversation

@avrabe
Copy link
Copy Markdown
Contributor

@avrabe avrabe commented May 30, 2026

Summary

Closes #146. ./publish verify ran cargo publish --dry-run -p <name>, which resolves every workspace dep through the public crates.io index — so on a first publish of a new version the dependents always fail with the chicken-and-egg "dep not yet published" error. That sank the v0.7.0 verify step; PR #144 dropped it entirely, losing the fail-fast metadata/compile check.

cargo package -p <name> resolves through the local path deps (no chicken-and-egg), builds each .crate end-to-end, and catches the real pre-flight surface: missing README/license, bad include/exclude, broken metadata, code that doesn't compile.

Changes

  • scripts/publish.rs::verifycargo package -p <name> (+ header doc)
  • restore the ./publish verify step in publish-to-crates-io.yml, ahead of publish

Validation

  • cargo package resolves for all 11 CRATES_TO_PUBLISH on a clean workspace with no prior version on crates.io (the publish: change ./publish verify to use cargo package (currently dropped; lost the fail-fast metadata check) #146 falsification check — confirmed via --no-verify metadata pass on all 11, + full package+build of the leaf layer locally).
  • Full package+build of all 11 is bounded locally by synth-verify's z3-sys dependency (the known local-build quirk) + build time, so the full verify run is first exercised in CI on the next release tag. Risk is low: cargo package is build + metadata, both of which the publish workflow already does for cargo publish, and the step runs before upload so a failure blocks cleanly with nothing partially published.

Notes

Closes #146.

🤖 Generated with Claude Code

`./publish verify` ran `cargo publish --dry-run -p <name>`, which resolves every
workspace dep through the public crates.io index — so on a first publish of a
new version the dependents always fail with the chicken-and-egg "dep not yet
published" error. That sank the v0.7.0 verify step; PR #144 dropped it entirely,
losing the fail-fast metadata/compile check.

Switch verify() to `cargo package -p <name>`: it resolves through the local path
deps (no chicken-and-egg), builds each .crate end-to-end, and catches the real
pre-flight surface — missing README/license, bad include/exclude, broken
metadata, code that doesn't compile. Verified `cargo package` resolves for all
11 CRATES_TO_PUBLISH on a clean workspace with no prior version on crates.io.

Restore the `./publish verify` step in publish-to-crates-io.yml ahead of the
publish step. (publish=false crates like synth-abi aren't in CRATES_TO_PUBLISH,
so the synth-wit-version quirk noted in #146 is not hit by the verify pass.)

Tooling only — scripts/publish.rs is not a published crate, so this merges to
main without a crates.io version bump.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@codecov
Copy link
Copy Markdown

codecov Bot commented May 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@avrabe avrabe merged commit 8906ce2 into main May 30, 2026
9 checks passed
@avrabe avrabe deleted the fix/publish-verify-cargo-package-146 branch May 30, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

publish: change ./publish verify to use cargo package (currently dropped; lost the fail-fast metadata check)

1 participant