Repository navigation
fix(publish): survive npm tarball lag and slow Rekor - #267
Merged
BleedingDev merged 3 commits intoOct 29, 2026
Merged
Conversation
npm can list a freshly published version, and even move `latest` to it, before its tarball URL stops answering 404. The publish preflight treated that as a hard failure, so cohort 3.9.3-ultramodern.14 stopped twice on `tsconfig` and `renderer-core` until the registry caught up. A 404, 429 or 5xx tarball response is now retried for about two minutes; a byte mismatch or any other status still fails at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Rsdoctor Bundle Diff Analysis📊 Quick Summary
Generated by Rsdoctor GitHub Action |
When Rekor answers slowly, the Sigstore client retries an entry it already logged and fails with "409 an equivalent entry already exists" before npm sees the publish. Three attempts 15 seconds apart were not enough during the 3.9.3-ultramodern.14 publication. Six attempts now wait 15, 30, 45, 60 and 75 seconds; each attempt signs afresh, and non-transient errors still fail at once. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
libnpmpublish passes its options to sigstore.attest, and sigstore gives Rekor 5 seconds by default without fetching an entry on conflict. During 3.9.3-ultramodern.14, Rekor logged server-runtime's entry two seconds into a try but answered after the client gave up, so its own retry hit "409 an equivalent entry already exists" on all six tries across two runs. Publishing now passes timeout: 300000, npm-registry-fetch's own default, so signing waits as long as the registry upload does. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.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.
Why the change
Cohort
3.9.3-ultramodern.14stopped six times while publishing. npm briefly listed versions whose tarballs still answered 404, and Sigstore gave Rekor only 5 seconds, so a slow Rekor turned eachserver-runtimepublish into a fatal "409 equivalent entry already exists".Special things to note
sigstoreusesDEFAULT_TIMEOUT = 5000andfetchOnConflict: false. Rekor logged the entry 2 seconds into the try, answered after the client gave up, and the client's own retry then hit 409.libnpmpublishpasses its options tosigstore.attest, sotimeout: 300000(npm-registry-fetch's own default) reaches Rekor and Fulcio..14finishes with a recovery run (recovery_run_id=40881100403, attempt 1). It reuses the accepted bundle and the 34 packages already on npm.Change outline
What run 40881100403 hit:
Validation:
🤖 Generated with Claude Code