Skip to content

chore(ci): retire auto-update-pr-branches.yml (strict=false makes it redundant)#429

Merged
coseto6125 merged 1 commit into
mainfrom
chore/retire-auto-update-workflow
May 23, 2026
Merged

chore(ci): retire auto-update-pr-branches.yml (strict=false makes it redundant)#429
coseto6125 merged 1 commit into
mainfrom
chore/retire-auto-update-workflow

Conversation

@coseto6125
Copy link
Copy Markdown
Owner

Why

Branch protection's `strict: true` was the only thing forcing PR branches to be up-to-date with main before merging. With `strict=false` (just landed) and `ecp/cross-pr-conflict` as a required check, the rebase-on-every-main-push cycle is no longer needed.

What changes for PR authors

Before After
Each main move → all open PRs rebased → CI re-runs from scratch PRs merge in parallel when their changed_symbols don't overlap sibling impact_sets
O(N²) CI cost for N queued PRs O(N) CI — each PR pays its own CI once
Tests on ubuntu/macos/windows re-run on every base movement Tests run once per PR (until author pushes new commits)

What still gates merge

All 10 required checks unchanged on the per-PR axis:

  • Code Quality, Lint, Analyze ×3, CodeQL, Supply-chain, dependency-review, Test (all platforms), `ecp/cross-pr-conflict`

Risk model

`ecp/cross-pr-conflict` has a known false-negative path: when sibling PR's impact_set isn't cached yet (race on simultaneous pushes), the check passes silently (`pr_analyze.rs:502-505`). This was originally backstopped by Mergify's speculative trial-merge — Mergify was removed in #401 so the backstop is gone.

For our scale (single-author, ~5-10 concurrent PRs) the race is rare, and the final required-checks wall before release catches anything that slipped through. Worth revisiting if PR throughput grows or main start breaking from cross-PR regressions.

Out of scope

  • Refactoring `detect_cross_pr_conflicts` to compute sibling impact on-demand when cache is missing (follow-up FU)
  • Updating `auto-merge.yml` comment header about `auto-update-pr-branches.yml` (cosmetic — file no longer exists)

Why admin-merge

Completes the Step 1-4 plan; sitting in the queue means tomorrow's main moves keep paying the O(N²) cost.

… redundant

Branch protection's `strict: true` was the only thing requiring PR branches
to be up-to-date with main before merging. With strict=false (just landed)
and ecp/cross-pr-conflict as a required check (gates against semantic
overlap with sibling PRs labeled `merge-queue`), the rebase-on-every-main-
push cycle is no longer needed:

  - PRs without symbol overlap with siblings → merge in parallel as their
    own CI goes green; no need to be ahead of main
  - PRs with semantic overlap → ecp/cross-pr-conflict stays Pending →
    GitHub native auto-merge waits

The workflow burned ~10 minutes of CI per PR per main-push (rebase
triggers full Test on 3 OS re-run). For N PRs that's O(N²) CI cost
solving a problem ecp/cross-pr-conflict solves at PR-analyze time
(one job per PR, fixed cost).

Rationale per ecp-pr-analyze.yml's own design comment:
  > ecp/cross-pr-conflict status is anchored to the PR HEAD commit and
  > computed against merge-base, so a base-branch update doesn't
  > invalidate it.

That assumption explicitly precludes the need for rebase-on-base-move.

If a real cross-PR conflict slips through (missing-cache hole in
detect_cross_pr_conflicts after Mergify's speculative-trial backstop
was removed in #401), the final required-checks wall before release
catches it.
@coseto6125 coseto6125 merged commit d308dc2 into main May 23, 2026
8 checks passed
@coseto6125 coseto6125 deleted the chore/retire-auto-update-workflow branch May 23, 2026 22:33
@coseto6125 coseto6125 added the merge-queue Opt-in to Mergify merge queue label May 23, 2026
@github-actions
Copy link
Copy Markdown
Contributor

ecp impact cache (0 symbols) — internal, used by ecp dev pr-analyze

[]

@github-actions github-actions Bot added the ecp:risk-low ecp signal label May 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ecp:risk-low ecp signal merge-queue Opt-in to Mergify merge queue

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant