//! Generation **recipes**: named, validated assemblies of passes (spec §4.8). //! //! Where [`crate::passes`] is the *vocabulary* of individual generation steps, a //! recipe is a *sentence*: it picks a concrete sequence of passes, sizes them to //! a canvas, and hands back a ready-to-run [`crate::pass::Pipeline`]. A recipe //! validates its configuration up front (spec §8) so a caller learns about an //! impossible request as a [`dungeon::ConfigError`] rather than as a degenerate //! map or a panic deep inside a pass. //! //! v1 ships exactly one recipe — [`dungeon`](dungeon::dungeon) — which assembles //! the full five-pass dungeon chain (BSP → rooms → MST-connect → corridors → //! doors). Future map types (towns, caves) would add sibling modules here. pub mod dungeon;