fix(notify): read draft assets by release ID - #120
Conversation
Resolve staged helper releases through GraphQL so rollout can read a private draft before finalization. Download only validated asset IDs, verify server digests locally, and keep finalization retries draft-aware without changing permissions or publication semantics.
📝 WalkthroughWalkthroughRelease rollout and finalization now retrieve individual assets through GraphQL-resolved IDs and validate their digests. Publish-safety checks enforce these read-only retrieval patterns and reject bulk release downloads. ChangesRelease asset safety
Estimated code review effort: 4 (Complex) | ~45 minutes Possibly related PRs
Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 7✅ Passed checks (7 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review |
✅ Action performedReview finished.
|
|
@coderabbitai review |
✅ Action performedReview finished.
|
Summary
Failure evidence
Recovery publication run
29339718813was bound tomain@f3a823d5b9c29764c2e89e90c23254736e4598c7. Policy, notify, owner, immutable image, binary attestation, and binary staging gates succeeded. The private draft received exactly nine expected pre-rollout assets with verified digests.Published Helper Rolloutthen failed in its first read-only step becausegh release download notify-v2.0.0uses a tag-based REST lookup that does not see draft releases. No helper container, upgrade, downgrade, forward recovery, rollout evidence, finalization, or public release occurred. Draft353712477remains private with those nine assets.Security and compatibility
contents: read; finalization permissions and every owner/ref/predecessor gate are unchanged;Verification
ruby -c .github/scripts/notify-publish-safety.rbruby .github/scripts/notify-publish-safety.rbcd notify && GOTOOLCHAIN=local go test ./... -count=1zizmor --offline .github/workflows/docker.yml1.26.1: no findings353712477: nine asset-ID downloads, API/local digest equality, all fiveSHA256SUMSchecks, and exact manifest source/image bindinggit diff --checkRelease truth
Helper publication remains incomplete. The release is still a private draft and the real published-image upgrade, rollback, forward-recovery, finalization, and public verification gates must still succeed.