forked from heavy-duty/box
Every incus verb is a candidate feature request, and wrapping them one at a time grows a worse incus. This lands the rule instead: claudebox owns a command when it must enforce an invariant incus cannot see — the user.claudebox=1 boundary, the isolation stack, or the creds-free snapshot workflow. Everything else is incus's job, and now has a door. - CMDS table: one row per command, carrying synopsis, preconditions, summary, action and success message. Dispatch AND help are rendered from it, so the help can no longer describe a command that doesn't exist — the drift that produced #8 is now impossible, not merely fixed. - rename, via a table row: it needs the box stopped (incus won't rename a running instance), so it says so instead of leaking an incus error. - `claudebox incus <box> -- <args...>`: the escape hatch. Box resolved and tag-checked, rest passed to incus verbatim, {} substituted, command echoed. Warns when it can move a box off the isolation stack. - The boundary is now ENFORCED, not assumed: every box-taking command resolves through the user.claudebox=1 tag, so claudebox will not stop, rename or delete an instance it didn't mint. - The rule, written into docs/claudebox-design.md. Closes #11 |
||
|---|---|---|
| .. | ||
| claudebox-design.md | ||
| claudebox-recipe.md | ||