027: A kind says when it has a desktop, and a plain box has no qualifier
Status: accepted, 1 October 2026. Partly supersedes
012: the IDs and labels of the kinds
without a desktop. Partly superseded by
029: the keys from before
027 are read once, when BB’s settings move into bb-box’s configuration.
Extended by 040: where an
architecture goes in a kind’s ID. Partly superseded by
041: linux-docker is an alias of
linux with the feature docker. Extended by
048:
new desktop kinds, named by its rule.
Context
012 named the kinds without a desktop linux-headless and
linux-headless-docker. Most boxes are of these kinds, so the word is in
most tool calls and on most rows of the panel, and it names what the box
lacks. The operator asked for the plain box to have no qualifier and for
desktops to say so.
Existing boxes carry the old IDs: in bb-box’s records, in the kind tag Proxmox LXC writes on each guest, which the sweep reads to restore a lost record (019), and in settings, scripts and habits.
Decision
- A kind without a desktop has no qualifier. A kind with a desktop has
desktopin its ID and label. The ID still names what the kind promises, as 012 says, and a required feature is a suffix.
| Kind | Label | Old ID |
|---|---|---|
linux |
Linux | linux-headless |
linux-docker |
Linux with Docker | linux-headless-docker |
linux-desktop |
Linux desktop | unchanged |
linux-desktop-cpu |
Linux desktop (no GPU) | unchanged |
- The later kinds follow the rule:
macos,macos-desktop,windows-desktop. - The default kind is
linux. - The old IDs stay accepted as aliases everywhere an ID comes in:
box_acquireand the panel, settings, stored records, and owners read from guests. Everything bb-box shows uses the new IDs and labels. - Core keeps the one alias table and maps an ID where it comes in, so the
registry,
capacity,transportsand the views see only the new IDs. Backends offer only the new IDs. A backend that reads a kind from its own guests for its own use maps it with the same table. - An old ID is never given to another kind.
- Proxmox LXC’s
headlessflavour becomeslinux. Its settings becomeproxmox-lxc-linux-templates,-cores,-memory-mib,-disk-giband-warm. Each reads itsproxmox-lxc-headless-key when it is unset, so saved values carry over. The setup guide’s “headless template” becomes the Linux template, andbuild.sh headlesskeeps working.
Consequences
- Existing boxes keep working, and nothing rewrites their guests: a guest keeps its old tag until it is released, and core reads it as the new ID. A stored record shows the new ID and the kind’s current label.
- BB’s settings handle returns the keys bb-box declares, with a key’s declared default when it is unset. So the old keys stay declared, labelled as replaced, until a later release drops them. The new keys declare no default: Proxmox LXC applies its defaults itself, and each key’s description gives its default.
- The Docker, SSH host pool and Tart backends use the new IDs from the start.
- Decision records before this one keep the old IDs as they were written. The architecture, research, README, skill and setup guide use the new ones.