Skip to content

Let Review runs survive Base branch advances - #2055

Merged
JacobStephens2 merged 6 commits into
mainfrom
issue-2044
Nov 12, 2026
Merged

JacobStephens2 merged 6 commits into
mainfrom
issue-2044

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Summary

An unrelated merge into the Base branch could abort an in-flight Review run and strand its committed fixes. Review now accepts an advancing Base tip while retaining the captured Base commit for review and CI comparison scope.

 capture PR head, branch names and Base commit
-require live Base tip == captured Base commit
 require unchanged branch names, eligible PR and expected head
+require mergeability before initial and Repair pushes
 push committed fixes with the expected-head lease
 gate readiness on delivered-head CI and mergeability

CLI regressions cover Base advancement during addressing, recommend-only posting and the CI watch; conflicts keep fixes local. The branch also shares target-mutation test setup and documents this behavior on the architecture page.

Closes #2044

Evidence

Execution evidence

Seams under test: thirdshift review <PR URL> and thirdshift review <PR URL> --recommend-only, using the CLI, real Git refs and fake GitHub/Harness adapters.

  • Before: At the supplied merge base 3beacb7f03fa45053914763a5d8a8668ea8cc93c, with only the branch's regression test file overlaid, ran:
    CARGO_BUILD_JOBS=2 cargo test --test review_run advancing_base_during_review_delivers_fixes_and_posts_findings -- --exact --nocapture
    Actual failure: pull request changed during Review run, left: Some(1), right: Some(0), and 0 passed; 1 failed. Cleanup retained the committed fix as unpushed work. Only the Base tip advanced; the PR head, branch names and eligibility stayed unchanged and the PR remained mergeable.
    After: The exact same command at branch head 1cc3e22919ebc326cde427b8e9c67f795ce71335 passed: 1 passed; 0 failed (1.77s test execution).
  • Confirmed cause: compatible compared the live base_head with the acquisition snapshot. Removing that equality allows unrelated Base advances; branch-name, eligibility, expected-head and push-lease guards remain. snapshot.base_head still sets the diff/CI scope. require_mergeable now also runs before initial and Repair pushes, retaining fixes locally on an observed conflict.
  • Final local validation: NEXTEST_TEST_THREADS=2 CARGO_BUILD_JOBS=2 /usr/bin/time -p scripts/affected-tests refs/remotes/origin/main passed: 68 site tests and 4,309 Rust tests passed; 100 Rust tests skipped. Site checks took 90.43s; the Rust command took 5,799.22s, including compilation (5m 28s). Rust test execution took 5,469.117s. Total measured wall time was 5,890.38s. All thirteen slow cases passed. The exact-head GitHub CI below also passed independently.
  • GitHub CI passed on the exact branch head 1cc3e22919ebc326cde427b8e9c67f795ce71335: Rust/formatting/Clippy, site and Console checks. Release artifact checks also passed.

Visual evidence

Architecture documentation, with “Processes and Session traces” expanded at the same scroll position. Before is the supplied merge base; After is the issue branch. Both viewports fit without horizontal overflow.

1440×900 desktop

Before
After

390×844 mobile

Before
After

Unaddressed findings

Standards

None. The independent continuation review raised zero findings. The earlier duplicated mutation setup was already addressed by change_review_target in tests/review_run.rs (commit c6597aed).

Spec

None. The independent continuation review raised zero findings.

Security

None. This review found no unaddressed introduced finding. Branch-name, eligibility, expected-head, and push-lease checks still refuse a retarget, a moved head, and a closed or ineligible pull request. An observed conflict still blocks the initial push, a Repair push, and readiness. The captured Base commit remains the review and CI scope, as specified.

Security review outcome

No unaddressed introduced findings.

Review coverage

Both independent axes reviewed the whole branch against refs/remotes/origin/main (0ab4647045281d11a82eada707a1e6ab4efc5949) and read all four changed files: src/processes/review.rs, src/processes/review/delivery.rs, tests/review_run.rs and site/architecture/index.html. Standards: 0 findings; Spec: 0 findings. Unread changed files: none. Generated-output exclusions: none. Final reports and counts are retained in .thirdshift-review-WgBqKr/.

The Continuation reproduced the bug and verified the existing fix without changing source files or creating another commit; the branch head is already published on origin.

Merge Danger

Door: two-way

Blast Radius: Review

Changes Review-run compatibility and adds a mergeability observation before fix publication. PR identity, eligibility, expected head, lease and final readiness checks remain enforced.

Built with codex codex-cli 0.167.1 · gpt-6.1-sol · xhigh

…/actions/runs?head_sha=83e0c824c482c813eabad35b27245d985e47339a&per_page=100 failed: gh: API rate limit exceeded for user ID 53905376. If you reach out to GitHub Support for help, please include the request ID EC48:330845:28DC131:82C97DD:6AF4CAE8 and timestamp 2026-11-11 20:07:04 UTC. For more on scraping GitHub and how it may affect your rights, please review our Terms of Service (https://docs.github.com/en/site-policy/github-terms/github-terms-of-service) (HTTP 403))

2026-11-11T20:07:04Z, host orchestrate.etadventures.com. Uncommitted work at the time of failure is included in this commit.
@JacobStephens2
JacobStephens2 merged commit 9c71a56 into main Nov 12, 2026
24 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-2044 branch November 12, 2026 07:58
@JacobStephens2 JacobStephens2 mentioned this pull request Nov 12, 2026
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.

Review run aborts with "pull request changed during Review run" when the Base branch advances

1 participant