Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,30 @@ with `invoke_without_command=True` for consistent "did you mean?"
suggestions. Add an explicit `click.echo(ctx.get_help())` in the group
callback when `ctx.invoked_subcommand is None` for help display.

## Rust Port Workflow

The CLI is being ported from Python to Rust incrementally. The shipped
binary is `mergify` (built from `crates/mergify-cli`); commands not yet
ported fall through to a Python shim implemented by the
`crates/mergify-py-shim` crate, which invokes `python -m mergify_cli`
on the bundled Python source. Native Rust commands are dispatched
directly. Drift between the two implementations is prevented
structurally: when porting a command, the Python implementation MUST
be deleted in the same PR that adds the Rust implementation. There is
no period where both copies coexist.

A single PR therefore contains:

1. The Rust implementation (in the relevant `crates/*` crate) plus tests.
2. Removal of the Python implementation file(s) and their tests.
3. Any wiring updates (click registration, shim allow-list, etc.).

Reviewers should reject PRs that port a command without removing the
Python copy. Removing the Python copy without a Rust replacement is
fine when the command is being deprecated/dropped from the CLI — the
rule is "no two live copies of the same command", not "every Python
copy must be replaced".

## Documentation

When adding or changing a CLI feature, always update the documentation:
Expand Down
136 changes: 0 additions & 136 deletions PORT_STATUS.toml

This file was deleted.

158 changes: 0 additions & 158 deletions mergify_cli/tests/test_port_status.py

This file was deleted.

Loading