v3/docs/adr/ADR-328-cognitum-assisted-agent-learning.md
Status: Proposed — structural policy primitives implemented; service adapters pending
Date: 2026-07-28
Decision owners: Ruflo memory, policy, MetaHarness, Meta-LLM, and Cognitum maintainers
Related: ADR-176, ADR-322, ADR-323, ADR-324, ADR-325, ADR-326,
ADR-327
Ruflo may use Cognitum and Meta-LLM services to improve agent development through routing, critique, evidence retrieval, and validated memory proposals. Those integrations form a capability plane, not an authority plane.
The closed initial action vocabulary is:
cognition.route
cognition.critique
memory.recall
memory.propose
evidence.read
memory.commit-validated
No action in this profile authorizes policy promotion, MetaHarness promotion, deployment, release, IAM, billing, secret access, or an ownership transition. Those actions continue through their separate ADR-324/325 envelopes.
A Cognitum service can propose learning evidence. It cannot write Ruflo memory directly. A validated memory commit requires a content-bound, one-use capability and an ADR-324 decision receipt. Committing memory never automatically changes active policy or promotes a model/candidate.
ADR-326 defines cross-product authority and envelope semantics. Assisted agent learning has a different lifecycle and failure mode:
agent_output provenance, not truth;Treating cognition as ambient authority would let a model route expand its own tools, persist its own conclusions, or promote its own policy. This ADR forbids that loop.
| Action | Purpose | Explicitly does not allow |
|---|---|---|
cognition.route | Recommend a model, provider, skill, or workflow route | Execute the route, add tools, increase budget |
cognition.critique | Evaluate a plan, patch, test result, or trajectory | Modify code, approve a release, declare truth |
memory.recall | Retrieve tenant- and namespace-bounded memory | Write, delete, promote, or broaden retrieval |
memory.propose | Submit content for validation | Commit memory or alter policy |
evidence.read | Resolve approved evidence by digest/reference | Read secrets or unredacted private data |
memory.commit-validated | Commit exactly validated content | Modify active policy, route, model, or deployment |
Delegation may reduce these actions, resources, budgets, expiry, and concurrency. It cannot add another action.
A cognition request binds:
A response binds the request digest, route/model actually used, output digest, usage, latency, provider status, evidence references, and refusal/degraded state.
Model prose is never interpreted as a capability. Structured output is validated against the action schema and is still untrusted evidence.
Every service probe records:
interface CognitionServiceHealth {
identity: 'verified' | 'unverified' | 'unknown';
configured: 'yes' | 'no' | 'unknown';
reachable: 'yes' | 'no' | 'unknown';
healthy: 'yes' | 'no' | 'unknown';
authorized: 'yes' | 'no' | 'unknown';
status: 'available' | 'degraded' | 'blocked' | 'unavailable';
checkedAt: string;
}
A valid grant does not imply reachability or health. A successful health probe does not imply authorization. Missing configuration is distinct from network failure. Product and CLI surfaces preserve these states rather than showing one generic success/failure badge.
When cognition is unavailable, Ruflo may use its explicit local route if the task and policy allow it. The fallback is recorded. A degraded cognition run cannot promote MetaHarness state.
Recall returns typed ADR-323 memory records with provenance, tenant, namespace, source digest, creation/observation time, expiry, confidence, and revocation state. Retrieval policy filters before content reaches the agent.
The agent and validator distinguish:
system_observation;tool_result;user_claim;agent_output; andunknown.Similarity is not authority. A high vector score cannot satisfy signed evidence, current observation, tenant, or policy requirements.
memory.propose
-> content and source digests
-> schema and provenance validation
-> poisoning/PII/prompt-injection checks
-> duplication and contradiction checks
-> policy evaluation
-> optional human approval
-> one-use memory.commit-validated capability
-> atomic memory commit and receipt
The proposal includes the target tenant, namespace, memory type, content digest, evidence digests, validator profile, proposed expiry, and correlation ID. Validators do not mutate memory.
The commit capability binds:
proposal ID and revision
tenant and namespace
exact content digest
ordered evidence digest set
validator ID and version
policy version and receipt
approval reference when required
idempotency key
expiry and maxUses = 1
The memory authority consumes the capability and writes the memory record, receipt, and outbox event atomically. The same key and request digest replay the original result; the same key with different content conflicts.
A committed memory can influence a future policy proposal or benchmark. It cannot:
Policy and promotion require independent evaluation and transaction receipts. The policy request may cite the memory record as evidence, but must recompute or verify every authorizing term.
Memory namespaces are tenant-qualified. Cross-tenant learning requires a separate, explicit, privacy-reviewed aggregate that contains no tenant data and cannot be reverse-mapped to one tenant.
Revocation or correction creates a new authoritative event. Existing receipts remain in history but future recalls exclude the revoked record. Dependent policy proposals and benchmark receipts retain the referenced memory digest so impact can be traced.
observe.The first Ruflo implementation provides:
The following remain service-adapter work:
Until those adapters exist, documentation and release notes must describe the feature as a policy and interoperability foundation, not an active cloud self-learning loop.
unavailable.blocked.agent_output, not system_observation.memory.commit-validated.Review this ADR when an external cognition provider receives write authority, AgentDB adds a transactional validation API, a memory record becomes an input to automatic policy or promotion, or the local compatibility path is removed.