Skip to main content

Module analyzers

Module analyzers 

Source
Expand description

The built-in analyzers (proposal §8). Each computes over declared grain semantics — never raw prose — so the deterministic layer works with zero models. All produce pending drafts; the engine stamps identity/origin and runs the governance gates.

Modules§

adapter_intake
Adapter intake (T0) — the tuning seam’s propose leg. areev tune registers a host-trained adapter as an mg:adapter Fact in agent:harness (the registry tuple, its Rule E1 evalset pin, and the corpus-manifest lineage all embedded in the object JSON); this analyzer turns each unpromoted candidate into an adapter_revision recommendation. The engine’s gates do the rest: apply is refused without a clean recorded run of the pinned evalset, the promotion is an immutable (model:X, mg:adapter_promotion) Fact hosts re-resolve from, and rollback retracts it.
budget_pressure
Budget pressure (T0; requires telemetry) — when context assembly keeps overflowing its token budget, recall is being forced to drop material it selected: the memory has outgrown the window it’s rendered into. The signal is the assembly-budget rollup in the telemetry sidecar (§8). Advisory and global (one finding, not per-entity): the remedy — raise the budget, tighten selection, or curate — is a human/host decision, so it never auto-applies.
cold_grains
Cold grains (T0; requires telemetry) — the first utility analyzer, not a consistency one. A fact that has sat in memory past a grace window and has never been surfaced by recall is memory that isn’t earning its place: it costs storage and assembly budget without ever informing an answer. This is exactly the signal deterministic consistency checks can’t see — it needs the recall-telemetry sidecar (§8). Advisory only: cold ≠ wrong (a rarely-hit but critical fact is legitimately cold), so it flags a retire candidate for human judgment and never auto-applies.
contradiction_sweep
Contradiction sweep (T0). Flags subjects holding two or more live objects under a functional relation (one that should be single-valued). Ships with a seeded functional-relation list so it fires on day one; the from-file learner (single-valued for ≥80% of subjects) is deferred. Resolving a contradiction is a judgment call, so it never auto-applies.
coverage_gap
Coverage gap (T0; requires telemetry) — recurring questions the memory can’t answer. When the same recall query keeps coming back empty, the agent is repeatedly reaching for knowledge that was never stored: a gap the memory should be filled to close. Deterministic consistency checks are blind to this — it lives entirely in the recall-telemetry query rollups (§8). Advisory: the fix is to add the missing memory (a human/host act), so it flags the gap and never auto-applies.
duplicate_sweep
Duplicate sweep (T0/T1). Exact triple duplicates (NFC + case-fold) among Facts, and near-duplicate Observations by token-set Jaccard. Consolidation keeps the earliest member canonical and supersedes the rest — structural, non-destructive. (Exact duplicates are auto-apply eligible; near-dups fail the engine’s exact-equality shape check and stay pending — §6.3.)
fork_surfacing
Fork surfacing (T0; requires the forks capability). Entities with more than one live head, ranked, with a proposed merge. When the substrate does not provide forks the analyzer yields nothing and the manifest’s requires: [forks] drives the activation-ladder message (§8) — never a silent pretend-success.
goal_stagnation
Goal stagnation (T0) — a Goal grain (0x07) that is still active, has made little progress, and is old. Computed from the grain’s own goal_state + progress fields (the field-based form the review asked about — not the weaker “no progress events” form). Advisory only; never auto-applies.
lesson_pile
Lesson pile (T0, default-off) — an active-lesson budget per entity.
outcome_review
Outcome review (T0). For applied recommendations past their review_after, the engine re-runs the stored metric query (it owns the &mut substrate) and hands the measured values in as OutcomeInputs; this analyzer makes the deterministic changed/regressed decision and proposes a revert on regression. Closes the honesty loop — makes approve and auto-apply accountable to measured history.
retention_sweep
Retention sweep (T0): grains older than a declared maximum age.
run_outcome
Run outcomes (T0) — whole-run health for areev run workflows (§8 Wave 4). The datasource is the compact run_outcome Observation the driver writes at every terminal run (outcome label + spent figures + plan hash). Two signals, both advisory (Flag — what to do about a failing or expensive workflow is a human/host decision, never auto-applied):
skill_stall
Skill stall (T0) — the on-theme analyzer for a “self-improving agents” product. A Skill grain (0x0B) carries proficiency (aliases confidence) and practice_count. A skill practiced many times whose proficiency stays low is one the agent keeps doing but isn’t getting better at — a genuine “stop and rethink the strategy” signal, computed from the grain’s own fields (no chain traversal, no telemetry). Advisory only: it surfaces the skill for human attention; there is no automatic fix, so it never auto-applies.
staleness
Staleness (T0): grains whose declared valid_to has elapsed. The honest framing — “expiry you declared” — only; the soft never-recalled tier is deferred (§8). One recommendation per grain (single-grain FORGET), so each dedups on its own target.
tool_failure
Tool-failure clustering (T0) — the flagship analyzer. Groups error Tool grains (captured tool calls) by (tool_name, normalized error signature) and fires when a cluster is frequent (≥ min_count) AND is either a meaningful share of that signature’s OPPORTUNITIES (≥ min_rate) OR a large absolute count (≥ min_abs) — so high-volume, moderate-rate failures aren’t hidden. Emits a memory lesson. Because the signature is derived from attacker-influenceable tool output, this analyzer never auto-applies (§6.3) — its manifest is Never.