feat(release): verify detached release signatures - #236
Draft
seonghobae wants to merge 35 commits into
Draft
Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks 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.
Scope
Canonical successor to #222, stacked on current #217. This advances #210 from structural release-evidence validation to a cryptographic operator-verification boundary. It does not publish a release candidate, distribute trust roots, or claim release readiness.
The preserved child lineage verifies detached Ed25519 signatures, rejects forged/substituted/non-canonical evidence and unknown trust identity, exposes bounded
verify-release, and keeps same-descriptorO_NOFOLLOWJSON/artifact trust boundaries. Trust is not inferred from embedded keys, GitHub actors, or model output. Key issuance/rotation/revocation/custody, transparency-log/Sigstore policy, publication, install/upgrade/backup/restore, and buyer-journey acceptance remain outside this slice.Current stack
Parent #217 is exact
59c9d94a5bc61e062e4596f737280581cd684bad, open/Draft/mergeable on protectedmain@193a87ef54c3fe6dcda4755bce4d6bc81e3a0297.The newest parent delta is a hosted-RED-driven fixture repair. The production nightly identity invariant from
df83b68c065f94ece3c13c53e2ef881b093ed742correctly rejected a leap-day positive fixture whose version claimed 2024-02-29 while its helper hard-coded a 2026-02-28generated_at. Minimal parent repair59c9d94...parameterizes only the fixture generation instant and gives the leap-day control its matching UTC date; production validation remains unchanged.This child adopted that stronger parent without rewriting historical child work. Current two-parent descendant
40f5877edb9489d24760bbd479cd0b5880a182adpreserves prior childecfc4e130fd5fd1ae539e8e2fdf76b4413042d49as first parent and current #217 as additional parent. Branch movement usedforce=false.Fresh parent→child compare is ahead-only with
behind_by=0, merge base exactly current #217, and exactly the same six child-owned paths remain:packages/commercial-readiness/package.json,src/cli-file-read-contract.test.mjs,src/cli.mjs,src/release-signature-cli.test.mjs,src/release-signature-verification.mjs, andsrc/release-signature-verification.test.mjs. Parent release-evidence source/test/CHANGELOG changes arrive only through ancestry; no child delta was discarded.Exact-head acceptance
Current exact head is
40f5877edb9489d24760bbd479cd0b5880a182ad, open/Draft/mergeable with base exact #21759c9d94.... Submitted reviews and inline review threads are empty. This stacked head does not inherit predecessor workflow/review evidence, and absence of a PR-triggered run is not GREEN.Keep Draft while #217 remains unmerged. After normal parent integration, retarget/restack non-destructively and reacquire unchanged-head repository/central workflows plus independent review/thread authority. Shared control-plane/dependency/scanner blockers remain owner paths rather than child-local suppressions: #247 for protected-main formatting/control-plane repair, #246 for
qs, andContextualWisdomLab/appguardrail#1106for scanner false positives.No self-approval, administrator bypass, force-push, destructive rebase, mutable dependency, stale evidence reuse, or gate weakening is used.
Refs #210, #211, #217, #222, #246, #247.