//! Graph extractor task: bump semantic `recurrence_count` from retrieval deltas, then run persona evolution.
//!
//! **Alpha:** API may change before 1.0.
//!
//! Persona evolution rows use [`ainl_persona::EVOLUTION_TRAIT_NAME`] — import that constant from `ainl-persona`
//! when matching evolution bundles; do not duplicate the string.
//!
//! **Note:** [`GraphExtractorTask::evolution_engine`] is the canonical in-process handle to
//! [`ainl_persona::EvolutionEngine`]. **ainl-runtime** exposes the same engine for direct
//! `ingest_signals` / `correction_tick` / `evolve` calls; this crate’s `run_pass` is one signal path, not the only one.
//!
//! ## `run_pass` and [`ExtractionReport`]
//!
//! [`GraphExtractorTask::run_pass`] returns an [`ExtractionReport`] (not `Result<_, _>`): semantic /
//! pattern / persona phases record errors in **`extract_error`**, **`pattern_error`**, and
//! **`persona_error`** respectively. Use [`ExtractionReport::has_errors`] before treating a pass as
//! clean. ArmaraOS **`GraphMemoryWriter::run_persona_evolution_pass`** surfaces the same struct
//! and logs warnings for populated error slots.
pub use ;
pub use ;
pub use ;
pub use update_semantic_recurrence;
pub use run_extraction_pass;
pub use ;
pub use ;