Repository navigation
Closed
Labels
kind:taskA task the plan skill rendered; the body carries ## TaskA task the plan skill rendered; the body carries ## Taskmodel:standardA standard model: work that needs care, or routine work that is largeA standard model: work that needs care, or routine work that is largesize:M200 to 500 net lines; one PR200 to 500 net lines; one PR
Description
Task
| slice | size | difficulty | model | who | estimated lines |
|---|---|---|---|---|---|
| List, show, stop and remove boxes | M | routine | standard | an agent | 380 (200 code, 180 tests) |
A person stops a box with
min box stopand removes it withmin box rm, and a running box refuses removal without--force.
Covers:
- BCLI-059
- BCLI-060
- BCLI-004
Layers:
- client:
- crates/minimal/src/cli.rs: the verb's arguments and help in the one command model
- crates/minimal/src/cmd/mod.rs: dispatches the verb
- crates/minimal/src/cmd/boxes.rs: exports the stop and remove verbs
- crates/minimal/src/cmd/boxes/lifecycle.rs:
min box stop [--force]over StopBox andmin box rm [--force]over ReapBox - crates/minimal/src/main.rs:
failure_exit_codemaps this verb's refusals to their exit codes - crates/minimal/src/tests.rs: the in-process minimald test harness gains this layer's tests
cargo nextest run -p minimal box_stop_stops_as_box_013_force_forcescargo nextest run -p minimal box_rm_reaps_as_box_019_force_forcescargo nextest run -p minimal rm_running_box_refuses_naming_force
Plan block
### T2 — Stop and remove a box
slice: S0
kind: task
covers: BCLI-059, BCLI-060, BCLI-004
size: M
est: 200 code, 180 tests
executor: agent
difficulty: routine
model: standard
diagnostics: when the box is running and `--force` is absent, `min box rm` prints "<box> is running. Stop it with min box stop <box>, or remove it now with min box rm <box> --force." on stderr and exits 2, pinned by rm_running_box_refuses_naming_force
observability: the command's existing tracing span records the verb, the box id it resolved and the outcome
layers:
- client:
- crates/minimal/src/cli.rs: the verb's arguments and help in the one command model
- crates/minimal/src/cmd/mod.rs: dispatches the verb
- crates/minimal/src/cmd/boxes.rs: exports the stop and remove verbs
- crates/minimal/src/cmd/boxes/lifecycle.rs: `min box stop [--force]` over StopBox and `min box rm [--force]` over ReapBox
- crates/minimal/src/main.rs: `failure_exit_code` maps this verb's refusals to their exit codes
- crates/minimal/src/tests.rs: the in-process minimald test harness gains this layer's tests
test: cargo nextest run -p minimal box_stop_stops_as_box_013_force_forces
test: cargo nextest run -p minimal box_rm_reaps_as_box_019_force_forces
test: cargo nextest run -p minimal rm_running_box_refuses_naming_force
produces: none
consumes: none
proof: A person stops a box with `min box stop` and removes it with `min box rm`, and a running box refuses removal without `--force`.
Reacted by minimal-foundry
Metadata
Metadata
Assignees
Labels
kind:taskA task the plan skill rendered; the body carries ## TaskA task the plan skill rendered; the body carries ## Taskmodel:standardA standard model: work that needs care, or routine work that is largeA standard model: work that needs care, or routine work that is largesize:M200 to 500 net lines; one PR200 to 500 net lines; one PR
Activity
minimal-foundry commentedon Nov 3, 2026
Done. #2961 merged.
branch
agent/2890-stop-and-remove-a-box· epic #2879 · PR #29614c9c750a61d60cab76e1b397a85364bfUpdated 2026-11-04T06:17:39.502Z.