Skip to content

ci: add the protected release workflow (package, verify, approval-gated publish) - #7

Merged
webos21 merged 3 commits into
mainfrom
ci-release
Nov 11, 2026
Merged

webos21 merged 3 commits into
mainfrom
ci-release

Conversation

@webos21

@webos21 webos21 commented Nov 11, 2026

Copy link
Copy Markdown
Owner

Adds release.yml and tools/ci_release.py. The release environment (required reviewer, main only) was created first. dry_run defaults to true. Not a required check; nothing is published by merging this.

🤖 Generated with Claude Code

webos21 and others added 3 commits November 11, 2026 13:16
…ksum rules

tools/ci_release.py derives tag, archive and checksum names (reproducing the four published releases), refuses
anything but a full commit SHA and a clean tree, builds with the pinned published CLI and public SDK through ci_bootstrap,
assembles the bootstrap resources and packs twice to require byte-identical archives.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ed identity

The first local run stopped with a bare StopIteration because the artifact is named crt-cli-<host>. The executable is
now the artifact whose bytes equal the verified stage-2 digest, and the SDK is the directory named by the summary's
version and content hash; zero or ambiguous matches are controlled errors with unit tests.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…val-gated publish

release.yml (manual) builds exactly a requested commit that is on main and has a passing CI gate, packs a deterministic
archive, verifies it on a separate runner (including a real GitHub SDK acquisition and the C and C++ workflows) and publishes
only through the `release` environment, which requires a reviewer. publish is the only job with contents: write; it
re-checks the digest, stages a draft, compares the downloaded draft byte for byte and refuses an existing tag.
dry_run (default) stops at the verified draft.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@webos21
webos21 merged commit b091f81 into main Nov 11, 2026
7 checks passed
@webos21
webos21 deleted the ci-release branch November 11, 2026 04:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant