ReviewOS

pantry-pm/pantry

publish --npm fails a release whose upload npm accepted but hasn't shown yet

#245
Closed chris opened this 8 days ago ·
8 days ago

pantry publish --npm exits 1 when npm accepts the upload but confirmPublication doesn't see the version within npm_publish_timeout_ms. In a release workflow, that skips every step after it, so the release binaries and the GitHub Release are never made, even though the version does go live.

Seen: stacksjs/bun-query-builder Releaser run 39184733210 (v0.3.14, 2026-10-19):

01:23:10  Registry: https://registry.npmjs.org
01:25:30  Upload accepted; publication is pending public metadata and verified tarball availability. Do not upload this version again.
##[error]Process completed with exit code 1.

bun-query-builder@0.3.14 appeared on npm about a minute later, with the integrity of the tarball that run built. Build Release Binaries and Create GitHub Release were skipped, so v0.3.14 has no GitHub Release. Re-running the workflow would upload again, which the message itself says not to do. npm's lag is often longer than this: Craft releases have waited around 25 minutes.

Where: packages/zig/src/cli/commands/package.zig, the confirmPublication(...) checks around lines 1284 and 1531 (and the OIDC and claimed-version paths at 1158, 1318 and 1557).

What would fix it (any of these, ideally the first two):

  1. Treat an accepted upload as published, and finish verifying it separately. Exit 0 with a warning when confirmation times out, or give it its own exit code that the action treats as success. Then the steps after it still run.
  2. Wait longer, with backoff, for npm's metadata (on the order of 10 to 30 minutes, configurable, e.g. --confirm-timeout), since npm's lag regularly passes 2 minutes.
  3. Add a pantry publish --verify-only <name>@<version> so a workflow can be re-run without uploading again: it confirms the version is live and the later steps go ahead.

Sign in to comment on this issue.