This page describes intended behaviour or structure. No implementation is claimed unless a section is explicitly marked Current implementation or Evidence.
Knowledge is what the organization knows; memory is what happened and what was learned (original handoff §26). Working memory is run state (BC-03, BC-06) and is not stored here. MemoryPromotionService owns the other classes: episodic memory (run 8742 upgraded BillingService, package X v9 failed, v8.4 worked, PR 892), semantic candidates (facts learned from execution) and procedural candidates (how work is done, which evolve into versioned skills). It runs the lifecycle of §31: observation → candidate → classification → evidence check → confidence → policy → store → reinforce or decay → archive or delete, and it prevents uncontrolled accumulation of low-quality generated memory.
This service was added by the design plan because BC-13 had no module row; the June-2026 rows PromptMemoryService, RuntimeMemoryService and DecisionMemoryService stay later-stage.
flowchart LR
S["MemoryPromotionService"]
ContextBuilderService["ContextBuilderService"] -->|grpc| S
AgentRuntimeService["AgentRuntimeService"] -->|grpc| S
StudioBff["StudioBff"] -->|sync-http| S
S -->|grpc| RunControlService["RunControlService"]
S -->|grpc| ModelRouterService["ModelRouterService"]
S -->|grpc| VectorMemoryService["VectorMemoryService"]
S -->|grpc| ArtifactService["ArtifactService"]
S -->|grpc| AgentRegistryService["AgentRegistryService"]
S -->|grpc| PolicyEngineService["PolicyEngineService"]
S -. "MemoryObserved" .-> E_MemoryObserved(("event"))
S -. "MemoryClassified" .-> E_MemoryClassified(("event"))
S -. "MemoryPromoted" .-> E_MemoryPromoted(("event"))
S -. "MemoryArchived" .-> E_MemoryArchived(("event"))
S -. "SkillCandidateProposed" .-> E_SkillCandidateProposed(("event"))
Hold "Alt" / "Option" to enable pan & zoom
Governance (D32, D33): learning is tenant-scoped; promotion to Shared scope needs a reviewed proposal and the tenant's consent record; promotion of a semantic memory is an approval-gated action of class publication bound to the memory's content hash (D21), requested through Run Control and decided by a Reviewer or Workspace admin.
MemoryItem — One memory from observation to promotion — class, scope, provenance (run, attempt, artifacts, sources), evidence verdict, confidence, review decision, reinforcement count, decay and expiry. (catalog entry)
Field
Type
Required
Description
memoryId
guid
yes
tenantId
string
yes
projectId
string
no
scope
enum:MemoryScope
yes
class
enum:MemoryClass
yes
state
enum:MemoryState
yes
summaryRef
string
yes
Artifact reference of the memory text (content never in the row).
originRunId
guid
yes
originAttemptId
guid
no
evidenceRefs
list:string
yes
Artifacts, receipts and source citations supporting the memory.
confidence
decimal
yes
trustTier
string
yes
AgentObservation until promoted; InferredFact or SourceFact after evidence check.
reviewApprovalId
guid
no
Approval of class publication (memory promotion is a gated action, D21).
reinforcements
int
yes
lastUsedAt
datetime
no
expiresAt
datetime
no
promotedAt
datetime
no
version
long
yes
Invariants:
A memory reaches Promoted only through a review decision bound to its exact content hash (approval of class publication); Shared scope additionally requires the tenant's consent record.
Semantic candidates become organizational facts only with an evidence verdict that cites sources; otherwise they stay AgentObservation and are retrievable only as such.
Procedural candidates that are reinforced beyond the threshold are proposed as skill releases (BC-04), not promoted as memory.
Every memory has an expiry; reinforcement extends it, decay archives it; deletion follows the project's data lifecycle (D31).
Classifies candidates (structured profile) into temporary, episodic, semantic candidate, procedural candidate or discard with a confidence; never promotes.
EvidenceChecker
event
—
exponential
memoryId + evidenceVersion
Checks semantic candidates against sources and receipts, sets the trust tier and routes to review per policy.
DecaySweeper
schedule 0 5 * * *
MemoryArchived, SkillCandidateProposed
fixed
memoryId + day
Decays unused memories past their window, archives decayed ones and proposes reinforced procedural memories as skill candidates.
Only in-memory chat history exists in the agents framework; no memory class, lifecycle, review or consent exists. The runtime memory page describes the earlier generation's feedback loop that this service governs.