Skip to main content

simular/
lib.rs

1//! # simular
2//!
3//! Unified Simulation Engine for the Sovereign AI Stack.
4//!
5//! A falsifiable, reproducible simulation framework implementing:
6//! - Toyota Production System (TPS): Jidoka, Poka-Yoke, Heijunka, Kaizen
7//! - JPL Mission-Critical Verification: Power of 10 rules
8//! - Popperian Falsification: Null hypothesis testing
9//!
10//! ## Example
11//!
12//! ```rust
13//! use simular::prelude::*;
14//!
15//! // Create a deterministic simulation
16//! let config = SimConfig::builder()
17//!     .seed(42)
18//!     .build();
19//! ```
20
21#![forbid(unsafe_code)]
22// Production code: deny unwrap/expect/panic (tests/examples inherit allows from Cargo.toml)
23#![deny(clippy::unwrap_used, clippy::expect_used, clippy::panic)]
24// pedantic + nursery set in Cargo.toml [lints.clippy] — individual allows there too
25#![allow(
26    clippy::module_name_repetitions,
27    clippy::similar_names,
28    clippy::cast_precision_loss,
29    clippy::cast_possible_truncation,
30    clippy::cast_sign_loss,
31    clippy::suspicious_operation_groupings,  // False positive for variance = E[X²] - E[X]²
32    clippy::imprecise_flops,   // Numerical code choices are intentional
33    clippy::no_effect_underscore_binding,
34    clippy::missing_const_for_fn,  // Many functions can't be const in stable Rust
35    clippy::needless_range_loop,   // Sometimes range loops are clearer
36    clippy::manual_midpoint,       // Manual midpoint is intentional in numerical code
37    clippy::manual_is_multiple_of, // is_multiple_of is unstable in Rust 1.85
38)]
39// Test code is allowed to use unwrap/expect/panic for concise assertions
40#![cfg_attr(
41    test,
42    allow(
43        clippy::unwrap_used,
44        clippy::expect_used,
45        clippy::panic,
46        clippy::unreadable_literal,
47        clippy::default_constructed_unit_structs,
48        clippy::map_unwrap_or,
49        clippy::single_char_pattern,
50        clippy::needless_collect,
51        clippy::missing_docs_in_private_items,
52    )
53)]
54
55#[macro_use]
56#[allow(unused_macros)]
57mod generated_contracts;
58
59pub mod cli;
60pub mod config;
61pub mod demos;
62pub mod discovery;
63pub mod domains;
64pub mod edd;
65pub mod engine;
66pub mod error;
67pub mod falsification;
68pub mod orbit;
69pub mod renderers;
70pub mod replay;
71pub mod scenarios;
72#[cfg(feature = "tui")]
73pub mod tui;
74pub mod visualization;
75
76/// Prelude for convenient imports
77pub mod prelude {
78    pub use crate::config::{SimConfig, SimConfigBuilder};
79    pub use crate::engine::jidoka::{JidokaGuard, JidokaViolation};
80    pub use crate::engine::rng::SimRng;
81    pub use crate::engine::{SimEngine, SimState, SimTime};
82    pub use crate::error::{SimError, SimResult};
83    pub use crate::falsification::{FalsifiableHypothesis, NHSTResult};
84}
85
86/// Re-export for public API
87pub use error::{SimError, SimResult};