Skip to content

Adopt GitHub merge queue to end the O(N^2) rebase cascade #106

Description

@Zlyzart

Problem

The trunk ruleset uses strict_required_status_checks_policy (require branches up-to-date before merge), and auto-update-prs.yml rebases every behind PR on each trunk push. Together these serialize landings: each landing advances trunk, forcing every other open PR to rebase and re-run full CI before it can proceed. Landing N PRs therefore costs roughly O(N²) CI runs.

Observed on 2026-06-24: landing 7 patch/minor Dependabot PRs took ~40 CI complete runs (13 success, 7 failure, 20 cancelled); the tail PRs were retested 6–9× each.

PR #105 mitigates this (skip un-landable PRs in the sweep + group Dependabot to shrink N), but the underlying serialized rebase-and-retest cascade remains.

Proposed fix: GitHub merge queue

A native merge queue tests PRs together in batches against the projected post-landing trunk and lands them atomically when green:

  • No manual rebase sweep — auto-update-prs.yml's cascade can largely be retired.
  • No "up-to-date" serialization cost — the queue handles ordering and batching → O(N) CI, not O(N²).
  • A failing PR is dropped from the batch without re-testing the whole tail.

Considerations / open questions

  • Ruleset change (owner decision): enable "Require merge queue" on the trunk ruleset and set the required check to run in the merge_group context.
  • ci-complete.yml must also trigger on merge_group events (and report the required CI complete check there).
  • Reconcile with auto-merge: --auto enqueues into the queue instead of landing directly — verify automerge.yml's flow and the agent-review gate still hold.
  • Decide what remains of auto-update-prs.yml (likely deletable once the queue handles freshness).
  • Dependabot + merge queue interaction (grouped PRs, @dependabot commands).

Acceptance

  • Merge queue enabled on trunk; required check runs in merge_group.
  • Landing M green PRs costs ~M CI runs, not ~M².
  • Agent-review gate and gate-integrity owner-approval semantics preserved.

Context: follow-up to PR #105; see also the cascade-waste analysis in that PR.

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority:lowNice to have; backlog.roadmapPlanned roadmap work (tracked as an issue, not in-repo).

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions