Repository navigation
Recover blocked release PRs with one targeted Fix run - #2021
Open
JacobStephens2 wants to merge 5 commits into
Open
JacobStephens2 wants to merge 5 commits into
JacobStephens2 wants to merge 5 commits into
Conversation
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
Release PRs could wait forever on missing workflows or an obsolete head. Observe the captured PR throughout CI and delegate actionable recovery to the existing Fix run.
Persist the notes’ content base so an interrupted Fix cannot leave a resumed release with stale notes. Refresh unmarked legacy notes before tagging, and recognize repaired merge heads during interrupted failed-publication recovery. Refuse changed identity, state, branches, origin, version or extra source changes before tagging; cap head changes at five.
Closes #2016
Evidence
Execution evidence
cargo test --test release checks::a_conflict_without_workflows_runs_one_targeted_fix_and_releases_the_repaired_head -- --exact --nocapturefailed with
0 passed; 1 failed, printingwaiting for CI on …/pull/4until the ten-second fixture deadline. The fixture creates real competing Cargo version bumps and verifies a Git merge conflict.After: the same command passed:
1 passed; 0 failed.python3 /tmp/thirdshift-2016-spec-regressions/run.py(reviewer’s retained standalone regression) exited 101:Published repaired content with stale release notes: Old release notes: version diff starts at 0.1.0.After: the same command exited 0:
1 passed; 0 failed. Its regression is retained aschecks::spec_resume_after_interrupted_fix_refreshes_release_notes.python3 /tmp/thirdshift-2016-followup-spec/run.pyexited 101 withPublished repaired legacy content with stale release notes.After: the same command passed:
1 passed; 0 failed. Kept aschecks::an_unmarked_legacy_pr_repaired_before_resume_refreshes_its_notes.python3 /tmp/thirdshift-2016-spec-regressions/recovery.pyexited 101, incorrectly refusing the repaired tag during interrupted publication recovery.After: the same command passed:
1 passed; 0 failed. Kept aschecks::recovery_after_a_repaired_tag_resumes_between_branch_and_tag_pushes.cargo test --test release -- --test-threads=3— 120 passed, 2 fixture entry points ignored, before the final review fixes.scripts/affected-tests mainrun passed site and Console browser checks; its Rust run was interrupted to incorporate the final fixes.tokens::read_scope_cannot_read_security_findings: only the API/CLIage_secondsvalues differed by one second.cargo test --test console tokens::read_scope_cannot_read_security_findings -- --exact --nocapturepassed in isolation (1 passed).864c03fe6d76f35b8f1f309669bc509e6ff4be08:cargo nextest run— 4,244 passed, 97 skipped, test execution 1,504.784 seconds plus 89 seconds compilation.cargo fmt --checkandcargo clippy --all-targets -- -D warningspassed in that job. CI used the repository's normal no-retry profile.NEXTEST_TEST_THREADS=4 NEXTEST_RETRIES=1 scripts/affected-tests 1608e504selected full Rust and release-generator checks for the final changes. Its duplicate Rust run was stopped after exact-head CI succeeded, followingdocs/testing.md's instruction to reuse successful CI. The one-second Console comparison had not failed again.python3 -m unittest discover -s scripts -p test_generate_release.pythen passed 3 tests.npm test --prefix site(116.77s),cargo build --locked(140.33s, compilation included), andnpm test --prefix console(280.77s). Those source files did not change after that run;npm run docs:check --prefix sitealso passed.Temporary failure resolving azure.archive.ubuntu.combefore the affected checks. Failed Release jobs were retried once; artifact jobs remain failed at dependency setup. Failed CI browser jobs are rerunning. The successful full Rust job is retained; no source or workflow change was made for the mirror outage.Test seams: the real
scripts/release.shCLI, Git refs, PR/workflow observations through fake GitHub, and targeted Fix/Experiment/summary commands through fake Cargo/Harness adapters. All fixture children are bounded and owned; tests launch no real agent or release.Visual evidence
Documentation at matching viewports and reading states; captures contain no personal data.
Release manual, 1440×900:
Release manual, 390×844:
Homepage, 1440×900:
Homepage, 390×844:
How it works, 1440×900:
How it works, 390×844:
Architecture, 1440×900:
Architecture, 390×844:
Review coverage
Standards: 2 P3 findings, both addressed by reusing the fake PR adapter and sharing the bounded script runner. Spec: 1 P2 finding, reproduced and fixed with a retained regression.
Both reviewers inspected every changed file, including generated
site/docs/index.html. Generated exclusions: none. Changed files left unread: none. Reports and finding counts are retained with the Session trace.Unaddressed findings
Merge Danger
Door: two-way
The script can be reverted. Release publication itself retains its existing immutable-tag and publication-before-merge safeguards.
Blast Radius: releases
Only maintainer release orchestration and its documentation/fixtures change. One automatic targeted Fix run may consume agent time when a release PR conflicts or completed CI fails.