fix(merge-orchestration): never choose rebase; a stale :rebase decision squashes - #884
Merged
Merged
Conversation
…on squashes Rebase-merge replays commits UNSIGNED: 119 of 286 unsigned estate default-branch commits were such replays (patch-id twins), so it breaks required_signatures. The owner ruled on 2026-09-30 to disable rebase repo-side while keeping merge commits for proof PRs. - Strategist.decide_method: drop the commits_atomic_green -> :rebase clause. An atomic-green series squashes, and a proof still gets :merge_commit. - BatonEmitter: drop gh_flag(:rebase). A manifest written before this change falls through to --squash instead of emitting a flag that the repo now refuses. - Tests: a non-chore atomic-green context must squash, and a :rebase decision must emit --squash. Both were checked by mutants: restoring either removed line turns its test red. The first draft of the strategist test used the default :chore class and was vacuous. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK
Contributor
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (4)
✨ Finishing Touches📝 Generate docstrings
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. Comment |
5 tasks
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.
What
Hypatia's merge orchestration no longer chooses or emits a rebase merge.
Strategist.decide_method: removed thecommits_atomic_green -> :rebaseclause. An atomic-green series is squashed; a:proofPR still gets:merge_commit.BatonEmitter: removedgh_flag(:rebase). A manifest written before this change now falls through to--squashrather than emitting a flag the repo refuses.Why
Rebase-merge replays commits unsigned. Of 286 unsigned commits on estate default branches, 119 were rebase replays, proven by patch-id twins against their signed feature-branch originals. Those replays break
required_signatures.Owner ruling (2026-09-30): allow merge commits but not rebase. Rebase is being disabled repo-side (
allow_rebase_merge=false, already applied to hypatia, standards and launch-scaffolder). This PR stops the orchestrator from asking for a method the repos now refuse.Verification
mix test test/merge_orchestration: 82 tests, 0 failures.MIX_ENV=test mix compile --warnings-as-errors: rc=0.mix format --check-formattedon the changed files: rc=0.gh_flag(:rebase)turns the emitter test red. The first draft of the strategist test used the helper's default:choreclass; it was squashed by the first clause and passed vacuously. The surviving mutant caught this.Inherited red (not required, not introduced here)
governance / Actions lockfile verify: red onmainat 300fd45 as well, from dependabot bumps that leftactions.lockstale. Tracked in actions.lock drift on main: dependabot bumps left 4 refs + codeql SHA unlocked (Actions lockfile verify red) #885.🤖 Generated with Claude Code
https://claude.ai/code/session_0136eszqrQ53Kj7aBH1D4rXK