Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/gunnar

crates/gunnar-growbench/Cargo.toml

# gunnar's **data-set growth bench** — a detached crate with its own `[workspace]`,
# exactly like `installtest/`, so gunnar's own `Cargo.lock` never learns about a
# KVM harness. The contract it proves is
# `private-gunnar-ops/DATA-SET-GROWTH-DESIGN.md` §7.
#
# What it does: boots the REAL installer medium under KVM (OVMF, `korp_installer::
# kvmproof`'s machine — the same writer every install proof in the estate uses)
# onto one boot disk + FOUR equal sparse virtio data disks, so the installer's
# own discovery lays `/data` as md RAID0 over the four; then bootstraps an admin
# over the private-NIC gRPC forward, pushes repositories over `:2222` with stock
# git, records a client-side sha256 manifest, and for every scenario grows the
# member images between boots exactly as UpCloud's resize of a detached volume
# reaches a guest (a bigger virtio device at next boot) and reads what the
# appliance says on its console and what it serves back.
#
# `qemu-system-x86_64` is the one child process (VM orchestration, as
# `korp-installer` and `gunnar-installtest` already do). Stock `git`, `ssh` and
# `ssh-keygen` are the CLIENT half — gunnar's zero-shell rule is about the
# server. Resizing is `File::set_len` (what `qemu-img resize` does to a raw
# image: ftruncate, never a byte written), hashing is `sha2`, sparse
# accounting is `SEEK_DATA`.
[package]
name = "gunnar-growbench"
version = "0.0.0"
edition = "2021"
publish = false
description = "KVM bench for growing the appliance's md RAID0 /data set (DATA-SET-GROWTH-DESIGN.md §7)"

[workspace]

[dependencies]
# The SAME line as installtest/Cargo.toml, feature for feature, so the rlib the
# shared target dir already holds is reused and this bench compiles nothing of
# the estate twice.
korp-installer = { version = "0.2.0", default-features = false, features = ["secure-boot", "forge", "testmatrix"] }
sha2 = "0.10"
libc = "0.2"
# The ESP is FAT; the same crate korp-installer formats and reads it with.
fatfs = "0.3"
# TD10's arm C: the foreign payload's blake3 root, the hash korp-installer pins. Already in this
# lock through korp-installer: no package is added.
blake3 = "1"
# The bench's OWN monetize key (`src/money.rs`): the entitlement cells need facts
# signed by a key the medium trusts, and the bench must never hold monetize's.
# ed25519-dalek signs; monetize-embed is the canonical form monetize signs
# (`fact_message`, `fact_message_issued`), so a bench fact is byte for byte the
# shape monetize mints; serde_json writes it for `gunnar control entitlement set`.
ed25519-dalek = "2"
monetize-embed = "0.1.3"
serde_json = "1"

[[bin]]
name = "gunnar-growbench"
path = "src/main.rs"

[patch.crates-io]
# The estate's sibling patches this workspace's lock takes that the root's old
# `.cargo/siblings.toml` include used to supply (G-B7, 2026-10-26: the root takes
# none now, so every estate workspace names its own; xtask/tests/lone_clone.rs).
nornir-git = { path = "../../../edda/crates/nornir-git" }
nornir-build-thing = { path = "../../../edda/crates/nornir-build-thing" }
wg-appliance-core = { path = "../../../edda/crates/wg-appliance-core" }