-
Notifications
You must be signed in to change notification settings - Fork 0
bradygaster/squad: Branch protection blocking merges + CI gap analysis #97
Description
Scope: This issue is specific to bradygaster/squad (Brady's repo). It covers branch protection rulesets blocking merges and what CI checks should replace branch protection on this specific repo. For the broader Squad product question of workflow defaults, minutes budgets, and upgrade safety across all customer repos, see #98.
Problem
Brady and Tamir are stuck merging PRs to dev on bradygaster/squad because of branch protection rulesets.
Current ruleset on bradygaster/squad
Active ruleset: "Copilot review for default branch"
- Applies to:
~DEFAULT_BRANCH(which isdev) - Rules:
deletion,non_fast_forward,copilot_code_review - Bypass actors: none (nobody can bypass)
- Enforcement: active
Disabled ruleset: "main" (not blocking anything)
Impact
The copilot_code_review rule means every PR targeting dev requires Copilot to review and have no unresolved comments before merging. If Brady or Tamir want to merge their own code quickly, they are blocked by the Copilot review gate.
Options for Brady (repo owner)
| Option | What changes | Copilot still reviews? | Can merge without waiting? |
|---|---|---|---|
| Add bypass actors | Brady + Tamir can merge even if Copilot hasn't approved | Yes (comments still appear) | Yes |
| Change to evaluate mode | Ruleset runs but doesn't block merges | Yes (advisory only) | Yes |
| Disable ruleset | No Copilot review on dev | No | Yes |
| Keep as-is | Nothing changes | Yes (hard gate) | No |
Recommendation
Add bypass actors (Brady + Tamir) -- this keeps Copilot review as a quality signal while letting trusted maintainers merge when needed. External contributors (like PRs from forks) still go through the full Copilot gate.
Settings path: Settings > Rules > Rulesets > "Copilot review for default branch" > Bypass list
Related
This also affects our fork-first pipeline -- when we publish PRs to upstream, the Copilot review gate on dev means Brady can't merge even clean PRs without Copilot approval. Our pipeline already fixes Copilot issues before publishing, so the gate is redundant for our PRs.
CI Check Approaches -- Comparison
| Approach | Best for | Brady can toggle? |
|---|---|---|
Repo variables (vars.SQUAD_*) |
Global on/off for entire check categories (ESLint, audit, coverage) | Yes -- Settings UI, no code changes |
PR labels (skip-lint, skip-tests) |
Per-PR overrides when a contributor has a legitimate reason to skip | Yes -- Add/remove label on any PR |
| Branch protection rulesets | Hard gates that nobody can bypass (or bypass-list for trusted maintainers) | Yes -- Settings UI, but personal repos can't add bypass actors |
| Required status checks | Blocking merge until specific CI jobs pass | Yes -- Settings UI, pairs with repo variables for which jobs run |
| CODEOWNERS + review rules | Requiring specific people to approve changes to critical paths | (!) Requires GitHub Teams or paid plan for enforcement |
Workflow if conditions |
Conditional logic within a workflow (path filters, changed-file checks) | No -- Requires editing .yml files |
Recommended combination
- Repo variables for global toggles (Brady flips a switch, no PRs needed)
- PR labels for per-PR exceptions (visible in PR history, auditable)
- Advisory mode first -- new checks warn but don't block until proven stable
- No branch protection -- all value delivered through CI checks instead