Build fail-closed release pipeline - #135
Conversation
Review: Build fail-closed release pipeline (#135)OverviewThis PR adds Strengths
Issues / Suggestions
Minor / Nits
Overall this is a well-structured, appropriately paranoid release pipeline consistent with the repo's stated security posture. My main actionable ask is #1 (don't let the |
Review: Build fail-closed release pipeline (#135)Solid, well-documented addition that matches the repo's existing fail-closed conventions (pinned action SHAs, Main concern: temporary
|
Review: fail-closed release pipeline (#135)This is a large, careful piece of work — a full non-publishing rehearsal + tag-only Trusted Publishing workflow, a deterministic artifact-building/verification script, and thorough tests. Overall design quality is high and matches the repo's fail-closed, exact-identity conventions. Notes below. Strengths
Things worth double-checking before merge
Nits (non-blocking)
No correctness bugs found in the Python logic itself (tag/checksum/provenance/SBOM verification all look sound), and I didn't find command-injection, path-traversal, or SSRF issues — subprocess calls use argument lists (no |
Summary
releaseenvironment, with immutable-release-first same-tag recoveryLocal validation
Hosted acceptance still to record
The draft remains open while the full hosted non-publishing matrix and deliberate red injections run. The crates.io Trusted Publisher registration and GitHub future-release immutability switch also remain fail-closed external prerequisites because no controllable signed-in browser is attached.
Closes #63