Commit 72fbf3d
build(sdist): drop .github/workflows so CI-only commits stop moving the sdist hash
The sdist whitelist included `/.github/workflows`, which meant any commit touching CI changed the sdist for an otherwise-unchanged package. That defeats `uv publish --check-url`: it compares the freshly-built file against the index and errors on a mismatch, so a version already on PyPI can no longer be recognized as already-published.
v1.5.0 is the worked example. It was published by hand from the release commit, then #57 added `--check-url` to publish.yml — a workflow-only change that nonetheless altered the sdist, because the workflow file ships inside it. The Release's publish run skipped the wheel correctly ("already exists, skipping") and then failed on the sdist with a sha256 mismatch. No tag target could have avoided it: the release event takes both the workflow and the checkout from the tagged commit, so tagging the pre-fix commit runs a publish without `--check-url` and fails on the duplicate instead.
CI definitions are not buildable-from-source content — nobody runs this project's GitHub Actions from a PyPI tarball — so the entry bought nothing and cost hash stability.
Verified: building the sdist, appending a line to `.github/workflows/lint.yml`, and rebuilding now produces an identical sha256, where before the hash moved. `uv build` still builds the wheel from the sdist, so the whitelist remains complete.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>1 parent 83c3003 commit 72fbf3d
1 file changed
Lines changed: 7 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
126 | 126 | | |
127 | 127 | | |
128 | 128 | | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
129 | 136 | | |
130 | 137 | | |
131 | 138 | | |
132 | 139 | | |
133 | 140 | | |
134 | 141 | | |
135 | | - | |
136 | 142 | | |
137 | 143 | | |
138 | 144 | | |
| |||
0 commit comments