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 |
|---|---|---|---|---|---|
| Start, attach and resume | M | needs care | standard | an agent | 400 (100 code, 300 tests) |
min box attach <box> --exec <id>reattaches a terminal exec, and refuses an exec that ended or has no terminal.
Covers:
- BCLI-068
Layers:
- client:
- crates/minimal/src/cli.rs: the verb's arguments and help in the one command model
- crates/minimal/src/cmd/boxes/attach.rs:
--exec <id>reattaches a live terminal exec, with the unknown, ended, no-terminal and no-box refusals in that order - 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_attach_exec_reattaches_live_pty_execcargo nextest run -p minimal box_attach_exec_unknown_id_exit4_names_idcargo nextest run -p minimal box_attach_exec_non_pty_exit2_names_logscargo nextest run -p minimal box_attach_exec_ended_exit4_names_logs_and_waitcargo nextest run -p minimal box_attach_exec_without_box_exit2
Waits on:
- T12 — Attach to a box's terminal, with or without an address #2904
- T4 — Resolve a box address across the local hosts #2895
Plan block
### T35 — Attach to a terminal exec in a box
slice: S3
kind: task
covers: BCLI-068
size: M
est: 100 code, 300 tests
executor: agent
difficulty: needs care
model: standard
diagnostics: for an exec id the box never ran, `min box attach <box> --exec <id>` prints "<box> has no exec <id>." and exits 4; for an exec that ended, it prints "Exec <id> has ended. Read its output with min box logs <box> --exec <id>, or its exit code with min box wait <box> --exec <id>." and exits 4, pinned by box_attach_exec_ended_exit4_names_logs_and_wait
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/boxes/attach.rs: `--exec <id>` reattaches a live terminal exec, with the unknown, ended, no-terminal and no-box refusals in that order
- 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_attach_exec_reattaches_live_pty_exec
test: cargo nextest run -p minimal box_attach_exec_unknown_id_exit4_names_id
test: cargo nextest run -p minimal box_attach_exec_non_pty_exit2_names_logs
test: cargo nextest run -p minimal box_attach_exec_ended_exit4_names_logs_and_wait
test: cargo nextest run -p minimal box_attach_exec_without_box_exit2
produces: none
consumes:
- crates/minimal/src/cmd/boxes/address.rs
proof: `min box attach <box> --exec <id>` reattaches a terminal exec, and refuses an exec that ended or has no terminal.
depends on:
- blocked by #2904
- blocked by #2895
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 5, 2026
Done. #3044 merged.
branch
agent/2911-attach-to-a-terminal-exec-in-a-box· epic #2879 · PR #30443f76bc4da81ecc1f03b2cfb3Updated 2026-11-05T18:43:42.181Z.