Repository navigation
Closed
Labels
kind:taskA task the plan skill rendered; the body carries ## TaskA task the plan skill rendered; the body carries ## Taskmodel:strongestThe strongest model available: unknown ground, or large work that needs careThe strongest model available: unknown ground, or large work that needs caresize:L500 to 900 net lines; one PR, and the ceiling500 to 900 net lines; one PR, and the ceiling
Description
Task
| slice | size | difficulty | model | who | estimated lines |
|---|---|---|---|---|---|
| Reclaim on purpose | L | needs care | strongest | an agent | 740 (320 code, 420 tests) |
remove one stopped box, or prune the stopped and exited boxes older than a day, and see each record, its events and its files gone, while removing a running box is refused unless forced.
Covers:
- BOX-019
- BOX-021
- BOX-024
- BOX-045
Layers:
- daemon:
- crates/minimald/src/box_manager.rs: reap, prune, forced destroy, releases holds
- crates/minimald/src/box_manager/tests.rs: tests
- crates/minimald/src/rpc.rs: reap, prune handlers
- crates/boxes/src/store.rs: deletes events with record
cargo nextest run -p minimald rm_deletes_record_and_filesystemcargo nextest run -p minimald reap_running_box_unforced_refusescargo nextest run -p minimald forced_reap_stops_then_deletescargo nextest run -p minimald prune_selectors_reap_and_printcargo nextest run -p minimald no_automatic_reaper_runscargo nextest run -p minimald events_survive_stop_deleted_on_rmcargo nextest run -p minimald reap_hands_name_to_retained_holder
- docs:
- docs/specs/18-spec-box-networking/18-spec-box-networking.md: the terms paragraph (a box exists until
rm/pruneremoves its record; "destroyed" in NET means removed; a stop or exit is not a destroy) and the edits to NET-010 and NET-012, per What NET's "exists", "destroyed" and "removed" mean for a retained box #2041
- docs/specs/18-spec-box-networking/18-spec-box-networking.md: the terms paragraph (a box exists until
- wire:
- crates/minimald-rpc/src/lib.rs: reap, prune requests
- crates/minimald-rpc/src/tests.rs: tests
cargo nextest run -p minimald-rpc reap_and_prune_requests_round_trip
Widened by the maintainer (2026-11-01): #2041 was decided (#2041 (comment)). The NET terms paragraph and the NET-010/NET-012 edits land with this task. The reap runs today's destroy teardown (destroy_now), which withdraws the name, frees the loopback grant and withdraws the VM creation. When the reaped box holds the name's registry row and another retained record carries the same name, the row passes to that record (A or NODATA), not to NXDOMAIN (NET-012's last-holder rule). reap_hands_name_to_retained_holder pins that.
Waits on:
Plan block
### T8 — Remove and prune stopped boxes on purpose
slice: S1
kind: task
covers: BOX-019, BOX-021, BOX-024, BOX-045
size: L
est: 320 code, 420 tests
executor: agent
difficulty: needs care
model: strongest
diagnostics: daemon log names each reaped or refused box
observability: one span per removal or prune
layers:
- daemon:
- crates/minimald/src/box_manager.rs: reap, prune, forced destroy, releases holds
- crates/minimald/src/box_manager/tests.rs: tests
- crates/minimald/src/rpc.rs: reap, prune handlers
- crates/boxes/src/store.rs: deletes events with record
test: cargo nextest run -p minimald rm_deletes_record_and_filesystem
test: cargo nextest run -p minimald reap_running_box_unforced_refuses
test: cargo nextest run -p minimald forced_reap_stops_then_deletes
test: cargo nextest run -p minimald prune_selectors_reap_and_print
test: cargo nextest run -p minimald no_automatic_reaper_runs
test: cargo nextest run -p minimald events_survive_stop_deleted_on_rm
test: cargo nextest run -p minimald reap_hands_name_to_retained_holder
- docs:
- docs/specs/18-spec-box-networking/18-spec-box-networking.md: terms paragraph and NET-010/NET-012 edits per #2041
- wire:
- crates/minimald-rpc/src/lib.rs: reap, prune requests
- crates/minimald-rpc/src/tests.rs: tests
test: cargo nextest run -p minimald-rpc reap_and_prune_requests_round_trip
produces: none
consumes: none
proof: remove one stopped box, or prune the stopped and exited boxes older than a day, and see each record, its events and its files gone, while removing a running box is refused unless forced.
depends on:
- blocked by #2394
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:strongestThe strongest model available: unknown ground, or large work that needs careThe strongest model available: unknown ground, or large work that needs caresize:L500 to 900 net lines; one PR, and the ceiling500 to 900 net lines; one PR, and the ceiling
Activity
minimal-foundry commentedon Nov 1, 2026
Done. #2833 merged.
branch
agent/2395-remove-and-prune-stopped-boxes-on-purpose· epic #2236 · PR #283348bf2e609919ed6fbbaedd87Updated 2026-11-02T00:25:41.897Z.