Frontmatter
| id | 10151 |
| title | DreamService: deterministic ingestion phase for Memory + Session graph nodes |
| state | Closed |
| labels | enhancementaiarchitecturecore |
| assignees | tobiu |
| createdAt | Apr 21, 2026, 11:30 AM |
| updatedAt | May 15, 2026, 2:42 PM |
| githubUrl | https://github.com/neomjs/neo/issues/10151 |
| author | tobiu |
| commentsCount | 0 |
| parentIssue | 10143 |
| subIssues | [] |
| subIssuesCompleted | 0 |
| subIssuesTotal | 0 |
| blockedBy | [] |
| blocking | [x] 10153 Lazy back-fill: Memory + Session nodes for pre-migration Chroma rows, [x] 10152 SemanticGraphExtractor: emit typed edges to Memory + Session nodes |
| closedAt | Apr 21, 2026, 5:08 PM |
DreamService: deterministic ingestion phase for Memory + Session graph nodes
tobiu added parent issue #10143 on Apr 21, 2026, 11:33 AM
tobiu marked this issue as blocking #10152 on Apr 21, 2026, 11:33 AM
tobiu marked this issue as blocking #10153 on Apr 21, 2026, 11:33 AM
tobiu cross-referenced by #10143 on Apr 21, 2026, 3:06 PM
tobiu cross-referenced by #10158 on Apr 21, 2026, 3:23 PM
tobiu marked this issue as blocking #10158 on Apr 21, 2026, 3:23 PM
tobiu assigned to @tobiu on Apr 21, 2026, 4:14 PM
tobiu cross-referenced by PR #10161 on Apr 21, 2026, 4:36 PM
tobiu closed this issue on Apr 21, 2026, 5:08 PM
tobiu cross-referenced by #9999 on Apr 21, 2026, 7:03 PM
tobiu cross-referenced by PR #10171 on Apr 22, 2026, 12:47 AM
tobiu cross-referenced by #10172 on Apr 22, 2026, 1:19 AM
DreamService: deterministic ingestion phase for Memory + Session graph nodes
Context
Parent sub-epic (#10143) phase 1: the deterministic Chroma-ID → graph-node ingestion step that runs before
SemanticGraphExtractoron every REM cycle.The Problem
Current REM pipeline treats memories/summaries as source material only. No anchor node exists in the graph. Downstream mailbox
IN_REPLY_TO+ identityAUTHORED_BYedges cannot proceed without these anchors.The Architectural Reality
DreamService.processUndigestedSessions()runs phase 0 (ConceptIngestor), phase 1 (FileSystemIngestor), then per-session extraction (line 173-221).memory:<chroma-id>,session:<chroma-id>.The Fix
DreamService.ingestMemoryAndSessionNodes(session)— runs per session inside the REM loop, beforeexecuteTriVectorExtraction.Sessionnode fromsession.meta(sessionId, title, createdAt, userId metadata).Memorynodes fromStorageRouter.getMemoryCollection().get({where: {sessionId}})— one node per memory, keyed by Chroma ID.ORIGINATES_IN(Memory → Session)edges inline.MemoryandSessionnode types with properties{id, chromaId, sessionId?, title?, createdAt, userId?}. Indices onsessionId(Memory) anduserId(both).Acceptance Criteria
ingestMemoryAndSessionNodesruns pre-extraction per session in REM pipelineORIGINATES_INedges created for every Memory → SessionORIGINATES_INedgeOut of Scope
Related
ai/daemons/DreamService.mjs, graph schema migrationOrigin Session ID: 71dc3cd8-d39d-48e1-ac62-e240ca67d1a5