Skip to content

Retry the npm tarball fetch long enough to survive real propagation lag - #19

Merged
Mearman merged 1 commit into
mainfrom
fix/npm-tarball-propagation-retry-budget
Sep 12, 2026
Merged

Retry the npm tarball fetch long enough to survive real propagation lag#19
Mearman merged 1 commit into
mainfrom
fix/npm-tarball-propagation-retry-budget

Conversation

@Mearman

@Mearman Mearman commented Sep 12, 2026

Copy link
Copy Markdown
Member

The v2.3.0 release CI run just failed six jobs (Verify npm install on all four platforms, Update Homebrew tap, Verify install.sh (macOS x64)) with the identical symptom: npm view claude-use version and a bare npm install claude-use both correctly resolved 2.3.0, but the tarball at https://registry.npmjs.org/claude-use/-/claude-use-2.3.0.tgz kept 404ing.

Confirmed this wasn't registry downtime before touching anything: npm's own status page reported all systems operational, and both lodash's tarball and claude-use's own previous (2.2.0) tarball resolved instantly the whole time. Polled the exact URL directly — it took just over 7 minutes after npm publish returned success before the tarball actually became downloadable, well past every retry budget in this repo that assumes it (all sized around 90–100 seconds). Once it came back, re-running the failed jobs went green with no other change, confirming this was propagation lag, not a real defect in the published package.

install.sh's macOS x64 fallback (needed because that architecture's SEA binary segfaults on every invocation) had no retry around its npm install call at all — a real user running the installer in that window would hit a hard failure for a release that was, from every other angle, already fully published. Added a retry loop there, and widened the two CI-only budgets (verify-npm's own loop, update-tap's curl fetch for the Homebrew formula's checksum) to the same ~10-minute budget, matching what was actually observed.

Unrelated to #18 — that PR's own release is what surfaced this, but the fix here is a standing CI/install robustness gap, not something #18's own diff caused.

…ion lag

Confirmed directly against the v2.3.0 release: npm's package metadata
and its tarball blob storage are separate backing stores, and the
metadata went live and stayed resolvable (npm view, a bare npm install)
several minutes before the tarball itself stopped 404ing at its own
documented URL. The registry's status page reported no incident, and an
unrelated, long-published package's tarball resolved instantly
throughout, so this was never registry downtime, just the ordinary gap
between the two stores landing further apart than usual.

install.sh's macOS x64 fallback (which needs npm because that
architecture's SEA binary segfaults on every invocation) had no retry
at all around npm install — a real user running this script inside
that window got a hard, unrecoverable failure for a release that was,
from every other angle, already fully published. It now retries for up
to ten minutes, matching what was actually observed rather than a
guess.

Two CI-only checks hit the identical gap with budgets an order of
magnitude too small to survive it: verify-npm's own retry loop (10
attempts, ~100s) and update-tap's curl fetch of the npm tarball for the
Homebrew formula's checksum (12 attempts, ~96s). Both widened to the
same ten-minute budget.
@Mearman
Mearman marked this pull request as ready for review September 12, 2026 07:36
@Mearman
Mearman merged commit 579b7b2 into main Sep 12, 2026
31 checks passed
@Mearman
Mearman deleted the fix/npm-tarball-propagation-retry-budget branch September 12, 2026 07:36
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 12, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
🔒 Security Review Completed 2026-09-12T07:39:51.128740Z 271b3a2 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

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.

1 participant