# edda — .nornir/build-variants.toml — EMITTED, NOT SOURCE.
#
# Generated by `cargo run -p edda-build-thing -- emit` from
# crates/edda-build-thing (the Rust `impl BuildThing`). The code is the one
# source; this file DESCRIBES the build. Editing it changes NOTHING: re-emit
# after changing the code. Do not edit by hand.
#
# Model: variant → features → settings/sub-settings → typ. TWO rows, and they
# are the two executables the shared-lib samling ships: the `autonom` coverage
# CLI and the `robotui` accessible robot UI. The two static-musl appliance
# PID-1s `korp-installer` and `korp-start` were declared here until 2026-09-26,
# when the crate moved to tunnr (owner ruling: the installer boots tunnr-kernel
# and lives next to it); they are `tunnr/korp-installer` and `tunnr/korp-start`.
#
# edda's ~66 LIBRARY crates are deliberately not rows: a library is delivered to
# the registry by `dwarves crate-release`, not by a build point, and a variant is
# a claim about an ARTIFACT this repo produces. The reasoning per row is in
# crates/edda-build-thing/src/recipe.rs, never in this file.
[build]
offers = [
"bench",
"scan",
"watch",
"watch-wgpu",
"wire",
]
base_suite = "ORIGINAL"
[build.required]
autonom = ["scan"]
robotui = ["watch"]
[build.allow_unbuilt]
bench = """autonom's nornir-bench harness arm: an `[[example]]` (`required-features = ["bench"]`) that prints one JSON BenchRun on stdout. A bench harness entrypoint is a measurement tool, never a delivery, and it is compiled by `cargo test`/`cargo bench` rather than by a build point."""
watch-wgpu = "nornir-robotui's wgpu-backed alias of `watch` — the SAME window through a different eframe renderer. It is the renderer choice of whoever runs the UI, not a second artifact: shipping both would put two identically-behaving `robotui` binaries in the delivery matrix, and `tests/watch_wgpu_is_an_alias.rs` in that crate is the proof they are one program."
wire = "nornir-robotui's wire surface as a STANDALONE feature — the transport types a robot driver links when it wants to speak to the UI without compiling the UI. `watch` already implies it, so the shipped binary carries it; enabling it alone builds a library configuration, and a library configuration is not an artifact."
[build.allow_unbuilt_bins]
bootx64 = "crates/nornir-build-thing/tests/fixtures/korp-efistub — a no_std UEFI test payload (its own [workspace], not a member), built on demand with `--target x86_64-unknown-uefi` by the ignored ISO boot test (`tests/iso_boot.rs`) so a serial capture proves a pure-Rust ISO boots. A fixture, never shipped."
edda-build-thing = "this recipe crate's own emit door (`cargo run -p edda-build-thing -- emit` regenerates .nornir/build-variants.toml); the forge loads the crate as wasm, the bin is repository tooling, never shipped."
estate-clock = """crates/estate-clock's standalone daemon form (`required-features = ["bin"]`). Its consumers link the LIBRARY today (holger-estate-front with `fetch`+`adjust`), and gunnar still ships its own gunnar-clock; no estate ships this bin yet, so no edda row builds it."""
fleet_mock_server = "crates/nornir-fleet/src/bin/fleet_mock_server.rs — the trivial mounted app `LocalProcessSpinner`'s test launches instead of the five real apps, which are too heavy and flaky to spawn in a unit test (the `run_local_fleet` example is the real-apps entry). It mounts a `CmdJsonServer` over a bare click-counter `CmdHost` on a Unix socket, mirroring dwarves-gui's `--robot-remote <socket>` so the spinner drives it exactly like a real app. Compiled by the nornir-fleet spinner test; a fixture, not an artifact."
nornir-bench-redprobe = """crates/nornir-bench/src/bin/nornir-bench-redprobe.rs — a two-arm bench binary that exists to be watched FAILING. nornir-bench's claim after 2026-08-06 is that a red arm exits NON-ZERO, and that is a process exit status no in-process unit test can assert: calling `verdict` and checking the `Err` proves the value, not the status the shell reads, and the gap between those two is exactly where the old defect lived (`"passed": false` was in the JSON the whole time and the process still exited 0). `tests/failed_arm_exits_nonzero.rs` builds and runs it as a real subprocess both ways, so it IS compiled by `cargo test -p nornir-bench` — just never by a delivery row, and it must never ship."""
xtask = "the `cargo xtask` door (`cargo xtask ci`, `cargo xtask build`): repository tooling that runs the CI plan and the declared rows; a member nothing depends on, never shipped."
[[build.variant]]
name = "autonom"
package = "autonom"
bin = "autonom"
features = ["scan"]
profile = "release"
linkage = "not-applicable"
role = "tool"
suites = ["ORIGINAL"]
default = true
[[build.variant]]
name = "robotui"
package = "nornir-robotui"
bin = "robotui"
features = ["watch"]
profile = "release"
linkage = "not-applicable"
role = "client"
suites = ["ORIGINAL"]
default = true
[build.toolchain]
image = "nordisk-cargo-toolchain"
image_sha256 = "86d575e874677da3eb9aff3ba6e38ca600781ee9b7948a9df43ef89a6213c762"
rust_version = "1.97.1"
targets = [
"x86_64-unknown-linux-gnu",
"x86_64-unknown-linux-musl",
"wasm32-unknown-unknown",
"x86_64-unknown-uefi",
]
timeout_secs = 3600
mem_limit_mb = 8192
cpus = 8
siblings = [
"draupnir",
"facett",
"funnel-core",
"skade",
"znippy",
"znippy-zoomies",
]