<!-- nornir:class: reference -->
# build thing — the constellation inventory · 2026-09-10
> **Class:** `reference` · **THIS FILE IS A RENDER, NOT A SOURCE.**
> Every line below is the verbatim stdout of
>
> ```
> dwarves buildthing inventory # = dwarves buildthing --list --all
> ```
>
> taken 2026-09-10 with `DWARVES_CONSTELLATION=/home/rickard/git`. Nothing here is
> hand-maintained: the rows come out of `nornir_build_thing::inventory`, whose
> facts come out of the declarations themselves (`declarations()` for the roster,
> `Declared::kind` for the typ, and `flags_of(SettingsTree::of_set(..))` for the
> settings column — the same walk `--opt`/`--param`/`--build` are parsed against).
> Regenerate rather than edit. `crates/dwarves/tests/buildthing_inventory.rs` is
> the gate that keeps the two agreeing.
>
> Vocabulary: **variant → features → settings / sub-settings → typ**. Never "cell".
## How to read a row
| column | what it is |
|---|---|
| col-1 | `<repo>/<variant>` — the coordinate `--variant` and `--build` take |
| col-2 | the ROAD the declaration came down: `kod` (a `<repo>-build-thing` module answered — the code IS the source) · `toml` (the committed table was read as the source — a finding) · `DRIFT` (a module answered AND disagreed with the table) · `VÄGRAD` (unreadable) |
| col-3 | `typ` (the OUTPUT TYPE) · `feat` (features ON) · `set` (the settings axes as their **value space**, not their defaults) · `edge` (BUILT edges) · `perm` (how many buildable points the one-of axes describe) |
| `↳ <repo>` | one line per repo: WHY it is not on the code road |
`set dhcp=on|off` means both states are buildable, not that DHCP is on. `perm 4`
means four buildable points. A free-text setting reads `<value>` and multiplies
the permutation by one, because its space is not enumerable.
## The verdict, 2026-09-10
**2 of 19 declaring checkouts answer from CODE.** Only `gunnar` and `facett` take
the `kod` road; the other seventeen are read off a committed `build-variants.toml`,
which the code-is-source ruling says must not be a read file at all. The refusals
are not opinions — the forge computed each one and, until this render existed,
dropped it. There are exactly **two** reasons, and they are different problems:
| reason | repos | the fix |
|---|---|---|
| **no `<repo>-build-thing` crate** | dwarves · holger · nornir · modgunn · edda · knut · ordning | the tillskott: write the `impl BuildThing`. (dwarves is the forge and edda owns the trait, so those two are arguably exempt; holger's impl exists but lives in edda as `nornir-buildspec-holger`, a name `recipe_crate()` cannot find, AND it `include_str!`s the toml — the inversion, not the law.) |
| **`[build.toolchain]` is not pinned** — `no image_sha256`, "a named tag is a convenience, NOT a pin" | skade · korp · Skidbladnir · draupnir · korp-collectors · znippy · znippy-zoomies | these repos **have** a real cdylib recipe; they are one `image_sha256 = "…"` away from the code road. This is the cheapest ten-repo win in the whole audit. |
| **`[build.toolchain] siblings` names a checkout that is not there** | tunnr | clone the named sibling beside it (or drop it from `siblings`) |
Two rows in the table — `dwarves-head` and `gunnar-head` — are full clones another
lane created on this disk at 09:43 today, not constellation members. They are left
in because the render is verbatim: the scan found them, and a table that quietly
dropped what the scan found would be the wrong kind of tidy. Note the worktree
dedup in `ConstellationBuilds::discover` did not catch them precisely because they
are clones and not linked worktrees.
## The table
```
BUILD THING väg typ · features · settings (värderymd) · edges
──────────── ─── ────────────────────────────────────────────
dwarves/dwarves-server toml typ service · feat embed-all,read-fat,nornir/embed-ort…+3
dwarves/dwarves toml typ exe · feat cli,vault,release…+4
dwarves/dwarves-cli toml typ exe · feat cli,vault,funnel-action
dwarves/dwarves-ui toml typ exe · feat vm-boot
dwarves/dwarves-ui-gpu toml typ exe · feat gpu,vm-boot
dwarves/dwarves-solo toml typ exe · feat solo
↳ dwarves väg `dwarves` har ingen `dwarves-build-thing`-låda (sökt under crates/ och rote…
holger/embedded toml typ exe · feat embedded
holger/mini toml typ service · feat mini,appliance
holger/full toml typ service · feat full
holger/mvp-server toml typ service · feat mvp-server,appliance
holger/mvp-server-musl toml typ exe · feat mvp-server,appliance
holger/server-local toml typ service
holger/ui toml typ exe · feat gui
holger/ui-embedded toml typ exe · feat gui-embedded
holger/ui-mini toml typ exe · feat gui-mini
holger/ui-mikro toml typ exe · feat gui-mikro
holger/agent toml typ exe
holger/agent-online toml typ exe · feat online
holger/mvp-bundle toml typ exe
holger/mvp-verify toml typ exe
holger/holger-mvp-appliance toml typ container
holger/holger-installer toml typ installer · set site=<value>,hub_conf=<value>,holger_ron=<value>…+3 · p…
↳ holger väg `holger` har ingen `holger-build-thing`-låda (sökt under crates/ och roten)…
nornir/nornir-server toml typ service · feat server,viz,mcp…+11
nornir/nornir toml typ exe · feat server,viz,mcp…+11
nornir/nornir-cli toml typ exe · feat server,viz,mcp…+11
nornir/nornir-ui toml typ exe · feat viz
nornir/nornir-solo toml typ exe · feat solo,server,viz…+4
↳ nornir väg `nornir` har ingen `nornir-build-thing`-låda (sökt under crates/ och roten)…
skade/skade toml typ lib · feat s3
skade/skade-remote toml typ service
skade/skade-flight toml typ service
↳ skade väg [build.toolchain] i `skade`: [build.toolchain] `nordisk-cargo-toolchain`: n…
korp/korp-server toml typ service · feat server,iceberg,minio…+15
korp/korp-server-gpu toml typ service · feat server,iceberg,minio…+16
korp/korp toml typ exe · feat iceberg,sweden-clip,manual-embed…+5
korp/korp-cli toml typ exe · feat client
korp/korp-probe toml typ exe · feat client
korp/korp-ui toml typ exe · feat client,map3d-gpu,collector-feeds…+2
korp/korp-ui-cpu toml typ exe · feat client,collector-feeds,demo…+1
korp/korp-solo toml typ exe · feat iceberg,sweden-clip,solo…+2
korp/korp-appliance-iso toml typ iso
korp/korp-installer toml typ installer · set data.fs=fat|xfs,data.io=safe|uring · perm 4
korp/korp-installer-fat-youki toml typ installer · set data.fs=fat|xfs,data.io=safe|uring · perm 4
korp/korp-installer-fat-microvm toml typ installer · set data.fs=fat|xfs,data.io=safe|uring · perm 4
korp/korp-installer-fat-podman toml typ installer · set data.fs=fat|xfs,data.io=safe|uring · perm 4
korp/korp-installer-fat-containerd toml typ installer · set data.fs=fat|xfs,data.io=safe|uring · perm 4
korp/korp-live-iso toml typ iso
korp/korp-live-fat-youki toml typ iso
↳ korp väg [build.toolchain] i `korp`: [build.toolchain] `nordisk-cargo-toolchain`: no…
modgunn/modgunn toml typ exe · feat scan,scip,warehouse…+2
↳ modgunn väg `modgunn` har ingen `modgunn-build-thing`-låda (sökt under crates/ och rote…
knut/knutpipe toml typ exe
knut/knut-spark-server toml typ exe · feat server
knut/bifrost toml typ exe · feat cli
knut/knut-popviz toml typ exe · feat gui
knut/knut-bifrost-wasm-guest toml typ wasm
↳ knut väg `knut` har ingen `knut-build-thing`-låda (sökt under crates/ och roten) — b…
Skidbladnir/skidbladnir toml typ exe · feat pki
Skidbladnir/skidbladnir-znippy toml typ exe · feat pki,znippy
Skidbladnir/skidbladnir-probe toml typ exe
Skidbladnir/skidbladnir-testsvc toml typ exe
Skidbladnir/skidbladnir-matrix toml typ lib · feat pki,matrix
Skidbladnir/skidbladnir-promote toml typ lib · feat pki,promote
Skidbladnir/skidbladnir-service-d… toml typ lib · feat pki,service-drive
Skidbladnir/skidbladnir-connected toml typ lib · feat pki,vault,openbao…+1
Skidbladnir/skidbladnir-federation toml typ lib · feat pki,federation,upstream-aws…+1
Skidbladnir/skidbladnir-cluster toml typ lib · feat pki,kubernetes,talos
Skidbladnir/skidbladnir-sockets toml typ lib · feat pki,sockets
↳ Skidbladnir väg [build.toolchain] i `Skidbladnir`: [build.toolchain] `nordisk-cargo-toolcha…
draupnir/draupnir toml typ lib
draupnir/draupnir-seed toml typ lib · feat seed
draupnir/draupnir-tunnr toml typ lib · feat backend-tunnr
↳ draupnir väg [build.toolchain] i `draupnir`: [build.toolchain] `nordisk-cargo-toolchain`…
dwarves-head/dwarves-server toml typ service · feat embed-all,read-fat,nornir/embed-ort…+3
dwarves-head/dwarves toml typ exe · feat cli,vault,release…+4
dwarves-head/dwarves-cli toml typ exe · feat cli,vault,funnel-action
dwarves-head/dwarves-ui toml typ exe · feat vm-boot
dwarves-head/dwarves-ui-gpu toml typ exe · feat gpu,vm-boot
dwarves-head/dwarves-solo toml typ exe · feat solo
↳ dwarves-head väg `dwarves-head` har ingen `dwarves-head-build-thing`-låda (sökt under crates…
edda/autonom toml typ exe · feat scan
edda/robotui toml typ exe · feat watch
↳ edda väg `edda` har ingen `edda-build-thing`-låda (sökt under crates/ och roten) — b…
facett/facet-wrapped-wasm kod typ wasm
facett/facet-wrapped-web kod typ package
gunnar/gunnar-server kod typ exe · feat server,engine-znippy,mimalloc…+3
gunnar/gunnar-server-thin kod typ exe · feat server,engine-znippy,mimalloc…+2
gunnar/gunnar-server-metered kod typ exe · feat server,engine-znippy,mimalloc…+4
gunnar/gunnar-server-metered-thin kod typ exe · feat server,engine-znippy,mimalloc…+3
gunnar/gunnar kod typ exe · feat client
gunnar/gunnar-cli kod typ exe · feat client,control
gunnar/gunnar-solo kod typ exe · feat server,client,control
gunnar/gunnar-service kod typ service · feat server,systemd
gunnar/gunnar-image kod typ container
gunnar/gunnar-appliance-iso kod typ iso · set wireguard=on|off,kernel=on|off,kernel.preset=full|normal|slim…
gunnar/gunnar-installer kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-open kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-gce kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-aws kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-azure kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-metered kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-metered-a… kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar/gunnar-installer-metered-a… kod typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-server toml typ exe · feat server,engine-znippy,mimalloc…+3
gunnar-head/gunnar-server-thin toml typ exe · feat server,engine-znippy,mimalloc…+2
gunnar-head/gunnar-server-metered toml typ exe · feat server,engine-znippy,mimalloc…+4
gunnar-head/gunnar-server-metered… toml typ exe · feat server,engine-znippy,mimalloc…+3
gunnar-head/gunnar toml typ exe · feat client
gunnar-head/gunnar-cli toml typ exe · feat client,control
gunnar-head/gunnar-solo toml typ exe · feat server,client,control
gunnar-head/gunnar-service toml typ service · feat server,systemd
gunnar-head/gunnar-image toml typ container
gunnar-head/gunnar-appliance-iso toml typ iso · set wireguard=on|off,kernel=on|off,kernel.preset=full|normal|slim…
gunnar-head/gunnar-installer toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-open toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-gce toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-aws toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-azure toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-mete… toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-mete… toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
gunnar-head/gunnar-installer-mete… toml typ installer · set dhcp=on|off,dhcp.static_ip=<value>,dhcp.gateway=<value>…
↳ gunnar-head väg `gunnar-head` har ingen `gunnar-head-build-thing`-låda (sökt under crates/ …
korp-collectors/korp-collectors toml typ exe · feat parsers
korp-collectors/korp-collectors-o… toml typ exe · feat osm
korp-collectors/korp-collectors-o… toml typ exe · feat osm-daemon
korp-collectors/korp-collectors-l… toml typ lib · feat parsers
↳ korp-collectors väg [build.toolchain] i `korp-collectors`: [build.toolchain] `nordisk-cargo-too…
ordning/ordning-demo toml typ exe
ordning/ordning-web toml typ wasm
ordning/ordning-robot toml typ exe · feat robot-remote
ordning/ordning-core toml typ lib
↳ ordning väg `ordning` har ingen `ordning-build-thing`-låda (sökt under crates/ och rote…
tunnr/tunnr-pid1 toml typ exe
tunnr/demo-container-pid1 toml typ exe
tunnr/rdp-wayland-pid1 toml typ exe
tunnr/tunnr-boot toml typ exe · set testmatrix=on|off · perm 2
tunnr/tunnr-buildroot toml typ exe · set buildroot-fetch=on|off · perm 2
tunnr/tunnr-postbuild toml typ exe
tunnr/tunnr-demo toml typ exe
tunnr/tunnr-build toml typ lib · set buildroot-fetch=on|off,testmatrix=on|off · perm 4
tunnr/tunnr-build-thing toml typ lib
tunnr/tunnr-dispatch toml typ lib
tunnr/tunnr-brand toml typ lib
tunnr/tunnr-licence toml typ lib
tunnr/nordisk-kernel-toolchain toml typ container
tunnr/tunnr-hello-world toml typ container
tunnr/korp-falkordb toml typ container
tunnr/rdp-app-container toml typ container
tunnr/rdp-korp-thin-container toml typ container
tunnr/tunnr-osless-server toml typ vm
tunnr/tunnr-osless-client toml typ vm
tunnr/korp-kvm toml typ vm
tunnr/demo-container-kvm toml typ vm
tunnr/rdp-wayland-kvm toml typ vm
tunnr/tunnr-kernel toml typ kernel · set kernel.preset=full|normal|slim|nuked,kernel.profile=vanill…
tunnr/tunnr-kernel-scsi toml typ kernel · set kernel.preset=full|normal|slim|nuked,kernel.profile=vanill…
tunnr/tunnr-kernel-nvme toml typ kernel · set kernel.preset=full|normal|slim|nuked,kernel.profile=vanill…
tunnr/tunnr-kernel-hyperv toml typ kernel · set kernel.preset=full|normal|slim|nuked,kernel.profile=vanill…
↳ tunnr väg [build.toolchain] `siblings` names 1 repo(s) that are not checked out besid…
znippy/znippy toml typ exe
znippy/znippy-full toml typ exe · feat iceberg,sign
↳ znippy väg [build.toolchain] i `znippy`: [build.toolchain] `nordisk-cargo-toolchain`: …
znippy-zoomies/osm-katana toml typ exe
znippy-zoomies/lbunzip2 toml typ exe
znippy-zoomies/lgz toml typ exe
znippy-zoomies/ljar toml typ exe
znippy-zoomies/lzip toml typ exe
↳ znippy-zoomies väg [build.toolchain] i `znippy-zoomies`: [build.toolchain] `nordisk-cargo-tool…
──────────── ─── ────────────────────────────────────────────
SUMMA ok 19 repo · 153 varianter · kod 2 · toml 17 · drift 0 · vägrad 0
SUMMA typer — container · exe · installer · iso · kernel · lib · package · service · vm ·…
```
---
## Verification addendum — 2026-09-10, later the same day
The table above is the verbatim stdout of a run taken at **09:49**. It was
re-checked against the checkouts at **17:58** by reading the same files the forge
reads. **The table was not re-rendered** — that needs `dwarves buildthing
inventory`, whose door is the build-thing lane's — so the rows stand as taken and
this section says, per claim, whether they still hold. Nothing below is an
estimate; each line names the file the bytes came from.
| the claim above | still true? | measured |
|---|---|---|
| **no `<repo>-build-thing` crate** — dwarves · holger · nornir · modgunn · edda · knut · ordning | **YES, all seven** | neither `<repo>/crates/<repo>-build-thing` nor `<repo>/<repo>-build-thing` exists in any of the seven. The tillskott is still owed |
| **`[build.toolchain]` is not pinned, "no `image_sha256`"** — skade · korp · Skidbladnir · draupnir · korp-collectors · znippy · znippy-zoomies | **NO — STALE** | all seven now carry `image_sha256` immediately under `[build.toolchain]`, and all seven carry the SAME digest, `2cf9b012c9d2ffa42b447e5b0d127184e5a3f998dd2574d771477e9c8e366659` (skade:73 · korp:476 · Skidbladnir:182 · draupnir:62 · korp-collectors:89 · znippy:61 · znippy-zoomies:101). The pin landed after 09:49. **"the cheapest ten-repo win in the whole audit" has been taken** — whether the seven now take the `kod` road is what the re-render has to answer, and until it runs, that is UNKNOWN, not won |
| **tunnr: `siblings` names a checkout that is not there** | **YES**, and it is now named | `tunnr/.nornir/build-variants.toml:481` lists eleven siblings; ten resolve beside the repo and exactly one does not: **`tunnr-tailscale`**. (`tunnr-mullvad` is present.) The refusal line says "1 repo(s)" and stops there; the name is the actionable half |
| **`dwarves-head` and `gunnar-head` are full clones another lane made at 09:43** | **NO — both are GONE** | neither `/home/rickard/git/dwarves-head` nor `/home/rickard/git/gunnar-head` exists. They were transient, and the two rows in the table above describe checkouts that no longer exist. The verbatim-render principle is right and the rows stay; this note is what keeps the render honest between runs |
| `SUMMA … kod 2 · toml 17` | **UNKNOWN** | 2 of 19 was true at 09:49. With the seven pins landed it cannot be assumed to still read 2, and it must not be quoted forward until `dwarves buildthing inventory` runs again |
### Why this section exists instead of a fresh render
`dwarves buildthing inventory` was **not run**. The box was at **0 bytes free**
(938 G disk, 890 G used) at the peak of seven parallel lanes today, and
`/home/rickard/cargo-target` alone measured **412 G** — debug 335 G (of which
`debug/incremental` **98 G**), release 60 G — beside `.cargo` 19 G, containers
25 G, `.rustup` 6.3 G and `edda/target` 9.2 G. Deleting `debug/incremental`
(pure regenerable cache) returned the box to 149 G free. A full disk on this box
has zeroed `Cargo.lock` files before, so no lane should re-render this table
without `CARGO_INCREMENTAL=0` set and free space checked first.
**That is itself an inventory finding, not housekeeping.** A build system whose
own constellation inventory cannot be regenerated because the box it runs on
fills up under its own parallel lanes has a capacity fact missing from every
bench and test document it produces. `dwarves buildthing inventory` should emit
free-disk and target-dir size alongside the roster, so the next render carries
the reason it might be the last one that fitted.