Parent: #27. Follow-up to #154 and failed beta tag workflow 29367518390.
Incident
Signed tag v0.3.0-beta.1 passed GitHub tag verification, and the release job built archives, SBOMs, Sigstore bundles, and attestations into a draft. The final beta publication step failed safely because GET /releases/tags/{tag} returned 404 for the draft release, leaving it unpublished. Latest stable v0.2.1 was not changed.
Scope
- Resolve the draft release through
gh release view <tag> --json databaseId, which can read the workflow-created draft, then patch that ID with draft=false, prerelease=true, and API string make_latest=false.
- Tighten the policy test to require the draft-safe lookup.
- Preserve all tag classification, signed/annotated/main ancestry gates, stable release behavior, and immutable recovery.
- Publish a new signed immutable
v0.3.0-beta.2 only after the correction is proven through dev -> main; do not rewrite, delete, or force-push v0.3.0-beta.1.
Acceptance
- A beta draft can reach the final publication call without tag-lookup 404.
- The released beta is a GitHub prerelease and does not replace the latest stable release.
- Failed beta.1 remains unpublished and untouched.
Refs: #154, #156, #157.
Parent: #27. Follow-up to #154 and failed beta tag workflow
29367518390.Incident
Signed tag
v0.3.0-beta.1passed GitHub tag verification, and the release job built archives, SBOMs, Sigstore bundles, and attestations into a draft. The final beta publication step failed safely becauseGET /releases/tags/{tag}returned 404 for the draft release, leaving it unpublished. Latest stablev0.2.1was not changed.Scope
gh release view <tag> --json databaseId, which can read the workflow-created draft, then patch that ID withdraft=false,prerelease=true, and API stringmake_latest=false.v0.3.0-beta.2only after the correction is proven throughdev -> main; do not rewrite, delete, or force-pushv0.3.0-beta.1.Acceptance
Refs: #154, #156, #157.