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 lesson_pile;
15pub mod outcome_review;
16pub mod retention_sweep;
17pub mod run_outcome;
18pub mod skill_stall;
19pub mod staleness;
20pub mod tool_failure;
21
22use crate::recommendation::MAX_EVIDENCE;
23
24/// Bound an evidence list to the representative cap (§7.1). Deterministic:
25/// callers pass an already-sorted list.
26pub(crate) fn bound_evidence(mut hashes: Vec<String>) -> Vec<String> {
27    hashes.truncate(MAX_EVIDENCE);
28    hashes
29}