box import records nothing about the import event — and origin=import is the wrong fix
#131
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
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/box#131
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 carved out of #103's PR (#129), which deliberately left
cmd_importalone and flagged the decision rather than smuggling it in.
The gap
#129 stamps
user.box.*provenance at mint, includingorigin=mint|clone.An imported box keeps the artifact's stamp verbatim — the mint time,
version, image and role of the box as it existed on the originating host.
That is the right default, and #129 argues it:
cmd_import's own commentalready draws the line between what
incus importrestores (the artifact'struth) and what box re-stamps (this host's). Mint facts belong to the
originating host and should survive the trip.
What is missing is any record that the trip happened. An imported box is
today indistinguishable from a box minted on this host at the artifact's
mint time.
Why this is not a one-line addition
The obvious move — set
origin=import— is the wrong one, and naming why ismost of this issue's value:
originrecords how this instance came into being:mintorclone.Overwriting it with
importdestroys that distinction. A clone that wasexported and imported would come back claiming to be an import, with no
record it was ever a clone, and the lineage
origin.frompoints at becomesunreadable. The import event is a third fact, orthogonal to the first two —
it wants its own key, not a repurposed one.
So the decision this issue owes:
user.box.imported/user.box.imported.atalongside anuntouched
origin, or a more general "events" shape? The stamp isdeliberately flat
key=valuetoday.once. First-wins, last-wins, and a count are all defensible; the manifest
work in heavy-duty/rig#61 hit the same question and settled on a birth
pair plus a latest pair, which may be the precedent to follow.
box infosurface it, and under what line? #129's provenanceblock prints
MINTED … by box X.Y.Z; an import line has to read clearlynext to a mint time that is deliberately not this host's.
user.box.schemamoves only on removal or repurposing.Adding a key is not breaking, so this should not need a bump — worth
confirming against whatever shape is chosen.
Explicitly not in scope
host/migrate-host.sh, for the same reason #129 left it alone: it backfillstemplate/userfor pre-tag boxes, and fabricating acreatedorversionfor a mint nobody witnessed is precisely the invented-fact failure the stamp
exists to avoid. Absent keys are what make
box infosay "not recorded",which is true.
Blocked
On #129. There is no
user.box.schema, noorigin, and no provenance blockto extend until it lands, and all three can still change in review.
Refs
#103 (the parent), #129 (where it was left alone, with the reasoning),
heavy-duty/rig#61 (the birth-pair/latest-pair precedent for repeated events)
Triage sweep: removed the stale
blockedlabel — this issue closed 2026-07-21 with the work landed, and the label predates the close.