Repository navigation
ci(release): restructure the release workflow - #236
Conversation
🔴 Risk Classification: MAJORApproval route: AI Review + Human Approval Required Classification reasons
Operational gates
Files analysed: 12 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
🔵 Advisory review: Sound, but needs your judgementThis PR needs a human approval. The code itself reads as correct; whether it should land depends on context I don't have. This is a substantial CI/security hardening change that pins actions by SHA, adds trusted publishing, commits lockfiles, and splits the release into four jobs. The code is technically sound and consistent with its stated intent, but several consequential operational decisions require a human to validate before merge. For you to decide
This is not an approval. wall-e cannot auto-approve this PR — it is an opinion to help whoever does. Advisory review · us.anthropic.claude-sonnet-4-6 · wall-e 2026.06.19-02 |
🔴 Risk Classification: MAJORApproval route: AI Review + Human Approval Required Classification reasons
Operational gates
Files analysed: 12 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
🔴 Risk Classification: MAJORApproval route: AI Review + Human Approval Required Classification reasons
Operational gates
Files analysed: 13 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
🔴 Risk Classification: MAJORApproval route: AI Review + Human Approval Required Classification reasons
Operational gates
Files analysed: 14 wall-e 2026.06.19-02 · policy |
🔬 Debug — why this classification?Each reason code emitted by the classifier, its source clause in the AI in SDLC Control Framework, and what it means.
Kinds:
See issue #3 for the proposal to formalise this map as Appendix A of the standards doc. wall-e 2026.06.19-02 · debug |
|



Summary
Security hardening of the CI and publishing workflows (reported internally). Publishing is split into separate build, test, publish and release jobs and uses RubyGems trusted publishing, every workflow pins its actions by commit SHA with read-only default permissions, and CI installs dependencies only from committed lockfiles. No SDK code changes.
Changes
.github/workflows/build-release.yml: four jobs.build(no secrets) builds and checks the gem and records its digest;testruns the sandbox suite;publish(environmentrubygems) publishes with trusted publishing, no stored API key, and only the gem with the recorded digest;releasecreates the GitHub release withgh release create, replacing the archived create-release action. A manual run publishes a pre-release version as a dry run..github/workflows/build-pull-request.yml,build-master.yml: actions pinned by commit SHA, read-only default permissions, no persisted checkout credentials, frozen installs from the committed lockfiles, no gem cache, lockfile checks before installing..github/workflows/codeql-analysis.yml: CodeQL actions v4 pinned by commit SHA, read-only default permissions.Gemfile.lock,gemfiles/ruby_2_7.gemfile,gemfiles/ruby_2_7.gemfile.lock: committed lockfiles; the Ruby 2.7 leg has its own because some locked gems need Ruby 3.0 or later..github/scripts/update-lockfiles.sh: regenerates both lockfiles in Linux containers; run it after changing dependencies orlib/checkout_sdk/version.rb..github/scripts/check_lockfile_checksums.rb: checks thatGemfile.lockonly uses rubygems.org and has a checksum for every gem..github/scripts/verify_gem.rb: checks the built gem's name, version and file list before it is published.checkout_sdk.gemspec: faraday requirement is now>= 2.0, < 3; lockfiles are not packaged in the gem..gitignore: lockfiles are no longer ignored.API Reference
None.
Breaking changes
None. The gem now declares
faraday < 3; no faraday 3 release exists. The packaged files are the same as in 2.8.2.Tests
CI legs Ruby 2.7, 3.1 and 3.3 pass with the committed lockfiles. The publishing steps were run locally in Linux containers matching the runner; actionlint is clean.
After merge: a RubyGems owner registers the trusted publisher (workflow
build-release.yml, environmentrubygems), then a manual run ofbuild-releasewith a pre-release version is the dry run. Version bumps now also need.github/scripts/update-lockfiles.sh.