Skip to main content

areev_loop/analyzers/
mod.rs

1//! The built-in analyzers (proposal §8). Each computes over
2//! declared grain semantics — never raw prose — so the deterministic layer
3//! works with zero models. All produce *pending* drafts; the engine stamps
4//! identity/origin and runs the governance gates.
5
6pub mod budget_pressure;
7pub mod cold_grains;
8pub mod contradiction_sweep;
9pub mod coverage_gap;
10pub mod duplicate_sweep;
11pub mod fork_surfacing;
12pub mod goal_stagnation;
13pub mod outcome_review;
14pub mod retention_sweep;
15pub mod run_outcome;
16pub mod skill_stall;
17pub mod staleness;
18pub mod tool_failure;
19
20use crate::recommendation::MAX_EVIDENCE;
21
22/// Bound an evidence list to the representative cap (§7.1). Deterministic:
23/// callers pass an already-sorted list.
24pub(crate) fn bound_evidence(mut hashes: Vec<String>) -> Vec<String> {
25    hashes.truncate(MAX_EVIDENCE);
26    hashes
27}