{"record":{"id":"cfccdb5f7526187e","repo":"mastra-ai/mastra","slug":"knowledgerecord-not-found-value-recordid","errorCode":null,"errorMessage":"KnowledgeRecord not found: ${value.recordId}","messagePattern":"KnowledgeRecord not found: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/memory/src/processors/observational-memory/subconscious/knowledge-write-tools.ts","lineNumber":173,"sourceCode":"        requireVisible(source.scope, options, 'Knowledge merge source');\n        requireVisible(target.scope, options, 'Knowledge merge target');\n        return store.mergeNodes(value);\n      },\n    }),\n    knowledge_rescope: createTool({\n      id: 'knowledge_rescope',\n      description: 'Change a record visibility scope without exceeding its stamped ceiling.',\n      inputSchema: {\n        type: 'object',\n        properties: { recordId: { type: 'string', minLength: 1 }, scope: scopeLevelSchema },\n        required: ['recordId', 'scope'],\n        additionalProperties: false,\n      } satisfies JSONSchema7,\n      execute: async input => {\n        const value = input as { recordId: string; scope: KnowledgeScopeLevel };\n        const store = await getStore(memory);\n        const record = await store.getKnowledge({ id: value.recordId });\n        if (!record) throw new Error(`KnowledgeRecord not found: ${value.recordId}`);\n        requireVisible(record.scope, options, 'KnowledgeRecord');\n        const scope = resolveWriteScope(options, value.scope);\n        assertKnowledgeScopeWithinCeiling(scope, record.maxScope);\n        return store.rescopeKnowledge({ id: record.id, scope });\n      },\n    }),\n    knowledge_write_node_description: createTool({\n      id: 'knowledge_write_node_description',\n      description: `Write the bounded synopsis (max ${MAX_KNOWLEDGE_NODE_DESCRIPTION_LENGTH} UTF-16 code units) on an existing visible node using optimistic concurrency. Pass an empty string to clear it. Does not create nodes.`,\n      inputSchema: {\n        type: 'object',\n        properties: {\n          node: { type: 'string', minLength: 1 },\n          expectedVersion: { type: 'integer', minimum: 1 },\n          description: {\n            type: 'string',\n            minLength: 0,\n            maxLength: MAX_KNOWLEDGE_NODE_DESCRIPTION_LENGTH,","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/mastra-ai/mastra/blob/75dd419e613fe9c39f846ffc500716141b74fda6/packages/memory/src/processors/observational-memory/subconscious/knowledge-write-tools.ts#L155-L191","documentation":"The knowledge_rescope tool looks up the knowledge record by recordId before changing its scope. If no record with that ID exists in the knowledge storage domain, this error is thrown. The library checks existence (and later visibility and scope ceiling) so it never silently rewrites or creates records.","triggerScenarios":"Calling knowledge_rescope with a recordId that is not present in the knowledge store, a deleted record fetched without includeDeleted, or an ID from a different Memory/storage instance.","commonSituations":"Curator agent reusing a recordId from a prior conversation that has since been soft-deleted; typos or truncated IDs in tool calls from the LLM; pointing the processor at a fresh database where the record was never written.","solutions":["Confirm the recordId exists via store.getKnowledge({ id }) before rescoping","Use IDs returned from knowledge_append / store.appendKnowledge in the same session rather than reconstructed ones","Check whether the record was soft-deleted (getKnowledge with includeDeleted: true) and restore or pick another record","Verify the Memory instance is attached to the intended knowledge storage backend"],"exampleFix":"// before\nawait tool.execute({ recordId: record.id, scope: 'org' });\n// after\nconst record = await store.getKnowledge({ id: record.id, includeDeleted: true });\nif (!record) throw new Error(`Record ${record.id} does not exist; cannot rescope`);\nawait tool.execute({ recordId: record.id, scope: 'org' });","handlingStrategy":"validation","validationCode":"const record = await store.getKnowledge({ id: recordId, includeDeleted: true });\nif (!record) throw new Error(`Cannot rescope: record ${recordId} not found`);","typeGuard":"function recordExists<T>(r: T | null | undefined): r is T { return r != null; }","tryCatchPattern":"try {\n  await tool.execute({ recordId, scope });\n} catch (e) {\n  if (e instanceof Error && e.message.startsWith('KnowledgeRecord not found')) {\n    // refresh record list from the knowledge store\n  } else throw e;\n}","preventionTips":["Only use recordIds returned by appendKnowledge/getKnowledge in the same storage backend","Check soft-deleted records with includeDeleted: true","Validate IDs before invoking LLM tool loops"],"tags":["memory","knowledge-graph","entity-not-found"],"backgroundTag":"entity-not-found","analyzedSha":"75dd419e613fe9c39f846ffc500716141b74fda6","analyzedAt":"2026-08-30T00:15:31.844Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}