Goal
Ensure a published base-cli release cannot have its artifact bytes silently replaced after publication.
Background
The package workflow currently uploads release assets with gh release upload --clobber. That can make a rerun convenient, but it conflicts with the immutable published-release policy used by base-demo and with the provenance model required for reproducible ecosystem releases. An existing release should either be proven identical or require a new version.
Scope
- Remove unconditional
--clobber behavior for published release assets.
- Fail closed when an existing asset has different bytes, filename identity, or checksum.
- Allow an idempotent rerun only when the existing asset is byte-for-byte identical and the release/tag identity matches.
- Require a new patch version for corrections to published assets.
- Update release documentation, workflow tests, and the cross-repository release policy.
- Preserve trusted publishing, SBOM, checksum, and attestation behavior.
Acceptance Criteria
- A release job cannot overwrite a different existing asset.
- A rerun with identical assets succeeds without changing release history.
- A mismatched asset produces a clear failure with the expected and observed checksums.
- A tag, version, release, asset, SBOM, and provenance identity are checked together.
- Negative fixtures cover changed bytes, changed filenames, changed tag target, and rerun behavior.
- Release documentation states the correction path as a new patch release.
Validation
- Run the package workflow contract and release metadata tests.
- Rehearse first-publication, identical-rerun, and mismatched-rerun cases in a temporary release fixture.
- Verify the resulting behavior matches base-demo and the ecosystem release BOM policy.
git diff --check.
Non-Goals
- Do not replace trusted PyPI publishing or artifact attestations.
- Do not block a safe pre-publication build retry that has not created a public release.
- Do not alter already-published historical assets.
Project Fields
- Status: Backlog
- Priority: P1
- Size: M
- Area: Packaging
- Initiative: v1.0 Readiness
Ownership
Related: #271, #307, and basefoundry/base#2115.
Goal
Ensure a published base-cli release cannot have its artifact bytes silently replaced after publication.
Background
The package workflow currently uploads release assets with
gh release upload --clobber. That can make a rerun convenient, but it conflicts with the immutable published-release policy used by base-demo and with the provenance model required for reproducible ecosystem releases. An existing release should either be proven identical or require a new version.Scope
--clobberbehavior for published release assets.Acceptance Criteria
Validation
git diff --check.Non-Goals
Project Fields
Ownership
Related: #271, #307, and basefoundry/base#2115.