Expand description
Operator-state honesty.
This crate answers one question, in one pure data structure, with no I/O:
“Given the operator’s event history up to now, what behavioral state are they in and what friction level is appropriate?”
The crate does not talk to the engine. It does not read the
filesystem. It does not render anything. It takes events in, it
produces a snapshot out. Persistence lives in zero-session.
Rendering lives in zero-tui. Friction enforcement lives in
zero-commands. The separation is deliberate — this crate is the
only place where behavioral classification lives, and it must be
testable in isolation with nothing but Vec<Event> and
DateTime<Utc>.
See ZERO_OS_CLI_SPEC_ADDENDUM_A.md §§ 1-3, 10. ADR-013 locks
this crate’s position in the system; ADR-014 locks the
RiskDirection invariant this crate exports.
Re-exports§
pub use classifier::Classifier;pub use events::Event;pub use events::EventKind;pub use events::Outcome;pub use events::Source;pub use friction::FrictionGate;pub use friction::FrictionLevel;pub use friction::RiskContext;pub use friction::RiskDirection;pub use label::Label;pub use snapshot::Snapshot;pub use vector::StateVector;
Modules§
- classifier
- Pure event → state classifier.
- events
- The event stream fed into the classifier.
- friction
- Friction ladder — Addendum A §3 and §6.3.
- label
- State labels, straight from Addendum A §2.3.
- snapshot
- A renderer-friendly snapshot of operator state.
- vector
- The numeric state vector. Fed by
Classifier, read by widgets (zero-tui) and the friction path (zero-commands).