# skidbladnir — crate card

## Reverse-engineered (from source — verify, don't trust the name)
- **One-line pitch:** Skíðblaðnir — a 100% Rust framework to pack a product (or whole product lake) into an air-gapped bundle, move it across the gap, unfold the target (Redfish / Terraform / KVM), and install+configure+start every product in dependency order — no shell glue.
- **Does:** Implements the pipeline `pack → archive → fetch ║airgap║ → unfold → install → start(ordered)`. Modules map to AIRGAP steps: `pack` (staging tree + VERSION), `archive` (tar+zstd bundle + content-addressed manifest; znippy engine behind a feature), `fetch` (verify-on-receipt, zero network), `platform` (os-release detect/unpack), `pki` (`PkiSource`: SelfGenerated ed25519 / ExistingVault / TempVault, real X.509 via rcgen), `layout` (version-dated dirs + atomic symlink swap), `product`/`install` (ComponentSpec + generalized Installer, install/update/uninstall over a neutral service tree), `service` (backend-neutral ServiceSpec → systemd/OpenRC renderers), `systemd` (pure-Rust systemd via zbus, no `systemctl`), `identity` (UUIDv7 install_id + BLAKE3 machine_fp), `unfold` (Redfish/Terraform/KVM backends), `machine`/`matrix` (KVM/container lifecycle + live multi-OS install matrix), `orchestrate` (topo-sorted start waves), `events`, `msi` (WiX-in-podman + UUIDv5 GUIDs). `config::LakeSpec` is the declarative descriptor.
- **Key deps:** always-on pure-Rust core — `anyhow`, `serde`/`serde_json`, `tar`+`zstd`, `sha2`, `blake3`, `uuid` v7, `hex`, `chrono`, `zbus` (systemd D-Bus). Feature-gated: `ed25519-dalek`/`rcgen`/`x509-parser`/`rustls-pki-types`/`time` (`pki`, default on), `reqwest`+`base64` (`vault`/`redfish`), `fatfs`+`libc` (`kvm`, pure-Rust FAT authoring for cloud-init seed/payload). No sub-crates in this workspace (probe is separate).
- **Shape:** lib only, large (~19 modules; unfold ~45K, systemd ~45K, archive ~64K, pki ~36K, product ~35K, machine ~59K). Standalone workspace (resolver 3), extracted from nornir; published as `skidbladnir` (renamed from `nornir-airgap`).
- **Observed role in the workspace:** The airgap install framework that leaf consumers (nornir, holger, tunnr) pull to pack/move/install themselves without a release-cascade through nornir. The `matrix` feature injects the sibling `skidbladnir-probe` binary into KVM guests to assert install success.

## Fill in (one line each — only the human knows these)
- Primary consumer(s): 
- Why it exists (vs the obvious alternative): 
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.): 
- Release cadence & independence (rides a parent? own repo someday?): 
- Status (production / prototype / experimental / stubbed): 
- Must-NOT-change invariant: 
- Biggest known gap or TODO: 
- Anything a newcomer would get wrong about it: 
