gioser
⎇ d6b8f18b43c9bd9bf7268e48b61392a2d62bb229 crates/ente-brain/src/lib.rs Rust · 36 líneas · 1.6 KB Historia Quién tocó qué crudo

Pausa: 11 crates del fractal Ente #0 con cerebro completo d6b8f18b4 · Sergio ·

1//! ente-brain: motor de reglas determinista + observador estadístico.
2//!
3//! Tres capas:
4//!   1. `rules`       — tipos de regla (Triplet: Subject + Event + Action)
5//!   2. `engine`      — RuleEngine con HashMap<EventKindDiscriminant, Vec<Arc<Rule>>>
6//!                      para dispatch O(1)
7//!   3. `dispatch`    — ejecutor async de Actions (vía tokio)
8//!   4. `observer`    — sliding window + marginales + co-ocurrencias
9//!                    + Shannon entropy + información mutua
10//!   5. `crystallize` — detección de patrones estadísticamente significativos
11//!                      y generación de snippets KCL
12//!   6. `introspect`  — Unix socket bincode API para tools externos
13//!
14//! Diseño de inmutabilidad:
15//!   - Rules son `Arc<Rule>` — clonar es zero-copy (refcount bump).
16//!   - El motor expone sólo lecturas; mutaciones pasan por `insert/remove`.
17//!   - Observer mantiene contadores incrementales — sin recomputación.
18
19pub mod audit;
20pub mod crystallize;
21pub mod dispatch;
22pub mod engine;
23pub mod introspect;
24pub mod kcl_loader;
25pub mod metrics;
26pub mod observer;
27pub mod rules;
28
29pub use crystallize::{detect_crystals, Crystal, CrystallizationParams};
30pub use dispatch::{dispatch_actions, ActionSink, NullSink};
31pub use engine::{EventKindDiscriminant, RuleEngine, SubjectInfo};
32pub use introspect::{IntrospectRequest, IntrospectResponse, IntrospectServer, BrainState};
33pub use kcl_loader::{kcl_available, load_card_file, load_rules_file};
34pub use metrics::serve_metrics;
35pub use observer::{Observer, TimedEvent};
36pub use rules::{Action, EventKind, EventPattern, LogLevel, Rule, Scope};