//! `aura-core` — the shared contract every aura component links against. //! //! This crate is the boundary forced by the cdylib hot-reload model: both the //! engine and every hot-reloadable node cdylib depend on it, so it stays small //! and stable. //! //! Delivered so far (cycle 0001 — the streaming substrate): //! //! - the four scalar base types streamed as SoA: [`Scalar`] / [`ScalarKind`] / //! [`Timestamp`] (C7); //! - [`Column`] — a fixed-capacity, bounded-lookback ring with financial //! indexing (index 0 = newest) and a `run_count` freshness primitive (C5/C8), //! read zero-copy through a [`Window`]; //! - [`AnyColumn`] — the type-erased edge over the four column kinds, with an //! edge-time kind check ([`KindMismatch`]) (C7). //! //! Delivered in cycle 0002 — the node contract: //! //! - [`Node`] — the `schema`/`eval` contract every node implements (C8), with //! [`NodeSchema`] / [`InputSpec`] declaring inputs (kind + lookback) and the //! single output kind; //! - [`Ctx`] — the per-`eval` read-side: zero-copy, financial-indexed [`Window`] //! access into each input (closing the cycle-0001 read-side gap on //! [`AnyColumn`]). //! //! Still to come (subsequent cycles): the firing policies (A: fire-on-any-fresh + //! hold; B: all-fresh barrier), the deterministic sim loop, sources, and //! ingestion. mod any; mod column; mod ctx; mod error; mod node; mod scalar; pub use any::AnyColumn; pub use column::{Column, Window}; pub use ctx::Ctx; pub use error::KindMismatch; pub use node::{InputSpec, Node, NodeSchema}; pub use scalar::{Scalar, ScalarKind, Timestamp};