Skip to content

ci: Mergify merge queue, dependabot integration, and CI simplification#79

Merged
mergify[bot] merged 15 commits into
mainfrom
feat/mergify-merge-queue
Feb 15, 2026
Merged

ci: Mergify merge queue, dependabot integration, and CI simplification#79
mergify[bot] merged 15 commits into
mainfrom
feat/mergify-merge-queue

Conversation

@unclesp1d3r
Copy link
Copy Markdown
Member

@unclesp1d3r unclesp1d3r commented Feb 15, 2026

Summary

  • Add Mergify merge queue with auto-queue rules for approved, release-plz, and dependabot PRs
  • Remove changes job and all path-filter conditionals from CI -- all jobs run unconditionally
  • Remove advanced CodeQL workflow in favor of GitHub default code scanning
  • Fix cargo deny check to use default config (was referencing non-existent deny.ci.toml)
  • Add label != do-not-merge exclusion to all auto-queue rules
  • Add auto-update rule to keep open PRs rebased against main
  • Auto-approve dependabot PRs and disable dependabot's own rebase-strategy (Mergify handles it)
  • Add DCO remediation commit config for contributor-friendly sign-off recovery

Note: The diff appears larger than expected because PR #78 was merged and the branch was deleted before additional commits were pushed to the same branch name.

Post-merge steps

  • Add Mergify Merge Protections as required status check in branch protection

Test plan

  • Mergify config validates (Configuration changed check passes)
  • CI jobs run unconditionally (no path filtering)
  • Merge queue processes PRs correctly (PRs merge queue: embarking main (0c928d7) and #67 together #80-84 confirm this)
  • Auto-update rule keeps PRs current with main
  • DCO check passes with remediation config

Copilot AI review requested due to automatic review settings February 15, 2026 22:47
@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Feb 15, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 15, 2026

Summary by CodeRabbit

  • New Features

    • Tiered PR merge-queue automation with smarter routing, auto-queueing, and auto-approval for dependency updates
    • Automatic PR synchronization with main to keep branches up to date
    • Enabled remediation commits for DCO compliance
  • Documentation

    • Major README redesign with streamlined examples and architecture overview
    • CI/CD docs updated to describe merge-queue workflow
  • Chores

    • Updated action/version pins and dependency update behavior tweaks

Walkthrough

Renames and restructures Mergify queue rules (including auto-approve for dependabot), adds a keep-up-to-date update rule, adds label-based exclusions, disables Dependabot rebase for some ecosystems, enables DCO remediation commits, and updates README/AGENTS docs and badges. (49 words)

Changes

Cohort / File(s) Summary
Mergify configuration
/.mergify.yml
Renamed queue rules, tightened conditions (require maintainer author and lgtm label), added label != do-not-merge filters, introduced Tier 2 rule for release-plz, Tier 3 rule for external PRs approved by maintainers, enabled auto-approve for dependabot, and added update rule for base = main.
Dependabot configuration
.github/dependabot.yml
Set rebase-strategy: "disabled" for cargo, github-actions, and devcontainers; normalized schedule interval formatting (quoted strings).
DCO configuration
.github/dco.yml
Added allowRemediationCommits with individual: true and thirdParty: true.
Documentation & Governance
README.md, AGENTS.md, CONTRIBUTING.md
Added Mergify badge and merge-queue documentation, updated CI/merge-queue behavior, streamlined README content and examples, and updated maintainer entry in governance.
CI/action version pins
dist-workspace.toml
Bumped action pins: actions/checkout -> v6.0.2, actions/upload-artifact -> v6.0.0.

Sequence Diagram(s)

sequenceDiagram
    participant Author as PR Author
    participant GitHub as GitHub
    participant Mergify as Mergify
    participant Repo as Repository

    Author->>GitHub: Open or update PR
    GitHub->>Mergify: PR event
    Mergify->>Mergify: Evaluate rules (author, labels, base, draft, conflicts, workflows)
    alt matches dependabot auto-approve and queue
        Mergify->>GitHub: Submit APPROVE review (automated)
        Mergify->>Repo: Add PR to merge queue
    end
    alt matches "Keep PRs up to date with main"
        Mergify->>Repo: Perform update (rebase/merge from main)
        Repo->>GitHub: Update PR branch
    end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Poem

🐰 I hopped through rules and labels bright,
I nudged the queue to merge just right,
Dependabot got a kindly nod,
Main was pulled in—no merge left odd,
A rabbit's cheer for orderly flight.

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title directly matches the main objectives: Mergify merge queue, dependabot integration, and CI simplification are all primary changes in the PR.
Description check ✅ Passed The description comprehensively covers all major changes including Mergify setup, dependabot integration, CI simplification, DCO config, and documentation updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/mergify-merge-queue

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

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Feb 15, 2026

Merge Protections

Your pull request matches the following merge protections and will not be merged until they are valid.

🟢 📃 Configuration Change Requirements

Wonderful, this rule succeeded.

Mergify configuration change

  • check-success = Configuration changed

🟢 CI must pass

Wonderful, this rule succeeded.

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

  • check-success = coverage
  • check-success = quality
  • check-success = test
  • check-success = test-cross-platform (macos-latest, macOS)
  • check-success = test-cross-platform (ubuntu-22.04, Linux)
  • check-success = test-cross-platform (ubuntu-latest, Linux)
  • check-success = test-cross-platform (windows-latest, Windows)

🟢 Do not merge outdated PRs

Wonderful, this rule succeeded.

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

  • #commits-behind <= 10

@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:L This PR changes 100-499 lines, ignoring generated files. labels Feb 15, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This pull request appears to be merging changes from PR #78 (adding Mergify merge queue and simplifying CI) along with the addition of label != do-not-merge exclusions to auto-queue rules. While the PR description focuses only on adding the label exclusion, the actual changes include: introducing Mergify queue rules with squash merging, removing CI path filtering logic so all jobs run unconditionally, deleting the CodeQL workflow, and fixing the cargo deny configuration.

Changes:

  • Add label != do-not-merge condition to all three Mergify auto-queue rules (approved PRs, release-plz, and dependabot)
  • Introduce complete Mergify queue configuration with required CI checks and simplify merge protections
  • Remove CI workflow path filtering (changes job), making all CI jobs run unconditionally
  • Delete CodeQL workflow file (security scanning now via scorecard and security.yml only)
  • Fix cargo deny command to use default deny.toml instead of non-existent deny.ci.toml

Reviewed changes

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.

File Description
.mergify.yml Adds complete queue_rules section and label exclusions to auto-queue rules; simplifies merge_protections
.github/workflows/security.yml Fixes cargo deny to use default config file instead of non-existent deny.ci.toml
.github/workflows/codeql.yml Deletes entire CodeQL security analysis workflow
.github/workflows/ci.yml Removes path filtering logic; all CI jobs now run unconditionally; simplifies job dependencies

Comment thread .mergify.yml
@unclesp1d3r unclesp1d3r changed the title chore: add do-not-merge label exclusion to auto-queue rules chore: Mergify auto-update rule and do-not-merge label exclusion Feb 15, 2026
@coderabbitai coderabbitai Bot added enhancement New feature or request size:M This PR changes 30-99 lines, ignoring generated files. testing Test infrastructure and coverage labels Feb 15, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented Feb 15, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@dosubot dosubot Bot added size:S This PR changes 10-29 lines, ignoring generated files. and removed size:S This PR changes 10-29 lines, ignoring generated files. size:M This PR changes 30-99 lines, ignoring generated files. labels Feb 15, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
.mergify.yml (1)

44-52: Add label != do-not-merge condition for consistency with other rules.

All three other pull_request rules (lines 14, 23, 32) exclude PRs labeled do-not-merge, but the auto-update rule (line 44) does not. Adding this condition ensures that explicitly blocked PRs are not auto-rebased, avoiding unnecessary CI runs or confusion.

Note: The update action uses merge-based updates by default (merging the base branch into the PR branch), not rebase. If rebase behavior is intended, use the separate rebase action instead.

💡 Optional: add label exclusion
  - name: Keep PRs up to date with main
    conditions:
      - base = main
      - -conflict
      - -draft
      - -author = dependabot[bot]
+     - label != do-not-merge
    actions:
      update:

coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 15, 2026
Copilot AI review requested due to automatic review settings February 15, 2026 22:59
@unclesp1d3r unclesp1d3r changed the title chore: Mergify auto-update rule and do-not-merge label exclusion ci: Mergify merge queue, dependabot integration, and CI simplification Feb 15, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 15, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.

Comment thread .mergify.yml
Comment thread .github/dependabot.yml
Comment thread .github/dco.yml
Comment thread .mergify.yml
@dosubot dosubot Bot added size:M This PR changes 30-99 lines, ignoring generated files. and removed size:S This PR changes 10-29 lines, ignoring generated files. labels Feb 15, 2026
@coderabbitai coderabbitai Bot added the documentation Improvements or additions to documentation label Feb 15, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Feb 15, 2026
@unclesp1d3r unclesp1d3r requested a review from Copilot February 15, 2026 23:04
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Feb 15, 2026

Merge Queue Status

Rule: default


This pull request spent 55 seconds in the queue, with no time running CI.

Required conditions to merge
  • check-success = coverage
  • check-success = quality
  • check-success = test
  • check-success = test-cross-platform (macos-latest, macOS)
  • check-success = test-cross-platform (ubuntu-22.04, Linux)
  • check-success = test-cross-platform (ubuntu-latest, Linux)
  • check-success = test-cross-platform (windows-latest, Windows)
  • all of [🛡 Merge Protections rule CI must pass]:
    • check-success = coverage
    • check-success = quality
    • check-success = test
    • check-success = test-cross-platform (macos-latest, macOS)
    • check-success = test-cross-platform (ubuntu-22.04, Linux)
    • check-success = test-cross-platform (ubuntu-latest, Linux)
    • check-success = test-cross-platform (windows-latest, Windows)
  • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
  • any of [🛡 GitHub repository ruleset rule main]:
    • check-success = DCO
    • check-neutral = DCO
    • check-skipped = DCO
  • any of [🛡 GitHub repository ruleset rule main]:
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections

Reason

The pull request #79 has been manually updated

Hint

If you want to requeue this pull request, you can post a @mergifyio requeue comment.

@unclesp1d3r unclesp1d3r added the lgtm Approved for the merge queue label Feb 15, 2026
@mergify mergify Bot removed the queued label Feb 15, 2026
The `-` negation prefix must be inside YAML quotes, not outside.

Signed-off-by: UncleSp1d3r <unclesp1d3r@evilbitlabs.io>
Copilot AI review requested due to automatic review settings February 15, 2026 23:49
@mergify mergify Bot added the queued label Feb 15, 2026
mergify Bot added a commit that referenced this pull request Feb 15, 2026
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented Feb 15, 2026

Merge Queue Status

Rule: default · Merge ETA: 2026-02-15 23:59 UTC 🚀


Required conditions to merge
  • check-success = test-cross-platform (windows-latest, Windows)
  • all of [🛡 Merge Protections rule CI must pass]:
    • check-success = test-cross-platform (windows-latest, Windows)
    • check-success = coverage
    • check-success = quality
    • check-success = test
    • check-success = test-cross-platform (macos-latest, macOS)
    • check-success = test-cross-platform (ubuntu-22.04, Linux)
    • check-success = test-cross-platform (ubuntu-latest, Linux)
  • check-success = coverage
  • check-success = quality
  • check-success = test
  • check-success = test-cross-platform (macos-latest, macOS)
  • check-success = test-cross-platform (ubuntu-22.04, Linux)
  • check-success = test-cross-platform (ubuntu-latest, Linux)
  • all of [🛡 Merge Protections rule Do not merge outdated PRs]:
  • any of [🛡 GitHub repository ruleset rule main]:
    • check-success = DCO
    • check-neutral = DCO
    • check-skipped = DCO
  • any of [🛡 GitHub repository ruleset rule main]:
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
    • check-success = Mergify Merge Protections
Required conditions to stay in the queue
  • -closed [📌 queue requirement]
  • -conflict [📌 queue requirement]
  • -draft [📌 queue requirement]
  • any of [📌 queue -> configuration change requirements]:
    • check-success = Configuration changed
    • -mergify-configuration-changed
  • any of [📌 queue requirement]:
    • check-success = Mergify Merge Protections
    • check-neutral = Mergify Merge Protections
    • check-skipped = Mergify Merge Protections
  • any of [🔀 queue conditions]:
    • all of [📌 queue conditions of queue default]:
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-success = DCO
        • check-neutral = DCO
        • check-skipped = DCO
      • any of [🛡 GitHub repository ruleset rule main]:
        • check-success = Mergify Merge Protections
        • check-neutral = Mergify Merge Protections
        • check-skipped = Mergify Merge Protections

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Comment thread dist-workspace.toml
Comment on lines 52 to +56
[dist.github-action-commits]
"actions/checkout" = "v6"
"actions/checkout" = "v6.0.2"
"actions/download-artifact" = "v7"
"actions/attest-build-provenance" = "v3"
"actions/upload-artifact" = "v6"
"actions/upload-artifact" = "v6.0.0"
Copy link

Copilot AI Feb 15, 2026

Choose a reason for hiding this comment

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

[dist.github-action-commits] is still using version tags (e.g. v6.0.2, v6.0.0). In this repo, GitHub Actions are generally pinned to full commit SHAs for supply-chain security (e.g. .github/workflows/ci.yml uses actions/checkout@de0fac…). Consider switching these entries to the same commit SHAs so the cargo-dist generated release.yml also stays SHA-pinned instead of floating tags.

Copilot uses AI. Check for mistakes.
Comment thread .mergify.yml
Comment on lines +35 to +56
- name: Auto-approve and queue dependabot PRs
conditions:
- base = main
- author = dependabot[bot]
- label != do-not-merge
- -files~=\.github/workflows/release\.yml
actions:
review:
type: APPROVE
message: Automatically approved by Mergify
queue:
name: default

# Tier 3: All other PRs (external contributors, copilot) -- require maintainer approval
- name: Queue external PRs when approved by maintainer
conditions:
- base = main
- "-author=@maintainers"
- author != dependabot[bot]
- "-head ~= ^release-plz-"
- "approved-reviews-by=@maintainers"
- label != do-not-merge
Copy link

Copilot AI Feb 15, 2026

Choose a reason for hiding this comment

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

The dependabot rule explicitly excludes PRs that touch .github/workflows/release.yml (-files~=...), but the other queueing rules also exclude author = dependabot[bot]. That combination means dependabot PRs that modify release.yml won’t be queued by Mergify at all (even after maintainer approval/label), which may strand those PRs outside the merge queue. Consider adding a separate rule to allow those PRs to be queued when a maintainer approves or applies lgtm (without auto-approving them).

Copilot uses AI. Check for mistakes.
@mergify mergify Bot merged commit dd01ae4 into main Feb 15, 2026
32 of 34 checks passed
@mergify mergify Bot deleted the feat/mergify-merge-queue branch February 15, 2026 23:59
@mergify mergify Bot removed the queued label Feb 15, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
AGENTS.md (1)

402-436: ⚠️ Potential issue | 🟡 Minor

Clarify that auto-rebase applies only to eligible PRs.

The "Keep PRs up to date with main" rule in .mergify.yml excludes drafts, conflicted PRs, and dependabot PRs, so "Mergify rebases against main" is inaccurate as written. Update to reflect the actual conditions:

Suggested wording
-Mergify rebases against main, runs CI, and squash-merges on success.
+Mergify rebases eligible PRs against main (non-draft, no conflicts, excluding dependabot), runs CI, and squash-merges on success.
🧹 Nitpick comments (1)
README.md (1)

19-24: Verify the version/metrics block is current (and consider de-staling).

The fixed version number and test/coverage counts can drift quickly. Please confirm these are accurate and consider replacing with badges or CI-derived values to avoid staleness.

@github-actions github-actions Bot mentioned this pull request Feb 16, 2026
@github-actions github-actions Bot mentioned this pull request Feb 16, 2026
This was referenced Feb 23, 2026
mergify Bot pushed a commit that referenced this pull request Mar 1, 2026
## 🤖 New release

* `libmagic-rs`: 0.1.1 -> 0.2.0 (⚠ API breaking changes)

### ⚠ `libmagic-rs` breaking changes

```text
--- failure enum_unit_variant_changed_kind: An enum unit variant changed kind ---

Description:
A public enum's exhaustive unit variant has changed to a different kind of enum variant, breaking possible instantiations and patterns.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_unit_variant_changed_kind.ron

Failed in:
  variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84
  variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84
  variant TypeKind::Byte in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:84

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/enum_variant_added.ron

Failed in:
  variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
  variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
  variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
  variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177
  variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
  variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
  variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
  variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177
  variant Operator:LessThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:144
  variant Operator:GreaterThan in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:155
  variant Operator:LessEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:166
  variant Operator:GreaterEqual in /tmp/.tmpchbzmC/libmagic-rs/src/parser/ast.rs:177

--- failure function_parameter_count_changed: pub fn parameter count changed ---

Description:
A publicly-visible function now takes a different number of parameters.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.46.0/src/lints/function_parameter_count_changed.ron

Failed in:
  libmagic_rs::evaluator::types::read_byte now takes 3 parameters instead of 2, in /tmp/.tmpchbzmC/libmagic-rs/src/evaluator/types.rs:79
```

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [0.2.0] - 2026-03-01

### Features

- **parser**: Implement comparison operators
([#104](#104))

### Miscellaneous Tasks

- **Mergify**: Add outdated PR protection
([#75](#75))
- Add Mergify merge queue and simplify CI
([#78](#78))
- Mergify merge queue, dependabot integration, and CI simplification
([#79](#79))
- **release**: Add regex for version bumping based on commit types
<!-- generated by git-cliff -->
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request lgtm Approved for the merge queue size:L This PR changes 100-499 lines, ignoring generated files. testing Test infrastructure and coverage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants