Skip to content

ci: exclude attestation sidecars from the PyPI artifact-identity assert - #124

Merged
tmatup merged 1 commit into
mainfrom
ci/assert-ignore-attestation-sidecars
Aug 18, 2026
Merged

ci: exclude attestation sidecars from the PyPI artifact-identity assert#124
tmatup merged 1 commit into
mainfrom
ci/assert-ignore-attestation-sidecars

Conversation

@tmatup

@tmatup tmatup commented Aug 18, 2026

Copy link
Copy Markdown
Member

Problem

Release run 32177134404 (v0.10.1, dispatched after #123) published successfully — both distributions are served by PyPI with matching sha256, and both have provenance bundles on the integrity API (/integrity/coder-eval/0.10.1/<file>/provenance → HTTP 200, 1 bundle each). Yet Assert PyPI serves this run's artifacts failed twice (initial run and the skip-existing re-run):

coder_eval-0.10.1-py3-none-any.whl.publish.attestation: not present on PyPI for 0.10.1;
coder_eval-0.10.1.tar.gz.publish.attestation: not present on PyPI for 0.10.1

Cause: gh-action-pypi-publish v1.14+ (pinned by #123) writes <dist>.publish.attestation sidecars into packages-dir before upload. The assert builds its expected set from dist/ contents, and PyPI never serves attestations as distribution files (they live behind the integrity API) — so the sidecars fail the set comparison on every future release, even a perfect one.

Fix

Filter *.publish.attestation out of the local set. The distribution set-equality check — including its planted-extra-wheel direction — is unchanged. (A follow-up could additionally assert provenance presence via the integrity API; deliberately not bundled here to keep the recovery unblocking minimal.)

State

v0.10.1 is complete and attested on PyPI (project latest) but its promote job (GitHub Release + major-tag move) was skipped by the failing assert. Re-runs reuse the original workflow snapshot, so this fix cannot rescue run 32177134404 itself — recovery options are in the PR discussion.

🤖 Generated with Claude Code

https://claude.ai/code/session_01AVJhcHfkcKZEdj2ivLXcbJ

gh-action-pypi-publish v1.14+ writes <dist>.publish.attestation sidecar
files into packages-dir before uploading. The post-publish assert builds
its expected set from dist/ contents, and PyPI serves attestations via
the integrity API rather than as distribution files, so the sidecars can
never appear in the JSON API's urls[] -- the assert now fails on every
release even when the publish is complete and attested. Observed on the
v0.10.1 run (32177134404): both distributions matched by sha256 and both
files have provenance bundles on the integrity API, but the two sidecar
names failed the set comparison twice (initial run and skip-existing
re-run).

Filter *.publish.attestation from the local set; the distribution
set-equality check (including the planted-extra-wheel direction) is
unchanged.

🤖 Generated with Claude Code
Co-Authored-By: [Claude](mailto:noreply@anthropic.com)
@github-actions

github-actions Bot commented Aug 18, 2026

Copy link
Copy Markdown

Claude finished @tmatup's task in 1m 26s —— View job


Code Review in Progress

Todo List

  • Read .github/code_review.md for review standards
  • Read CLAUDE.md for project conventions
  • Review the full diff (git diff origin/main...HEAD)
  • Read the complete release.yml file for context
  • Perform cross-file consistency checks
  • Analyze what's missing
  • Provide structured review feedback

@tmatup
tmatup merged commit 7d8a771 into main Aug 18, 2026
16 checks passed
@tmatup
tmatup deleted the ci/assert-ignore-attestation-sidecars branch August 18, 2026 19: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.

1 participant