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 adapter_intake;
7pub mod budget_pressure;
8pub mod cold_grains;
9pub mod contradiction_sweep;
10pub mod coverage_gap;
11pub mod duplicate_sweep;
12pub mod fork_surfacing;
13pub mod goal_stagnation;
14pub mod outcome_review;
15pub mod retention_sweep;
16pub mod run_outcome;
17pub mod skill_stall;
18pub mod staleness;
19pub mod tool_failure;
20
21use crate::recommendation::MAX_EVIDENCE;
22
23/// Bound an evidence list to the representative cap (§7.1). Deterministic:
24/// callers pass an already-sorted list.
25pub(crate) fn bound_evidence(mut hashes: Vec<String>) -> Vec<String> {
26    hashes.truncate(MAX_EVIDENCE);
27    hashes
28}