Skip to content

feat(rust): port ci queue-info to native Rust#1407

Merged
mergify[bot] merged 2 commits into
mainfrom
devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0
May 13, 2026
Merged

feat(rust): port ci queue-info to native Rust#1407
mergify[bot] merged 2 commits into
mainfrom
devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0

Conversation

@jd
Copy link
Copy Markdown
Member

@jd jd commented May 11, 2026

The Rust binary now serves mergify ci queue-info natively.
The Python implementation (mergify_cli/ci/cli.py:queue_info)
and its tests are removed in the same PR — port-and-delete keeps
a single live copy.

The previous commit landed a live-smoke test pinning the
INVALID_STATE exit code outside an MQ context. That same
test now exercises the Rust path.

ci queue-info prints the merge-queue batch metadata embedded
in the current draft PR as pretty JSON. Outside an MQ context
(no event payload, no PR body fenced block) it exits
INVALID_STATE (exit 7).

When $GITHUB_OUTPUT is set (GitHub Actions runner), the
command also appends the metadata as queue_metadata under a
random ghadelimiter_<uuid> heredoc, matching the pattern
GitHub Actions expects for multi-line workflow outputs.

The implementation reuses the shared queue_metadata and
github_event modules introduced by the previous (git-refs)
port commit.

Adds the uuid dep (v4 random UUIDs for the ghadelimiter) to
the mergify-ci crate.

3 new queue-info tests in the mergify-ci crate. The Python
queue-info tests in test_cli.py, test_cli_exit_codes.py,
and test_exit_code_contract.py are removed.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

Depends-On: #1406

@jd
Copy link
Copy Markdown
Member Author

jd commented May 11, 2026

This pull request is part of a Mergify stack:

# Pull Request Link
1 test(ci): add live smoke test for ci queue-info #1406
2 feat(rust): port ci queue-info to native Rust #1407 👈
3 test(queue): add live smoke test for queue status #1409
4 feat(rust): port queue status to native Rust #1359
5 test: derive native queue commands from the binary, not a hardcoded list #1366
6 test(queue): add live smoke test for queue show #1408
7 feat(rust): port queue show to native Rust #1399
8 test(skill): port the skill-references test to Rust #1414

@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented May 11, 2026

Merge Protections

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

🟢 ⛓️ Depends-On Requirements

Wonderful, this rule succeeded.

Requirement based on the presence of Depends-On in the body of the pull request

🟢 🤖 Continuous Integration

Wonderful, this rule succeeded.
  • all of:
    • check-success=ci-gate

🟢 👀 Review Requirements

Wonderful, this rule succeeded.
  • any of:
    • #approved-reviews-by>=2
    • author = dependabot[bot]
    • author = mergify-ci-bot
    • author = renovate[bot]

🟢 Enforce conventional commit

Wonderful, this rule succeeded.

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|ui)(?:\(.+\))?:

🟢 🔎 Reviews

Wonderful, this rule succeeded.
  • #changes-requested-reviews-by = 0
  • #review-requested = 0
  • #review-threads-unresolved = 0

🟢 📕 PR description

Wonderful, this rule succeeded.
  • body ~= (?ms:.{48,})

@jd jd marked this pull request as ready for review May 11, 2026 12:04
@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from 1d4e970 to 78d8f46 Compare May 11, 2026 12:19
@jd jd had a problem deploying to func-tests-live May 11, 2026 12:19 — with GitHub Actions Failure
@jd
Copy link
Copy Markdown
Member Author

jd commented May 11, 2026

Revision history

# Type Changes Reason Date
1 initial 1d4e970 2026-05-11 12:19 UTC
2 content 1d4e970 → 78d8f46 2026-05-11 12:19 UTC
3 rebase 78d8f46 → 3718941 2026-05-11 14:08 UTC
4 rebase 3718941 → 86bfde8 2026-05-11 14:59 UTC
5 rebase 86bfde8 → d4d2fb9 2026-05-11 20:59 UTC
6 rebase d4d2fb9 → 26cefe3 (rebase only) 2026-05-12 07:44 UTC
7 rebase 26cefe3 → d5d3847 (rebase only) 2026-05-13 08:25 UTC

@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 11, 2026 12:19 Failure
@mergify mergify Bot requested a review from a team May 11, 2026 12:31
@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from 78d8f46 to 3718941 Compare May 11, 2026 14:07
@jd jd temporarily deployed to func-tests-live May 11, 2026 14:07 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 11, 2026 14:08 Failure
@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from 3718941 to 86bfde8 Compare May 11, 2026 14:59
@jd jd temporarily deployed to func-tests-live May 11, 2026 14:59 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 11, 2026 14:59 Failure
@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from 86bfde8 to d4d2fb9 Compare May 11, 2026 20:59
@jd jd temporarily deployed to func-tests-live May 11, 2026 20:59 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 11, 2026 20:59 Failure
@jd jd requested a review from Copilot May 12, 2026 07:06
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

Ports mergify ci queue-info from the Python CLI into the Rust-native mergify binary, removing the legacy Python implementation and migrating coverage to Rust while preserving the INVALID_STATE (7) contract outside merge-queue context.

Changes:

  • Add Rust-native ci queue-info subcommand wiring in the Rust CLI entrypoint.
  • Implement queue-info in mergify-ci (pretty JSON + optional $GITHUB_OUTPUT heredoc output).
  • Remove the Python queue-info implementation and its Python-unit tests in favor of Rust tests (while keeping the live smoke/contract test elsewhere).

Reviewed changes

Copilot reviewed 8 out of 9 changed files in this pull request and generated no comments.

Show a summary per file
File Description
mergify_cli/tests/test_exit_code_contract.py Removes Python-level exit code contract coverage for ci queue-info (now covered by native path + live smoke).
mergify_cli/tests/ci/test_cli.py Removes Python queue-info functional tests (port-and-delete).
mergify_cli/tests/ci/test_cli_exit_codes.py Removes Python exit-code test for ci queue-info (native path now).
mergify_cli/ci/cli.py Deletes the Click queue-info command implementation and related imports.
crates/mergify-cli/src/main.rs Adds native command detection + clap subcommand for ci queue-info and dispatches to mergify-ci.
crates/mergify-ci/src/queue_info.rs New Rust implementation + unit tests for MQ metadata detection, JSON printing, and $GITHUB_OUTPUT appending.
crates/mergify-ci/src/lib.rs Exposes the new queue_info module.
crates/mergify-ci/Cargo.toml Adds uuid dependency for randomized GitHub Actions heredoc delimiter.
Cargo.lock Locks new uuid dependency transitive graph.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from d4d2fb9 to 26cefe3 Compare May 12, 2026 07:44
@jd jd temporarily deployed to func-tests-live May 12, 2026 07:44 — with GitHub Actions Inactive
@mergify mergify Bot had a problem deploying to Mergify Merge Protections May 12, 2026 07:45 Failure
jd and others added 2 commits May 13, 2026 10:25
Pins the contract for ``mergify ci queue-info`` so the upcoming
Rust port can be validated against the same test that exercises
the Python implementation. Lands first; the port commit on top
re-runs this test against Rust — same contract, both ends.

The test doesn't need ``live_token`` (the command is locally
evaluated). The conftest fixture scrubs every event env var and
runs in a tmp dir, so the detector always reports "no MQ
context". The assertion checks for exit code 7 (``INVALID_STATE``)
and an MQ-context message in stdout or stderr.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: Idff72acfc1f35f7f64051a4f62a3fe625d2b802f
The Rust binary now serves ``mergify ci queue-info`` natively.
The Python implementation (``mergify_cli/ci/cli.py:queue_info``)
and its tests are removed in the same PR — port-and-delete keeps
a single live copy.

The previous commit landed a live-smoke test pinning the
``INVALID_STATE`` exit code outside an MQ context. That same
test now exercises the Rust path.

``ci queue-info`` prints the merge-queue batch metadata embedded
in the current draft PR as pretty JSON. Outside an MQ context
(no event payload, no PR body fenced block) it exits
``INVALID_STATE`` (exit 7).

When ``$GITHUB_OUTPUT`` is set (GitHub Actions runner), the
command also appends the metadata as ``queue_metadata`` under a
random ``ghadelimiter_<uuid>`` heredoc, matching the pattern
GitHub Actions expects for multi-line workflow outputs.

The implementation reuses the shared ``queue_metadata`` and
``github_event`` modules introduced by the previous (git-refs)
port commit.

Adds the ``uuid`` dep (v4 random UUIDs for the ghadelimiter) to
the ``mergify-ci`` crate.

3 new queue-info tests in the ``mergify-ci`` crate. The Python
queue-info tests in ``test_cli.py``, ``test_cli_exit_codes.py``,
and ``test_exit_code_contract.py`` are removed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Change-Id: If0cdc5a06685387f6a9379b237eb5d184b071dc4
@jd jd force-pushed the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch from 26cefe3 to d5d3847 Compare May 13, 2026 08:25
@jd jd temporarily deployed to func-tests-live May 13, 2026 08:25 — with GitHub Actions Inactive
@jd jd temporarily deployed to func-tests-live May 13, 2026 08:25 — with GitHub Actions Inactive
@mergify mergify Bot deployed to Mergify Merge Protections May 13, 2026 08:25 Active
Base automatically changed from devs/jd/worktree-rust-port/add-live-smoke-test-ci-queue-info--dff72acf to main May 13, 2026 09:07
@mergify mergify Bot requested a review from a team May 13, 2026 09:55
@mergify
Copy link
Copy Markdown
Contributor

mergify Bot commented May 13, 2026

Merge Queue Status

This pull request spent 15 minutes 26 seconds in the queue, including 15 minutes 2 seconds running CI.

Required conditions to merge

mergify Bot added a commit that referenced this pull request May 13, 2026
@mergify mergify Bot added the queued label May 13, 2026
@mergify mergify Bot merged commit d7d815f into main May 13, 2026
36 checks passed
@mergify mergify Bot deleted the devs/jd/worktree-rust-port/port-ci-queue-info-native-rust--f0cdc5a0 branch May 13, 2026 13:51
@mergify mergify Bot removed the queued label May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants