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§
- 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
forkscapability). 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’srequires: [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 owngoal_state+progressfields (the field-based form the review asked about — not the weaker “no progress events” form). Advisory only; never auto-applies. - outcome_
review - Outcome review (T0). For applied recommendations past their
review_after, the engine re-runs the stored metric query (it owns the&mutsubstrate) and hands the measured values in asOutcomeInputs; 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 runworkflows (§8 Wave 4). The datasource is the compactrun_outcomeObservation 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(aliasesconfidence) andpractice_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_tohas 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 tool’s calls (≥ 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.