fix(ci): recover tag-bound helper attestation - #124
Merged
Conversation
Make the tag-bound binary attestation job survive the intentionally skipped recovery branch while still requiring every upstream safety gate to succeed. Advance the unused release path to 2.0.2, retain the partial 2.0.1 image immutably as non-release evidence, and keep 2.0.0 as the scheduled-scan fallback and 1.8.0 as rollback.
psimaker
marked this pull request as ready for review
July 14, 2026 18:56
📝 WalkthroughWalkthroughThe notify helper release was advanced from 2.0.1 to 2.0.2 across release metadata, image consumers, security scanning, publication gates, tests, and rollout documentation. Binary attestation now explicitly requires successful image readiness. ChangesNotify 2.0.2 release
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
skipped recovery branch while requiring every upstream safety gate to succeed
the partial 2.0.1 publication
baseline
Failure and fix
Owner-gated publication run 29358780832 published and selected the immutable
2.0.1 image, but GitHub skipped
Attest Release Binariesbecause its upstreamselector aggregates an intentionally skipped recovery branch with
always().The downstream job now uses
always()as well and explicitly requires thepublish-safety policy, notify guard, owner publish gate, and immutable image
selector to have succeeded.
The policy test enforces all five condition fragments so a later workflow edit
cannot revive the skip or weaken the safety dependencies.
Scope
This change only affects helper publication workflow control, release pins, and
publication documentation. It does not change helper runtime behavior, D024,
application runtime, relay behavior, or wire compatibility.
Local verification
ruby -c .github/scripts/notify-publish-safety.rbruby .github/scripts/notify-publish-safety.rbgo run github.com/rhysd/actionlint/cmd/actionlint@v1.7.12uvx --from zizmor==1.27.0 zizmor .github/workflows/docker.yml .github/workflows/security.ymlcd notify && go test ./...cd notify && go test -race ./...cd notify && go vet ./...cd notify && govulncheck ./...git diff --checkAll passed. Zizmor reported no findings with the repository's nine existing
suppressions. Govulncheck reported no vulnerabilities.
Security and privacy
The release remains owner-gated and fail-closed. The added
always()cannotbypass an upstream failure because every safety result is checked explicitly.
No secret-scanner exception, permission expansion, mutable tag, public default
port, discovery, trust, namespace, application, relay, or protocol behavior is
introduced.
Partial 2.0.1 publication
Tag
notify-v2.0.1remains bound to commit2e0b0914b0066141b3e3c0bf9cab8878430120b3. Its published image index remainssha256:2c0f620fa1ce934ae75b358a60935460d244b19d4e98718728dd0338e0b24229.There is no 2.0.1 GitHub release, binary set, rollout transcript, or public
verification, so 2.0.1 is retained only as immutable partial-publication
evidence and is not treated as a supported helper release.
Compatibility and rollback
The helper protocol and compatibility matrix are unchanged. A successful 2.0.2
publication must still prove 1.8.0 to 2.0.2, rollback to 1.8.0, and forward
recovery to 2.0.2 before finalization. Until then, public 2.0.0 remains the last
completed release and the VaultSync 2.0 release remains NO-GO.