//! C29 coverage: every engine-shipped vocabulary entry carries a //! gate-passing one-line meaning. Blocks, metrics, tap slots, folds, and //! the std node vocabulary — the compile/unit seam of the self-description //! contract. use aura_core::doc_gate; #[test] fn every_shipped_vocabulary_entry_passes_the_doc_gate() { // process + campaign blocks (BlockSchema.doc — the pre-existing model) for b in aura_research::process_vocabulary() .iter() .chain(aura_research::campaign_vocabulary().iter()) { doc_gate(b.id, b.doc) .unwrap_or_else(|f| panic!("block {}: {:?}", b.id, f)); } // metrics for m in aura_research::metric_vocabulary() { doc_gate(m.id, m.doc) .unwrap_or_else(|f| panic!("metric {}: {:?}", m.id, f)); } // tap slots for t in aura_research::tap_vocabulary() { doc_gate(t.id, t.doc) .unwrap_or_else(|f| panic!("tap {}: {:?}", t.id, f)); } // tap folds (the #283 registry roster already carries docs) for (name, doc) in aura_runner::tap_plan::FoldRegistry::core().roster() { doc_gate(name, doc) .unwrap_or_else(|f| panic!("fold {}: {:?}", name, f)); } // std node vocabulary: resolve each shipped type id to its schema let env = aura_runner::project::Env::std(); for &type_id in aura_vocabulary::std_vocabulary_types() { let builder = env .resolve(type_id) .unwrap_or_else(|| panic!("std type {type_id} must resolve")); let schema = builder.schema(); doc_gate(type_id, schema.doc) .unwrap_or_else(|f| panic!("node {type_id}: {:?}", f)); } }