@@ -171,10 +171,13 @@ version**. Not every failure burns the version — distinguish:
171171
172172- ** Burned** : a lifecycle-gate failure caused by defective candidate
173173 bytes after TestPyPI accepted them, an index deviation from the
174- ** original accepted anchor** (subset/extra/yanked/digest mismatch),
175- or any reconciler burn state (` empty-release ` , ` testpypi-partial ` ,
176- ` partial ` , ` missing-release ` ). Bump the version, rebuild, re-tag.
177- Never re-upload, never re-tag an image (staging and public tags are
174+ ** original workflow build anchor** (subset/extra/yanked/digest
175+ mismatch — including pre-existing files found on the FIRST attempt,
176+ where the current distributions are that anchor and the conflicting
177+ filenames can never be replaced), or any reconciler burn state
178+ (` empty-release ` , ` testpypi-partial ` , ` partial ` ,
179+ ` missing-release ` ). Bump the version, rebuild, re-tag. Never
180+ re-upload, never re-tag an image (staging and public tags are
178181 immutable — enforced at the repository level).
179182- ** NOT burned** : a transient job failure, a lost upload response, or
180183 a ` finalize ` failure while the index carries the EXACT anchor bytes
@@ -185,9 +188,9 @@ version**. Not every failure burns the version — distinguish:
185188 rebuilt bytes cannot match what an index accepted, so the guard
186189 refuses the rebuilt attempt — abandon it and return to the
187190 ** original** workflow run, which remains recoverable (its draft and
188- artifact are preserved). A burn is asserted only when the index
189- deviates from the ORIGINAL accepted anchor, never merely from a
190- newly rebuilt one.
191+ artifact are preserved). A burn is asserted only against the
192+ ORIGINAL workflow build anchor, never merely against a newly
193+ rebuilt one.
191194
192195## Verifying the release
193196
0 commit comments