Conversation
…t isolation (Q3) Implement Q3 of merge-pipeline debottleneck: when a batch PR is red with all members individually green (semantic conflict signal), split members in half and build two separate integration branches for bisection. Bounded: max 4 rounds/8 batch builds per original batch via bisect-lineage markers in PR bodies. Eviction-first handles individually-red members with zero extra CI. - parse_bisect_lineage(): extract (generation, parent_pr) from batch body - bisect_is_exhausted(): enforce ceil(log2 N) round limit - build_bisect_batches(): split members, build two integrate/q-*-bisect-* branches - Updated handle_batch_pr(): route semantic-conflict (all green but batch red) to bisect before dissolving; exhaustion falls through to dissolve with bisect_exhausted marker Test suite: 129 tests (was 128), all green. Eviction-first path covers most reds with zero extra runs; bisect lineage bound enforcement prevents unbounded splits; culprit isolation lands survivors; exhaustion dissolves with one exception row. Idempotent re-entry mid-bisect doesn't double-build (state via labels/PR bodies). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…: lines #751 moved the per-tool index out of tools/CLAUDE.md into each tool's own INDEX: header line, from which tools/INDEX.md is generated, because the inline list was the top merge-queue conflict surface. This branch was cut before that and still carried its documentation update as an edit to the old inline list. Resolved by taking main's 33-line tools/CLAUDE.md and porting this branch's updated description(s) into the tool's own INDEX: line, then regenerating tools/INDEX.md: merge_queue.py (with the same state-path rewording #751 needed, so the ported line stays off the state-API lint ratchet) No documentation content lost; only the obsolete inline index lines are gone. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
# Conflicts: # tools/INDEX.md # tools/merge_queue.py
This branch has not been deployed
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
Implement Q3 (bounded bisect for red batches) in merge_queue.py advancer.
When a batch PR is red with all members individually green (semantic conflict signal), split members in half and build two separate integration branches for bisection. Bounded: max 4 rounds/8 total batch builds per original batch via bisect-lineage markers in PR bodies.
Implementation
BISECT_GENERATION_REmarkerintegrate/q-<epoch>-bisect-<gen>-<half>branches, regenerate, push, open batch PRs (exits for next passes)bisect_exhaustedmarkerTest Plan
🤖 Generated with Claude Code