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:M200 to 500 net lines; one PR200 to 500 net lines; one PR
Description
Task
| slice | size | difficulty | model | who | estimated lines |
|---|---|---|---|---|---|
| Round-three conditions closed | M | unknown ground | strongest | an agent | 240 (120 code, 120 tests) |
After a restart, a box that ended without forget_box no longer holds its client key in use, and the bound counts only keys that running boxes use.
Covers:
- BEP-063
Layers:
- keys:
- crates/bep/src/control.rs: at start, each key's
boxes=set is reconciled against the boxes that are still registered, so a box that ended with noforget_box(a Ctrl-C before minvmd records it, a stopped minvmd, a failed release write) no longer holds its key in use (T90 — Free the client key of a box that ended without forget_box #2617) - docs/specs/24-spec-box-egress-proxy/24-spec-box-egress-proxy.md: the BEP-063 known-gap text that links T90 — Free the client key of a box that ended without forget_box #2617 is removed
cargo nextest run -p bep a_stranded_box_frees_its_key_at_start
- crates/bep/src/control.rs: at start, each key's
Waits on:
- T84 — Keep a replaced client key verifying until the boxes minted under it end #2605
- assumes OQ3 (the mint reads the root certificate's own expiry, and the root is generated with a fixed default validity in one constant that gominimal/arch#85's ruling replaces)
Plan block
### T90 — Free the client key of a box that ended without forget_box
slice: S12
kind: task
covers: BEP-063
size: M
est: 120 code, 120 tests
executor: agent
difficulty: unknown ground
model: strongest
diagnostics: none beyond the bound's refusal text
observability: one info log line per key freed at start, naming its kid
layers:
- keys:
- crates/bep/src/control.rs: at start, each key's `boxes=` set is reconciled against the boxes that are still registered, so a box that ended with no `forget_box` (a Ctrl-C before minvmd records it, a stopped minvmd, a failed release write) no longer holds its key in use (#2617)
- docs/specs/24-spec-box-egress-proxy/24-spec-box-egress-proxy.md: the BEP-063 known-gap text that links #2617 is removed
test: cargo nextest run -p bep a_stranded_box_frees_its_key_at_start
produces: none
consumes: none
proof: After a restart, a box that ended without forget_box no longer holds its client key in use, and the bound counts only keys that running boxes use.
depends on:
- blocked by #2605
- assumes OQ3 (the mint reads the root certificate's own expiry, and the root is generated with a fixed default validity in one constant that gominimal/arch#85's ruling replaces)
Generated by Claude Code
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:M200 to 500 net lines; one PR200 to 500 net lines; one PR
Activity
docs(specs): link the BEP-063 stranded-box gap to #2617
docs(specs): name the open-ended verify of a stranded retired key
feat(bep): keep a replaced client key verifying until its boxes end (…
[-]BEP-063: a stranded box keeps its client key in use across restarts (T84 residual)[/-][+]T90 — Free the client key of a box that ended without forget_box[/+]minimal-foundry commentedon Oct 26, 2026
Done. #2642 merged.
branch
agent/2617-free-the-client-key-of-a-box-that-ended-without· epic #1501 · PR #26421ebcc379Updated 2026-10-27T05:13:04.102Z.
fix(bep): free a stranded box's key on minvmd's live box list
feat(minvmd): send bep the live box ids when it starts to listen
feat(bep): free the client key of a box that ended without forget_box…