Repository navigation
Verify public PyPI artifacts after automated upload - #23
Merged
Merged
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
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.
The first automated DRDID 1.1.7 upload succeeded while PyPI's version endpoint briefly returned a cached 404. With
skip-existing, a rapid same-version update could otherwise finish successfully before proving that the public files match the tested build.Require a read-only check after upload: both public distributions must pass the existing source, metadata and digest validators, and both filenames, URLs and SHA256 digests must appear in PyPI's Simple index. Retry only missing or partially visible publication states, using six attempts with 5, 10, 20, 40 and 60 seconds between them; each request retains its 30-second timeout. Visible mismatches and yanked files fail immediately, and the publish job has a separate 20-minute timeout.
Preserve the tested distributions before the upload action adds attestation sidecars, so the readback keeps the strict two-artifact input contract. Existing CI gates, exact-SHA checkout, OIDC permissions and upload-failure behavior are unchanged. There are no runtime or version changes.
Validation:
git diff --checkpass.PyPI uploads files separately. This check cannot roll back a partial upload or prevent an installer from observing one temporarily. Matching partial releases can be retried; different immutable source requires a new version.
Activation verified: merged as
a19caaca60f1616acbec9676117807774982c80f; all four main checks passed. Automatic idempotent publisher passed the existing-artifact preflight, exact-main CI recheck, skip-existing upload, candidate snapshot, and public artifact/Simple-index readback. Existing DRDID 1.1.7 SHA256 digests and original upload timestamps remain unchanged. No manual dispatch or rerun was used.