# M4b task 03: `bxctl deny`, another name for `refuse` **Branch:** `m4b` (run `git switch m4b`; `git status --short` must be empty, otherwise stop) **Commit subject:** `bxctl: deny, another name for refuse` ## Goal In Mattermost the owner answers `!deny `; in the terminal the word should work too. `bxctl deny` means exactly what `bxctl refuse` means, argument for argument, errors included. ## Files - Copy: `crates/bxctl/tests/cli_deny.rs` - Modify: `crates/bxctl/src/cli.rs`, `docs/implementer-log.md` ## The changes, exactly In `crates/bxctl/src/cli.rs`: 1. In `parse`, `"refuse" => parse_refuse(rest, home),` becomes `"refuse" | "deny" => parse_refuse(rest, home),`. 2. In `USAGE`, after the two lines about `bxctl refuse`, add a blank line and: ```text bxctl deny [--reason TEXT] [--admin-socket PATH] Another name for refuse. ``` (keep the two-space and six-space indents of the lines around it). ## Steps - [ ] **1. Copy.** `git switch m4b`, then `cp docs/plans/M4b/files/crates/bxctl/tests/cli_deny.rs crates/bxctl/tests/` - [ ] **2. See it fail.** `cargo test -p bxctl --test cli_deny`. Expected: 2 fail. - [ ] **3. Make the two changes.** - [ ] **4. See it pass.** `cargo test -p bxctl`. Expected: every suite passes; `cli_deny` 2 passed. - [ ] **5. Run the gate.** `cargo fmt --all`, then `make gate`. Expected last line: `gate: ok`. - [ ] **6. Log and commit.** `git add crates/bxctl docs/implementer-log.md Cargo.lock && git commit` ## Done when - `cargo test -p bxctl` passes; `make gate` prints `gate: ok`.