Skip to content

ci(mergify): stop auto-queuing human PRs#191

Open
unclesp1d3r wants to merge 4 commits into
mainfrom
fix/mergify-manual-queue-humans
Open

ci(mergify): stop auto-queuing human PRs#191
unclesp1d3r wants to merge 4 commits into
mainfrom
fix/mergify-manual-queue-humans

Conversation

@unclesp1d3r

Copy link
Copy Markdown
Member

Problem

Human-created PRs are being automatically added to the merge queue. Auto-queueing should be limited to dosubot and dependabot; a maintainer should have to explicitly /queue their own PRs.

Root cause

The default queue rule carried queue_conditions matching every human PR to main:

  - name: default
    queue_conditions:
      - base = main
      - author != dependabot[bot]
      - author != dosubot[bot]

These were generated by the automated migration off the deprecated autoqueue format (#166) and directly contradict the rule's own # Human PRs: manually enqueued via /queue command comment. A queue with matching queue_conditions routes those PRs into the queue automatically.

Fix

Remove the queue_conditions from the default queue so it has no automatic entry condition -- PRs reach it only via an explicit /queue command (repo permissions already restrict who can send it). Auto-queueing continues to work for the bots through the unchanged merge_protections_settings.auto_merge_conditions, which lists only dosubot[bot] and dependabot[bot].

This mirrors the manual-only default queue in the opnDossier config.

Notes

  • Mergify evaluates merge-queue config from the base (main) branch, so this takes effect once merged to main, not on this PR.
  • No change to CI check names, bot queues, merge protections, or auto_merge_conditions.

Test plan

  • .mergify.yml parses as valid YAML
  • default queue retains all 11 merge_conditions; dosubot/dependabot queues unchanged
  • After merge: confirm a new human PR is NOT auto-queued and requires /queue
  • After merge: confirm a dependabot/dosubot PR still auto-queues

The 'default' queue carried queue_conditions matching every human PR to
main (base = main, author != bots), which auto-routed human PRs into the
merge queue -- contradicting the rule's own 'manually enqueued via /queue'
comment. Remove them so the default queue has no automatic entry: only
dosubot and dependabot auto-queue (via auto_merge_conditions), and human
PRs require an explicit /queue command from a maintainer.

Mirrors the manual-only default queue in the opnDossier config.

Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copilot AI review requested due to automatic review settings July 2, 2026 03:14
@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Updated .mergify.yml so the default merge queue no longer auto-enqueues human-created PRs targeting main.

  • Removed queue_conditions from the default queue, making it manual-only.
  • Kept existing bot auto-queue behavior intact for dosubot[bot] and dependabot[bot] via auto_merge_conditions.
  • Adjusted queue documentation/commentary to match the new /queue-driven workflow.

No changes were made to merge protections, CI checks, or auto-merge settings.

Walkthrough

The default queue rule in .mergify.yml was changed to be manual-only by removing its queue_conditions. The accompanying comment was updated to clarify that only dosubot and dependabot PRs are auto-queued via auto_merge_conditions, while other PRs require maintainers to trigger /queue manually.

Changes

Mergify Queue Configuration

Layer / File(s) Summary
Manual-only default queue rule
.mergify.yml
The default queue rule no longer has queue_conditions, making it manual-only; comment updated to explain that dosubot/dependabot auto-queue while human PRs need /queue.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Suggested labels: enhancement

Poem

A queue once auto-filled with glee,
Now waits for hands to set it free.
Bots still hop the line with ease,
Humans type /queue, if you please.
🐰 CI hums a manual tune today.

🚥 Pre-merge checks | ✅ 9 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title matches the change but uses an unsupported scope, so it does not satisfy the required Conventional Commits template. Change the scope to one of the allowed values, such as ci(deps), and keep the summary aligned with the Mergify queue change.
✅ Passed checks (9 passed)
Check name Status Explanation
Description check ✅ Passed The description clearly explains the Mergify queue change and its impact on human PR auto-queuing.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
No Unsafe Code ✅ Passed No Rust files changed; src/lib.rs and src/main.rs both have #![forbid(unsafe_code)], and no unsafe blocks or allow attrs were introduced.
Error Handling ✅ Passed Not applicable: this PR only changes .mergify.yml; no Rust code or error-handling paths were modified.
Ascii Only ✅ Passed The only changed file, .mergify.yml, is ASCII-only; no emojis, smart quotes, em-dashes, or other non-ASCII characters were introduced.
File Size Limit ✅ Passed PASS: .mergify.yml is 120 lines (<500), and there are no file-level #![allow(...)] directives; the only #[allow] found is a narrow function-level test suppression.
Section Weight Consistency ✅ Passed PR only changes .mergify.yml; no container parser files or section-weight logic are touched, so the check is not applicable.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/mergify-manual-queue-humans

Comment @coderabbitai help to get the list of available commands.

@mergify

mergify Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Merge Protections

🔴 1 of 5 protections blocking

Protection Waiting on
🔴 🚦 Auto-queue
🟢 📃 Configuration Change Requirements
🟢 Enforce conventional commit
🟢 Full CI must pass
🟢 Do not merge outdated PRs

🔴 🚦 Auto-queue

This rule is failing.

When all merge protections are satisfied and these conditions match, this pull request will be queued automatically.

  • any of:
    • all of:
      • author = dosubot[bot]
      • base = main
    • all of:
      • author = dependabot[bot]
      • base = main

Show 4 satisfied protections

🟢 📃 Configuration Change Requirements

Mergify configuration change

  • check-success = Configuration changed

🟢 Enforce conventional commit

Make sure that we follow https://www.conventionalcommits.org/en/v1.0.0/

  • title ~= ^(fix|feat|docs|style|refactor|perf|test|build|ci|chore|revert)(?:\(.+\))?:

🟢 Full CI must pass

All CI checks must pass. This protection prevents manual merges that bypass the merge queue.

  • check-success = coverage
  • check-success = msrv (stable minus 1 releases)
  • check-success = msrv (stable minus 2 releases)
  • check-success = msrv (stable minus 3 releases)
  • check-success = msrv (stable minus 4 releases)
  • check-success = msrv (stable)
  • check-success = quality
  • check-success = test
  • check-success = test-cross-platform (macos-latest, macOS)
  • check-success = test-cross-platform (ubuntu-latest, Linux)
  • check-success = test-cross-platform (windows-latest, Windows)

🟢 Do not merge outdated PRs

Make sure PRs are within 10 commits of the base branch before merging

  • #commits-behind <= 10

@coderabbitai coderabbitai Bot added the enhancement New feature or request label Jul 2, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adjusts the repository's Mergify merge queue configuration so that human-authored PRs are no longer auto-enqueued, aligning behavior with the stated intent that maintainers must explicitly enqueue their own PRs.

Changes:

  • Removed queue_conditions from the default (human) queue rule to prevent automatic queue entry.
  • Updated the surrounding comment to clarify that the default queue is manual-only and requires the /queue command.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.mergify.yml:
- Around line 30-34: The default Mergify queue rule no longer restricts queued
PRs to main, so `/queue default` can now accept other target branches. Update
the default rule in the Mergify config to restore the base branch gate by adding
the main-only condition back alongside the existing merge checks. Use the
default queue entry to locate the change and keep the rule limited to
main-targeted PRs.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Pro

Run ID: fe252cb3-9e1f-44f9-b012-a0f9597d5b7c

📥 Commits

Reviewing files that changed from the base of the PR and between 3feb009 and f9a86e2.

📒 Files selected for processing (1)
  • .mergify.yml

Comment thread .mergify.yml
Comment on lines +30 to 34
# Human PRs: manual-only. This queue has no queue_conditions, so no PR enters
# it automatically -- a maintainer must send the `/queue` command (only
# dosubot and dependabot are auto-queued, via auto_merge_conditions below).
- name: default
merge_method: squash

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check whether merge_conditions for the `default` queue rule still restricts base = main
rg -n -A 20 'name: default' .mergify.yml

Repository: EvilBit-Labs/Stringy

Length of output: 1038


Restore the base = main gate on default

queue_conditions is gone, and the remaining merge_conditions only check CI status. That means /queue default can now accept PRs targeting branches other than main. Add base = main back to this rule if the queue is meant to stay main-only.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.mergify.yml around lines 30 - 34, The default Mergify queue rule no longer
restricts queued PRs to main, so `/queue default` can now accept other target
branches. Update the default rule in the Mergify config to restore the base
branch gate by adding the main-only condition back alongside the existing merge
checks. Use the default queue entry to locate the change and keep the rule
limited to main-targeted PRs.

@codecov

codecov Bot commented Jul 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@mergify

mergify Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

Copilot AI review requested due to automatic review settings July 3, 2026 07:20
@unclesp1d3r unclesp1d3r removed the request for review from Copilot July 3, 2026 07:20
Copilot AI review requested due to automatic review settings July 3, 2026 07:50
@unclesp1d3r unclesp1d3r removed the request for review from Copilot July 3, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants