//! Load and query `.ontology/*.ncl` files as typed Rust structs.
//!
//! Provides [`ontology::Core`], [`ontology::State`], and [`ontology::Gate`] for
//! ecosystem-level introspection of a project's self-knowledge graph. Each node
//! carries `artifact_paths` and `adrs` fields (`serde(default)`) for
//! zero-migration backward compatibility across protocol versions.
//!
//! This crate has zero stratumiops dependencies (ADR-001) and is the minimal
//! adoption surface for any project consuming the ontoref protocol.

pub mod error;
pub mod layout;
pub mod ontology;
pub mod render;
pub mod render_pipeline;
pub mod types;

#[cfg(feature = "derive")]
pub mod contrib;

#[cfg(feature = "derive")]
pub mod api;

#[cfg(feature = "derive")]
pub mod mcp;

#[cfg(feature = "derive")]
pub use api::{ApiParam, ApiRouteEntry};
#[cfg(feature = "derive")]
pub use contrib::{ConfigFieldsEntry, NodeContribution, TestCoverage};
pub use error::OntologyError;
#[cfg(feature = "derive")]
pub use mcp::McpToolEntry;
pub use ontology::{Core, Gate, Ontology, State};
// Re-export the proc-macro crate so consumers only need to depend on
// `ontoref-ontology` with the `derive` feature — no separate ontoref-derive dep.
#[cfg(feature = "derive")]
pub use ontoref_derive::{onto_mcp_tool, onto_validates, ConfigFields, OntologyNode};
pub use types::{
    AbstractionLevel, Audience, Campaign, CoreConfig, Coupling, Dimension, DimensionState,
    Duration, Edge, EdgeType, GateConfig, Horizon, LaunchCheck, Membrane, Node, OpeningCondition,
    Permeability, Pole, PositioningConfig, PositioningStatus, Protocol, SignalType, StateConfig,
    TensionLevel, Transition, ValueProp, Weight,
};
