Repository navigation
T3 — Boxes listed, shown, stopped and removed, end to end - #2991
Conversation
One test runs list, show, stop and rm of the same box over a harness daemon on the native host's socket. It checks the id, name, type, state, provider and host columns, the refusal of rm on a running box, and the removal after the stop. A failed step prints every command it ran with its stdout, stderr and exit code. Each verb runs in its own box_verb span with the box id.
|
Important Review skippedBot user detected. To trigger a single review, invoke the
|
|
Reviewed: 1 finding, none blocking at Address the comments on the diff. Clobber: none seen. |
There was a problem hiding this comment.
arch-review: PASS · the full ruling
This PR adds one end-to-end test for min box list, show, stop and rm, and changes no product code. Each step asserts a line of architecture.md: provider and host attribution (line 53), the --force refusal with exit 2 (lines 350 and 363), the kept record after stop (lines 458 and 499), and the deleted record after rm (line 458). The test calls the library paths that the commands use, and it relaxes no gate. The test writes the Removed web. line itself, so that assertion proves nothing. The empty listing after the remove is the proof.
Ruled at a40b931 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
The end-to-end test now checks the TYPE cell of the listing and the Type line of show. It no longer writes the Removed line itself: rm of the stopped box asserts the empty stdout that rm_listed_box gives. The span check counts one box_verb span for each run of a verb.
…ed-shown-stopped-and-removed-end-to-en
There was a problem hiding this comment.
arch-review: PASS · the full ruling
The compare makes the end-to-end proof stricter, and the earlier PASS on a40b9310 stands. The test now checks the box type in min box list and min box show. Line 475 of the design lists that field. The test no longer writes the Removed web. line itself. It asserts the empty stdout of rm_listed_box, so the proof checks only real output. The span check now counts one box_verb span for each run of a verb. The answerer.rs hunks come from the clean merge of #2985 and are not part of this PR.
Ruled at dbe8426 against gominimal/arch@7a86ec7bb3c0 by claude-opus-5-5.
|
Round 1 of 10 on the runtime's review findings, pushed as
Verify Review threads the coder judged:
The test box_first_slice_list_show_stop_rm_end_to_end runs min box list, show, stop and rm of one box over a test daemon on the native socket. It checks that the listing renders the id, name, type (session), state, provider and host of the box. It checks that show prints the same facts, that rm of a running box is refused with exit 2, and that stop and then rm remove the box. Notes from the agent: Revise round 1. The test does not check the |
There was a problem hiding this comment.
Reviewed at dbe84265. box_first_slice_list_show_stop_rm_end_to_end drives the first slice over a harness daemon: list → show → refused rm (exit 2, names --force) → stop (Stopped web., then State: stopped) → rm → "No boxes on this machine."
- Assertions: they're exact, and the state really transitions.
- Columns: every column is checked, TYPE by header index.
- Spans: one span per verb run.
- Diff: in its one layer file, with no out-of-layer edits.
- Residual #2993: list and show are re-implemented in the test rather than driven,
Removed <box>.is untested, and the test uses its own exit-code mapping. - Merge order: T4 (#2987) removes
BoxLookupand changes thestop_listed_box/rm_listed_boxsignatures this test calls. Merge this first, then T4 updates the test.
There was a problem hiding this comment.
Reviewed at dbe8426 against #2894's plan. Tests-only (crates/minimal/src/tests.rs): box_first_slice_list_show_stop_rm_end_to_end pins all six list columns and the show lines, rm of a running box refusing with exit 2 naming --force, stop keeping the record, rm emptying the list, and one box_verb span per run filtered by box id. The bot-resolved threads (self-written Removed line, any() span check, unchecked TYPE cell) are fixed on this head. The open exit-code-mapping thread is deferred to #2993, which names it; the partial mapping can only misreport a failure transcript's code, never pass a failing step.
T3 — Boxes listed, shown, stopped and removed, end to end
slice: S0
kind: integration
covers: none
size: S
est: 20 code, 100 tests
executor: agent
difficulty: routine
model: light
diagnostics: when the end-to-end test fails, it prints each command it ran with that command's stdout, stderr and exit code
observability: one span per verb in the test run covers list, show, stop and remove of the same box
layers:
- tests:
- crates/minimal/src/tests.rs: the slice's end-to-end test over a test daemon
test: cargo nextest run -p minimal box_first_slice_list_show_stop_rm_end_to_end
produces: none
consumes: none
proof:
min box list|show|stop|rmover the existing daemon, before any alias work. It renders id, name, type, state, provider and host (BCLI-001, BCLI-003, BCLI-004, BCLI-051, BCLI-059, BCLI-060).depends on:
- blocked by #2889
- blocked by #2890
Proof
A person can run the test box_first_slice_list_show_stop_rm_end_to_end and see one box go through
min box list --all,min box show web, a refusedmin box rm web(exit 2, names --force),min box stop web,min box show web(State: stopped) andmin box rm webover a harness daemon on the native host socket. The listing and the show print the id, name, type, state, provider (local) and host of the box, and the last listing prints that the machine has no boxes.Notes from the agent: The test drives the same library paths the min box commands use (local_hosts, connect_daemon, list_box_records, find_listed_box, ShowBox, stop_listed_box, rm_listed_box, render_box_list, render_box_show). It does not spawn the min binary, because the test lives in the lib unit tests where CARGO_BIN_EXE_min is not set. The exit code in the transcript mirrors main.rs failure_exit_code for the two cases this flow reaches (2 for BoxRunningRefusal, 1 otherwise), because failure_exit_code is private to the binary. The rm step writes the
Removed web.line itself, as cmd_box_rm does after its best-effort VM host cleanup, which does not apply to a native host. Observability: each step runs in abox_verb{verb, box_id}span, and the test asserts from the captured log that list, show, stop and rm each have a span with the same box id. cargo clippy -p minimal --all-targets is clean. I did not run just ci or the wider suite.Tests
cargo nextest run -p minimal box_first_slice_list_show_stop_rm_end_to_endVerify
min task run agent-verifyexited 100 under rustc 1.99.0, which the repository does not pin (1.99.1 in rust-toolchain.toml); the PR is not a draft on that alone — CI, which honours the pin, is the gate.Closes #2894
Correction (maintainer, 2026-11-04): the Notes predate 652fe11. The rm step no longer writes
Removed web.itself.cmd_box_rmwrites that line, and #2993 tracks testing it.Residuals
cmd_box_list|show|rm, so this test drives the real rendering and the realfailure_exit_codemapping.