Repository navigation
Complete the native release cutover - #2202
Merged
Merged
Conversation
Owner
Author
|
Delivery completed on agent-authored or reviewed head cfe3080. |
Refuse a fresh cut whose tag is already on origin before candidate selection, name gh pr ready when a draft bump PR blocks the merge after publication, start over when a closed bump PR's branch is gone, keep the failed-workflow message when its job details cannot be read, and name the PR when its head cannot be fetched. Restore the ported tests' specific assertions, the polling and local-tag scenarios and the declined Experiment override; remove the fake gh's script-only jq branches; correct the manual, testing and navigation docs and the homepage override rule.
This was referenced Nov 14, 2026
Merged
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
Closes #2160
The Release run is now only
thirdshift release. The release integration suite drives the compiled binary against an isolated bareorigin, with fakeghand fake Harness executables. The shell release script, its Python Experiment helper,scripts/release-summary.mdand the hidden--release-summaryflag are gone, along with its Console parity exclusion.scripts/release-notes.shstays for the release-notes workflow. The manual, the generated docs and prompts pages, and the home, how-it-works and architecture pages describe scheduled Release Passes and on-demand Release runs.The review turned up behaviour the retired script had and the native Command had lost. It is restored here:
Earlier commits on this branch also restore failed-job names, the run URL and the rerun hint for a failed release workflow. They refuse an overtaken merged release. The manual's Release runs section now documents these.
Test seams: the compiled
thirdshift release,statusandstopcommands, using real isolated Git repositories, fake GitHub and Harness executables, and Resend. Also tested: the retained release-notes shell interface and the public static site's pages.Evidence
Execution evidence
All Rust runs below used
cargo test --lockedin arust:1.99.1-bookwormcontainer on this worktree, withbubblewrapandsocatinstalled (this host has no C linker).cargo test --test release -- a_tag_that_exists_on_origin_is_refused a_tag_on_main_that_exists_on_origin_is_refused_as_on_origin a_draft_bump_pr_after_publication_names_the_ready_step a_failed_release_workflow_still_reports_failure_when_its_details_cannot_be_read a_main_whose_ci_appears_after_a_few_polls_is_released, with the restored assertions and new tests, oncfe30809's code:gh run view failed: HTTP 502: Bad Gateway, which replaced the failure message.After: the same tests, plus
a_tag_that_exists_locally_is_refused,a_tag_with_no_bump_pr_is_refused,a_tag_that_is_not_on_the_bump_head_is_refused,a_bump_pr_closed_without_merging_and_its_branch_deleted_starts_overanda_bump_pr_closed_without_merging_is_refused:test result: ok. 11 passed; 0 failed.cargo test --locked --no-fail-fast --test release: 136 passed, 0 failed, 3 ignored.cargo test --test experiments: 206 passed, 2 ignored, plus 1 failure,model_graders::a_sandboxed_model_grader_sees_only_its_packet. That container had nosocat, whichdocs/testing.mdrequires. Withsocatinstalled it passed: 1 passed.cargo clippy --locked --all-targets -- -D warnings: clean.cargo fmt --check: clean.npm test --prefix site(includesdocs:check): 70 passed, 0 failed.python3 -m unittest discover -s scripts -p 'test_*.py': 72 tests OK (test_generate_release.py: 10 OK).cargo test --locked --no-fail-fast) ondb185341in the same container: 4,443 passed, 93 failed, acrossactivity_log,console,launch_pull,process,process_identity,run_notification,security_run,stopandtrial_scope. The same nine binaries on CI-greencfe30809in that container fail with identical per-binary counts. Withinrun_notificationandlaunch_pull, a different single test fails on each run. So these failures come from the container environment, not from this change. Every other binary, includingreleaseandexperiments, passed. Ondb185341itself, CI passed all four Rust partitions and the coverage gate, plus the site and Console checks; release builds also passed.cfe30809, CI passed all four Rust partitions, the coverage gate, Python tooling, formatting, clippy, and the site and Console browser checks. Earlier focused runs:slow_release_workflow_listing_keeps_startup_roomanda_merged_untagged_release_overtaken_on_main_cannot_be_publishedeach failed before their fixes and passed after.Visual evidence
Home: Release override on fail or inconclusive — 1440×900
Home: Release override on fail or inconclusive — 390×844
Manual: Release runs refusals and recovery — 1440×900
Manual: Release runs refusals and recovery — 390×844
Earlier captures of the cutover itself (home, how-it-works, architecture, manual and release-summary prompt, both viewports) are in this Gist.
Unaddressed findings
Standards
Releaseend-to-end fixture (tests/release.rs,Release::summary_says), the per-Harness sandbox matrix (tests/release/summaries.rs) and the command-line contract cases (tests/release/native.rs).tests/experiments/release.rsis a separate test binary fromtests/release/experiments.rs, so it cannot share their helpers without moving them totests/support/. That refactor belongs in its own change..scratch/triage.mdreplacements are bracketed and say "omitted", so they read as editorial notes, not captured output.Spec
assert_refused_by. Declined. The native Command has no shared refusal prefix.assert_refused_by(tests/release.rs) still requires exit code1, every named reason, unchanged origin refs and unchanged PRs.--with-experimenttests. The declined-override case was added. Declined:FailandInconclusiveshare one branch insrc/release/controls.rs(Conclusion::Fail | Conclusion::Inconclusive), which the inconclusive cases already exercise.controls::experimentreturnsOk(())whenevals::experiment::for_releasereturnsNone. Theno_suitesandbaseline_without_trialskips of that same function are tested intests/experiments/release.rs.workflow::finishrunscontrols::experimentbefore notes and PR opening for every untagged or recut cut.repaired_content_waits_for_its_own_experiment_before_taggingcovers content changing before tagging.None of these needs a Spec or Day shift decision, so no issue was filed.
Review coverage: both axes read every changed path, including removed contents.
site/docs/index.htmlis a generated-output exclusion: its sourcedocs/guide.mdwas reviewed,npm run docs:check --prefix sitepassed, andnpm test --prefix sitepassed 70/70. Its output was not read. Partial reads: the deletedscripts/release.sh(Standards sampled lines below 87 by grep; Spec read lines 1-720 in full and lines 720-1049 by function header only). The fixes indb185341were made after the review and were not re-reviewed. Standards: 8 findings (worst: the failed-workflow message lost when its details can't be read). Spec: 9 findings (worst: a closed bump PR with a deleted branch blocked its version permanently). Reports and the finding-count summary are saved with the Session trace.Security review outcome
No unaddressed introduced findings.
Merge Danger
Door: two-way
A revert restores the retired entry points. Published tags are unchanged. The discovery change only affects a closed bump PR whose branch is gone from origin.
Blast Radius: releases
The changes affect release tests, release refusals, recovery and diagnostics, CLI parity and release documentation.
Built with claude 2.1.322 · claude-opus-5-5 · high