Skip to content

Add a verified stable release channel - #809

Open
justin808 wants to merge 21 commits into
mainfrom
jg-codex/speed-issue-296
Open

Add a verified stable release channel#809
justin808 wants to merge 21 commits into
mainfrom
jg-codex/speed-issue-296

Conversation

@justin808

@justin808 justin808 commented Sep 9, 2026

Copy link
Copy Markdown
Member

Why

Provide a stable adoption path backed by full verification of the exact release candidate, while ordinary PRs can use appropriate integration checks. Part of #296.

What changed

Stable installation, upgrade, rollback, and status now bind an annotated release tag to its peeled commit and verified GitHub release receipt. Development installs require an explicit channel; stack sync preserves existing stable installations, and channel conversion refuses before mutation when omitted managed content would remain active.

Status also verifies installed doctor/scanner runtimes, every expected flat skill directory, the installed license, and the installed version against the authenticated release. Missing skill roots or a missing/modified owned license cannot report a healthy stable installation. Integrity follows the recorded installed delivery mode; previewing a future mode does not require files that have not been installed yet.

Cold installation authenticates the standalone verifier against a SHA-256 pin from an independently trusted guide before executing any selected-release code. The authenticated verifier checks published provenance before checkout and installer execution; all fresh-install entry points use this canonical bootstrap.

The release workflow verifies the final versioned candidate with the complete validation suite using read-only permissions. A separate protected job then checks independent human approval of that exact commit, creates an immutable annotated tag, records its provenance, and publishes the release. Selected PR checks cannot substitute for this gate. Fork guidance recommends updating from a verified upstream tag while preserving fork changes and running fork checks; publishing a fork release requires its own full candidate verification.

The repository now separately blocks v* tag updates and deletion with no bypass actors. Before the first release, administrators must still configure the stable-release environment with independent required reviewers and no bypass, and restrict tag creation to the approved release identity. This PR publishes no release. Cryptographic signatures are not required.

Native Claude adoption verifies the release through copy staging and checks the installed commit. Stable Codex adoption currently uses verified copy installation: the existing native URL catalog entry does not pin the separately fetched plugin code, so that route remains development/unverified. This is a limitation of this repository's current catalog, not a claim that Codex lacks immutable plugin sources.

This change spans 32 files because channel selection and identity must stay consistent across installation, upgrade/rollback, status, trust reporting, host guidance, and release automation. Documentation migration and trust-reporting integration could have been split; they remain together to keep the advertised stable path consistent. A separate native Codex stable catalog mechanism is deferred. Most added code is regression coverage and verification of GitHub release evidence.

How to review and verify

Start with docs/release-channel.md and the read-only verification job in .github/workflows/release.yml. Then inspect stable installation evidence and the pre-mutation stack guard. Full candidate verification must precede tag creation, and selected PR coverage must never qualify a release.

Test plan

  • Final clean committed local bin/validate, including installer and stack suites.
  • Current-head hosted full validation and review cohort.
  • Release, upgrade, status, security, task-review, and full stack-preservation regressions passed.
  • All five repository lint tools passed; independent Codex reviews of the bootstrap and final status correction are clean. The optional Claude second-engine pass was unavailable due its weekly limit.
  • Changelog: deferred_to_update_changelog.
Agent details

Current candidate and evidence

Current review found a Linux fixture mode-restoration defect. A faithful isolated Linux run reproduced the failure. A four-line test-only correction preserves original file permissions after restoring content; the existing upgrade suite then passed 20 tests and 266 assertions. That correction and the latest main integration are under local validation and are not yet published. The published candidate remains blocked by this confirmed finding. Claude reported 63 permission denials and published no review artifact; its launcher success is not a clean review attestation.

Candidate 948d56ce75177599b7bf28996c6387855c7cd9be integrates actual main f26ed1e33b78568ce76d1f4c1b7efd92fc24254b, after the installer batching, documentation CI selector, and integration/promotion contract merged. The automatic integration preserves all 32 feature paths and modes: 26 files retain their prior feature bytes; six combine the independently reviewed incoming changes. Current-main changelog is preserved exactly. Independent review found no actionable issue in those six compositions, including stable source materialization feeding the batched installer. Precommit checks passed with documented partial coverage while incoming skill changes were staged. Clean committed local full validation: PASS, including installer and stack suites. Current-head hosted full validation and review cohort: PENDING.

The preceding candidate 1dc309041e2191814ee37e8b30be2a1217925d5c passed clean local full validation and full hosted validation. Its independent final correction review passed 47 tests and 477 assertions. These results are historical; qualification of the updated integration is listed separately.

The final completeness correction passed upgrade tests (20 tests/266 assertions), status tests (27 tests/211 assertions), and all five lint tools. Independent corrective review repeated all 47 tests/477 assertions and found no actionable regressions. Missing one or all flat skill roots, a missing skills parent, an absent legacy delivery-mode field, and missing/modified licenses are covered. Valid companion installations remain accepted. Expected content comes from the authenticated release, without a new persisted inventory. Earlier corrective regressions passed 2 tests/49 assertions. They cover missing/modified doctor and scanner runtimes, invalid installed version metadata, valid upgrade availability, flat-to-companion status and upgrade dry-run, and companion-to-flat integrity. Comparison uses the verified installed release and existing ownership comparison; requested mode remains a compatibility input. No additional metadata schema was introduced.

Earlier qualification includes status tests (27 tests/211 assertions), receipt/bootstrap tests (20 tests/112 assertions), eight stable installer cases, Linux bootstrap replay (3 tests/10 assertions), and stack-preservation tests. The documented bootstrap code itself is exercised. Symlinked managed ancestors are rejected; these reads are not an atomic filesystem snapshot. Unrelated personal files remain untouched. Claude's extra local engine is unavailable due its weekly limit and is not counted as passing evidence.

QA Evidence

  • QA lane: independent review and disposable installer/upgrade/status/stack regression tests.
  • Scope checked: release candidate identity, provenance, channel preservation, rollback, and stable adoption.
  • Tested at: 948d56ce75177599b7bf28996c6387855c7cd9be.
  • Automated checks: focused regressions, lint and final independent correction review passed; clean committed local full validation passed; current-head hosted gate pending.
  • Manual checks: reproduced stable stack-sync mutation and confirmed preflight refusal before writes.
  • User-visible UI change: no.
  • Visual evidence: not applicable: command-line and release workflow change.
  • Interaction change: no application interaction change.
  • Interaction evidence: not applicable: command-line and release workflow change.
  • Visual fix: no.
  • Negative control: not applicable: no visual fix.
  • Performance evidence: not applicable: no measured performance claim.
  • Findings: confirmed findings fixed; final independent reviews have no blocking findings.
  • QA required: yes.
  • QA required rationale: stable adoption and release evidence must bind the exact candidate and preserve channel boundaries.
  • QA lane status: blocked pending publication and verification of the fixture repair.
  • Release-blocking status: blocked by the confirmed fixture finding; first-release setup and independent approval remain separate prerequisites.
  • Process-gap disposition: script.

Decision log

Stable Codex adoption uses the verified copy route. A separate immutable native Codex catalog entry and first-release administrative setup remain outstanding, so this PR does not close every adoption criterion in #296. PR qualification is not a release attestation; the release workflow must run every suite uninterrupted on the final versioned candidate.

@github-actions github-actions Bot added the coderabbit:first-pass Triggers CodeRabbit's automatic first-pass pull-request review. label Sep 9, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-10T08:33:11.700178Z 948d56c New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Sep 9, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 58 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Advanced

Run ID: eca7a3b0-c84b-4ff2-a6fa-eac5d5783d3e

📥 Commits

Reviewing files that changed from the base of the PR and between 0b50d29 and 1dc3090.

📒 Files selected for processing (32)
  • .github/workflows/release.yml
  • CONTEXT.md
  • README.md
  • bin/agent-stack-test.bash
  • bin/agent-workflows-doctor-test.bash
  • bin/agent-workflows-release
  • bin/agent-workflows-release-test.rb
  • bin/agent-workflows-status
  • bin/agent-workflows-status-test.rb
  • bin/agent-workflows-trust-audit
  • bin/agent-workflows-trust-audit-test.rb
  • bin/agent_doctor/workflows_component.rb
  • bin/agent_stack/installers.bash
  • bin/install-agent-workflows
  • bin/install-agent-workflows-test.bash
  • bin/repository-security-policy-test.rb
  • bin/upgrade-agent-workflows
  • bin/upgrade-agent-workflows-test.rb
  • bin/validate
  • docs/README.md
  • docs/adoption.md
  • docs/compound-engineering.md
  • docs/getting-started.md
  • docs/installation-and-upgrades.md
  • docs/problems-solved.md
  • docs/release-branching.md
  • docs/release-channel.md
  • docs/repository-supply-chain.md
  • docs/source-pack-glossary.md
  • skills/pr-batch/bin/task-review-loop-test.rb
  • test/agent_doctor/workflows_cli_integration_test.rb
  • test/agent_doctor/workflows_component_test.rb

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1fc04a9b28

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status Outdated
Comment thread bin/agent-workflows-trust-audit

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 80064db2bb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status
Comment thread bin/agent-workflows-status Outdated
@justin808

Copy link
Copy Markdown
Member Author

Review disposition at 46dd564a70d06d5fad1d23b1dc95d377a4156e71: all original-wave findings have a verified response and their conversations are resolved. Updated-head hosted CI and review remain separate gates.

Review decisions and evidence

The confirmed workflow-integrity omission is fixed: status compares installed workflows with the verified release archive and rejects changed, missing, or symlinked files/directories. All 26 status tests/201 assertions, 14 upgrade tests/162 assertions, focused lint, and independent corrective review pass. The tag-object anchor report was a false positive: the actual parser already rejected 40-/64-hex identities with suffix text or newlines. No follow-up issue was created.

CodeRabbit explicitly skipped review and is not counted as a completed clean review. Automated summary comments are status artifacts; substantive inline findings are accounted for.

Future full-PR scans should start after this comment unless check all reviews is requested.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 46dd564a70

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status Outdated
Comment thread bin/agent-workflows-status

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a48151d523

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status
Comment thread bin/agent-workflows-status
Comment thread bin/upgrade-agent-workflows
Comment thread bin/upgrade-agent-workflows
Comment thread bin/install-agent-workflows Outdated
@claude

claude Bot commented Sep 9, 2026

Copy link
Copy Markdown

Reviewed the diff (0b50d29...d90af66, 32 files, +4116/-202), focusing on the tag/receipt verification chain, the release workflow's two-job split, and scope/simplicity.

Verification logic held up: verify_tag in bin/agent-workflows-release genuinely checks the ref is an annotated tag object and peels to the exact approved commit (not a name-only check). verify_receipt/verify_published cross-check the local receipt against live GitHub API data (asset digests, workflow-run head SHA, approvals scoped to the stable-release environment), so a spoofed local receipt alone can't pass. The verify job in .github/workflows/release.yml has contents: read only and persist-credentials: false; the release job re-validates change_author against real PR authorship rather than trusting the dispatch input, and requires the approver to differ from both author and dispatcher. No shell-injection patterns or TOCTOU gaps found in the reviewed scripts.

Two lower-severity issues posted inline:

  • bin/upgrade-agent-workflows:361 — uncaught Gem::Version exception (stray stderr backtrace, non-fatal) when prior/backup metadata lacks a version field.
  • bin/install-agent-workflows:65AGENT_WORKFLOWS_RELEASE_REF env var has no real caller anywhere except its own test; every documented/actual call site uses --release vX.Y.Z instead.

On scope: the PR description already acknowledges docs migration and trust-reporting could have been split out; I didn't find a clean way to split further without breaking the "channel" concept's cross-cutting need to stay consistent across install/upgrade/status/release.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: dbb3e1cfb5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/release-channel.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9fc8ebc655

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status
Comment thread bin/agent-workflows-status

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2bfc4244d1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread bin/agent-workflows-status
@justin808 justin808 added complexity:complexify Adds enduring logic, modes, contracts or operational obligations; value is judged separately. P2 Useful follow-up: schedule after higher-impact work triage:park Defer during backlog reduction; requires fresh evidence or explicit reprioritization. labels Sep 10, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 948d56ce75

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

output, status = run_command(*command)
assert_equal 3, status.exitstatus, "#{relative} #{mutation}: #{output}"
assert_equal "CHECK_FAILED", JSON.parse(output).fetch("status")
File.binwrite(path, original)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Preserve the restored runtime's original mode

When this test runs under the common 0022 umask, the stable archive installs bin/agent_doctor/contract.rb as 0664, but after the missing/modified checks this File.binwrite recreates it as 0644. Since doctor ownership includes the full permission mode, the later healthy-status assertion for LICENSE fails with installed doctor runtime differs from verified release; I reproduced this with ruby bin/upgrade-agent-workflows-test.rb -n /checks_installed_auxiliary/. Capture and restore the original mode along with the bytes so the mandatory full validation suite can pass.

AGENTS.md reference: AGENTS.md:L54-L60

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

coderabbit:first-pass Triggers CodeRabbit's automatic first-pass pull-request review. complexity:complexify Adds enduring logic, modes, contracts or operational obligations; value is judged separately. P2 Useful follow-up: schedule after higher-impact work triage:park Defer during backlog reduction; requires fresh evidence or explicit reprioritization.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant