Version-aware install: migrate boxes across an upgrade instead of refusing #67
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#67
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Follow-up to #66, which added the escape hatch. Splitting the "hard but cool" half out as its own issue, per @danmt on that PR:
Where #66 leaves things
install.shnow builds the host stack itself, so an upgrade reaches under boxes attached to that stack. Today it:$DEST, when the install would change version/ref and boxes exist;BOX_FORCE_UPGRADE=1overrides; the drill sets it, since wiping boxes is its job.Refusing is the placeholder. The goal is that it just works.
What "magical" needs
user.box=1/user.box.template/user.box.user, but nothing records the box VERSION that minted them. Without that, an upgrade cannot tell a box that needs migrating from one that does not. Probablyuser.box.versionstamped at mint, alongside the existinguser.box.*keys.migrate-hostalready moves pre-0.4.0 boxes onto the current stack (--box,--all-boxes,--retire-legacy) — that is the shape to build on rather than reinvent, and possibly the place this belongs.Open question that blocks the honest version of this
What are the real consequences of reconfiguring
boxnetunder attached boxes? Nobody has measured it. From readingsetup-host.sh, an upgrade re-runsincus network set boxnet security.acls=…,dns.mode=none, andraw.dnsmasq, and drill.sh's own comment records that this stalled:Until someone runs that on a real host with live boxes and reports what happens — DNS blip? connectivity blip? stall? nothing at all when values are unchanged? — the migration cannot know what it must protect boxes from, and the hatch is the honest default. A drill phase that mints boxes, upgrades under them, and asserts they survive would answer it.
Also worth deciding
The obvious manual recovery path does not work today:
box rmdeletes a box and every snapshot it has, so "snapshot → rm → restore with--from" loses the data atrm(a snapshot does not outlive its box). If refusing is meant to leave people a way out, there is a gap — some export/publish that survives the box, or a documented copy-it-out-first step. #66's error message currently says to copy data out first rather than suggest the lossy path.🤖 Generated with Claude Code