Gunnar

nordisk/gunnar

.nornir/open-build-capacity.md

# Open build: storage shown, no money said (2026-09-15, branch `open-capacity`)

Owner's ruling 2026-09-15: the open gunnar / gunnar-ui (no `metered`) mention no money
anywhere a user or operator sees it, stay unlimited, and show how much storage the box has.

## What the guards cover

- `crates/gunnar-server/tests/open_build_speaks_no_money.rs` — (1) the whole clap tree of
  every subcommand (about, help, before/after help, possible values); (2) every string
  literal an open build compiles in the server, its linked crates and the operator CLI
  (comments, `cfg(feature = "metered")` and `cfg(test)` items skipped by a small lexer);
  (3) `GUNNAR_OPEN_GUARD_CAPTURE=<dir>` judges text captured from a live guest.
  Word list: price, pay(ment), buy, purchase, sell/sold, bill(ed/ing), invoice, checkout,
  money, currency, SEK/EUR/USD, stripe, plan, quota, subscription, renew, refund, revenue.
  `plan`, `checkout`, `renew`, `subscribe` count only when the same text carries no
  technical context word (network/DHCP, git, event bus, grow/install/reset); `stripe`
  only when it spells the vendor (`Stripe`, `stripe.com`). Four documented exceptions,
  each asserted still to match.
- gunnar-ui `crates/gunnar-ui-server/tests/open_build_speaks_no_money.rs` — the same judge
  over the web crate's literals and shell/css/svg, the open BFF's literals, and every
  asset a live BFF source `include_str!`s (login.html); money routes answer 404.

## VERDICT lines

VERDICT guard gunnar-server (open): PASS — 5/5 (CLI tree, 13 crates' literals, scanner self-tests); 34 hits fixed
VERDICT guard gunnar-ui-server (open): PASS — 449 lib + contract 8 + guard 6; metered build 494 + 8 + 4 also green
VERDICT panel gunnar-ui /api/dataset: PASS — e2e route test against a real Admin service (total/used/free, 4×2.0G raid0 xfs, growth word, 403 passes through, no money word in JSON); web host tests 86
VERDICT O1 KVM (install + bootstrap + Capacity + console + live capture): FAIL/UNRUN — medium composed from this branch (`cargo xtask iso-installer --variant gunnar-installer-open --opt dhcp=on --opt wireguard=off`) installed a 4×2.0GiB raid0 xfs set (8 AGs) OK, but its first boot stopped at `md: personality for level 0 is not loaded!`: with no KORP_KERNEL the door carried /boot/vmlinuz-7.0.0-30-generic, whose raid0/xfs are modules. The recompose with the tunnr kernel (KORP_KERNEL=tunnr/.kernel-out/tunnr-kernel/bzImage) was refused by edda da3048b (merged 15:28 by another lane: compose builds in the toolchain image, which carries no x86_64-unknown-uefi std for korp-boot). Stopped there: free disk fell under 20 G. The bench scenario is in place (`gunnar-growbench --scenarios O1 --members 4 --member-gib 2 --ui-server <open gunnar-ui-server> --cli <open gunnar>`); rerun once the compose door builds korp-boot again.