Repository navigation
chore(release): add fail-closed Mac 2.1.0 recovery tooling and tests - #244
Merged
Merged
Conversation
…and add state reconciliation
…en review verification and add e2e tests
…oss-platform portability
raiseCatError
marked this pull request as ready for review
November 11, 2026 22:38
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
Adds an independent, fail-closed recovery workflow
.github/workflows/recover-mac-release.yml, recovery scriptscripts/release/recover-mac-release.sh, state reconcilerscripts/release/reconcile-mac-release.sh, and comprehensive test suitescripts/release/test/recover_mac_release_test.rbto safely verify and recover the MeowDisplay Mac 2.1.0 release without modifying the immutable candidate commit94c796fc34fd699776764d67d2f26013909a308eonrelease/2.1.0.Recovery Mechanism Details
Preflight and Gate Checks
2.1.0), candidate SHA (94c796fc34fd699776764d67d2f26013909a308e), draft release ID (442117184), and repository (raiseCatError/meowdisplay). Overrides are rejected.READY_FOR_DISTRIBUTION) onorigin/release-state(fetch failure is fail-closed; no stale local state).LC_ALL=C sort).origin/release-state.SHA256SUMS.txtdigest independently against pinned digest279e22555e9a84a4fc59bd7d529f4efca6ccf2a8c986ac9fc939d627368bc1b7.shasum -a 256 -c SHA256SUMS.txt).CZ8BW9J896), Gatekeeper notarization, stapled tickets, version and build (2.1.0), and Ed25519 feed signatures against published baseline keyM9Je3RXE9GYGv7ZvVmJj2xK2FrpSR/rQvbuZFfYORcU=.Protected Deployment Entrypoint & Human Approval Gate
--publishis refused locally; local execution is strictly verification-only--verify)./Volumes/T7Tmp/ai-dev) for local runs; never falls back to internal/tmp..github/workflows/recover-mac-release.ymlprovides the explicit recovery entrypoint with pinned inputs.environment: release-publish, guarded by required human reviewers viacheck-environment.sh release-publish --require-reviewersand verified live viagh api repos/$REPO/actions/runs/$GITHUB_RUN_ID/approvals.release-publishrequires running from a branch matchingrelease/*. Repository admin can create a temporary branch (e.g.release/2.1.0-recovery) pointing to this commit to satisfy the policy without touching the frozenrelease/2.1.0candidate branch.Verified Rollback Behavior
gh release edit v2.1.0) while verifying numeric draft ID442117184via API.gh release edit v2.0.0 --latestand verifies the API returnsv2.0.0.gh release edit v2.1.0 --draft=trueand verifies the API confirmsdraft: true.Release-State Reconciliation
reconcile-mac-release.sh --manifest-onlyis genuinely read-only (zero state mutations).reconcile-mac-release.sh --executerequires the minted release App token (RELEASE_STATE_TOKEN, App ID 5582030):failedtoin-progress(publish start).published(publish mac-published).publish stores --stores live).release.jsonmanifest.Test Coverage
scripts/release/test/recover_mac_release_test.rbcontains 19 focused unit and end-to-end tests (124 assertions, 0 failures):--publish.origin/release-statefetch failure fail-closed behavior.SHA256SUMS.txtrejections.