crates/edda-build-thing/src/lib.rs
//! **edda's build thing** — the recipe as code (the source), from which
//! `.nornir/build-variants.toml` is EMITTED (a description).
//!
//! * [`recipe`] — `EddaBuildThing`, 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. edda was one of the last two of the sixteen build-things
//! with no emitter at all — its declaration was a hand-written file, and a
//! hand-written declaration is one nothing can check. It had already gone wrong:
//! two shipped static-musl binaries were excused out of it in prose, and the
//! excuse named a repo that did not declare them either.
//!
//! # edda is the hub, so this crate is deliberately small
//!
//! `nornir-build-thing` — the evaluator every other repo's recipe is written
//! against — lives in this same workspace, and roughly fifteen consumers
//! path-depend on edda. This crate ADDS a member and changes no public signature
//! of anything else, because a recipe that breaks the evaluator's consumers to
//! describe its own repo has traded the wrong thing.
pub mod emit;
pub mod recipe;
pub use emit::{emitted_toml, write_emitted, EMITTED_HEADER};
pub use recipe::{EddaBuildThing, CONTENT_HASH, KRATE, SUITE};
nornir_build_thing::export_build_thing!(EddaBuildThing);
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;