badf4257ec
- audit::verify_chain_from_cas() recorre prev_sha desde head hasta genesis, valida sha256(blob)==sha del CAS para detectar tampering. Endpoint VerifyAudit + brainctl audit-verify. - autopromote loop background: cada N segundos detecta cristales sobre threshold y los promueve sin operador. Anti-doble vía HashSet de pares (ant, con). Flag --autopromote-secs. - GapHistogram con buckets exponenciales (1ms..1000s) capturado en observer.record(). top_gap_pairs(K) limita cardinalidad. Expuesto en Prometheus como ente_brain_pair_gap_seconds histogram per pair. - BusRequest::UpdateCapabilities con auth obligatorio (sólo el dueño puede modificar sus caps). Incarnated.dynamic_provides separa runtime de la Card immutable. Graph mediator actualiza providers index + revoca grants. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
39 lines
1.7 KiB
Rust
39 lines
1.7 KiB
Rust
//! ente-brain: motor de reglas determinista + observador estadístico.
|
|
//!
|
|
//! Tres capas:
|
|
//! 1. `rules` — tipos de regla (Triplet: Subject + Event + Action)
|
|
//! 2. `engine` — RuleEngine con HashMap<EventKindDiscriminant, Vec<Arc<Rule>>>
|
|
//! para dispatch O(1)
|
|
//! 3. `dispatch` — ejecutor async de Actions (vía tokio)
|
|
//! 4. `observer` — sliding window + marginales + co-ocurrencias
|
|
//! + Shannon entropy + información mutua
|
|
//! 5. `crystallize` — detección de patrones estadísticamente significativos
|
|
//! y generación de snippets KCL
|
|
//! 6. `introspect` — Unix socket bincode API para tools externos
|
|
//!
|
|
//! Diseño de inmutabilidad:
|
|
//! - Rules son `Arc<Rule>` — clonar es zero-copy (refcount bump).
|
|
//! - El motor expone sólo lecturas; mutaciones pasan por `insert/remove`.
|
|
//! - Observer mantiene contadores incrementales — sin recomputación.
|
|
|
|
pub mod audit;
|
|
pub mod autopromote;
|
|
pub mod crystallize;
|
|
pub mod dispatch;
|
|
pub mod engine;
|
|
pub mod introspect;
|
|
pub mod kcl_loader;
|
|
pub mod metrics;
|
|
pub mod observer;
|
|
pub mod rules;
|
|
|
|
pub use autopromote::{spawn_autopromote_loop, AutopromoteParams};
|
|
pub use crystallize::{detect_crystals, Crystal, CrystallizationParams};
|
|
pub use dispatch::{dispatch_actions, ActionSink, NullSink};
|
|
pub use engine::{EventKindDiscriminant, RuleEngine, SubjectInfo};
|
|
pub use introspect::{IntrospectRequest, IntrospectResponse, IntrospectServer, BrainState};
|
|
pub use kcl_loader::{kcl_available, load_card_file, load_rules_file};
|
|
pub use metrics::serve_metrics;
|
|
pub use observer::{Observer, TimedEvent};
|
|
pub use rules::{Action, EventKind, EventPattern, LogLevel, Rule, Scope};
|