Implementation plan for the #12 split — audit, isolation hardening, box + templates #14
No reviewers
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:cli
scope:drill
scope:host
scope:installer
scope:templates
scope:tiers
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#14
Loading…
Reference in a new issue
No description provided.
Delete branch "docs/issue-12-implementation-plan"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Plan of record for the #12 split — #15 audit → #16 isolation hardening → #17 box + templates — as
docs/issue-12-implementation-plan.md. Nothing executable lands here; this PR is the review gate on the order and shape of the work before any of it is written. Re-pinned tomain@0982a2dafter #13 merged.The shape
Three stages, one per issue, strictly ordered:
@internalas an ACL destination on bridge networks,incus copypreservinguser.*keys, anddns.mode=nonesemantics. Results land as comments on #15. If the sibling probe fails to block, #16's diagnosis is wrong and gets redesigned before code.@internalor a subnet derived by masking the gateway CIDR),security.mac_filtering/ipv4_filtering,dns.mode=none, IPv6-off promoted to stated contract, andtests/isolation.sh— the repo's first test. Zero CLI changes. Lands on the current tool, so the test stands guard over the rename that follows.box+ templates (#17), own PR: template dirs with a strict allowlistbox.envparser (notsourced — that's the enforcement of "a template cannot express a different network"), metadata stamped on instances at launch,box_user()with the legacy fallback, dual-tag matching inresolve_box()so pre-rename boxes and their snapshots never fall out oflist/shell/--from, the profile split into a placement contract (box-net: NIC + root disk only), and the full rename sweep includinginstall.sh.Stage 2 is additionally gated on three maintainer answers (#17's open questions: CLI-name compat, default template, repo/binary naming) — the plan tables them with recommendations and defaults, so one comment settles it.
Why this order
The isolation test is the only artifact that can prove the rename didn't regress the thing the tool exists for. Building it first, against today's names, means stage 2 inherits a tripwire instead of a hope. And the audit exists because the analysis's central claims read fine and were never run.
#13's merge simplified stage 2: every verb now resolves through
resolve_box(), so dual-tag matching is one function instead of per-verb edits, and theincusescape hatch answers root access in templated boxes without a flag.Closes nothing; implements nothing. #15/#16/#17 carry the work.
🤖 Generated with Claude Code
Pull request closed