crates/draupnir-build-thing/src/lib.rs
//! **draupnir's build thing** — the recipe as code (the source), from which
//! `.nornir/build-variants.toml` is EMITTED (a description).
//!
//! * [`recipe`] — `DraupnirBuildThing`, the `impl BuildThing`: what this repo
//! actually builds.
//! * [`emit`] — this repo's header, and the three calls into the one emitter
//! (`nornir_build_thing::emit`).
//!
//! # The law this crate exists for
//!
//! dwarves `.nornir/build-thing-code-is-source-design.md` (2026-08-27): the CODE
//! is the source and the toml is emitted from it, one-directional, never read
//! back as authority. A hand-written recipe is a declaration nothing can check —
//! and the two ways that goes wrong were both MEASURED on gunnar's file in one
//! day: two whole groups present in the toml and absent from the code, with the
//! parity test green over the loss for four pin generations; and the same file
//! refused outright by an older reader over one additive key. Neither is
//! possible here: there is one declaration, the file is its projection, and the
//! emitter refuses bytes that do not read back EQUAL through the one loader.
pub mod emit;
pub mod recipe;
pub use emit::{emitted_toml, write_emitted, EMITTED_HEADER};
pub use recipe::{DraupnirBuildThing, CONTENT_HASH, KRATE};
nornir_build_thing::export_build_thing!(DraupnirBuildThing);
pub use nornir_build_thing::contract::{Coordinate, PaneKind, Receipt, RECEIPT_SECTION};
pub use nornir_build_thing::plugin::BuildThing;
pub use nornir_build_thing::variant::BuildVariantSet;