{"record":{"id":"5076b5f688e53571","repo":"rohitg00/agentmemory","slug":"validation-failed","errorCode":"validation_failed","errorMessage":"validation_failed","messagePattern":"validation_failed","errorType":"error_code","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/functions/summarize.ts","lineNumber":355,"sourceCode":"          concepts: summary.concepts,\n        };\n        const validation = validateOutput(\n          SummaryOutputSchema,\n          summaryForValidation,\n          \"mem::summarize\",\n        );\n\n        if (!validation.valid) {\n          const latencyMs = Date.now() - startMs;\n          if (metricsStore) {\n            await metricsStore.record(\"mem::summarize\", latencyMs, false);\n          }\n          logger.warn(\"Summary validation failed\", {\n            sessionId,\n            errors: validation.result.errors,\n          });\n          return { success: false, error: \"validation_failed\" };\n        }\n\n        const qualityScore = scoreSummary(summaryForValidation);\n\n        await kv.set(KV.summaries, sessionId, summary);\n        await safeAudit(kv, \"compress\", \"mem::summarize\", [sessionId], {\n          title: summary.title,\n          observationCount: compressed.length,\n        });\n\n        const latencyMs = Date.now() - startMs;\n        if (metricsStore) {\n          await metricsStore.record(\n            \"mem::summarize\",\n            latencyMs,\n            true,\n            qualityScore,\n          );\n        }","sourceCodeStart":337,"sourceCodeEnd":373,"githubUrl":"https://github.com/rohitg00/agentmemory/blob/e04ba88819c365c9acf9d6661ea802143e728bd6/src/functions/summarize.ts#L337-L373","documentation":"After the provider returns a summary, mem::summarize validates the parsed summary XML against schema/rules (validation.result). If validation reports errors, the function logs them and returns success:false with error 'validation_failed', refusing to persist an invalid summary to KV.summaries.","triggerScenarios":"registerSummarizeFunction: the LLM output parses to a summary but validation.result.valid is false (missing required fields like title, malformed structure, constraint violations), so the handler returns error 'validation_failed'.","commonSituations":"Smaller/weaker model omitting required summary fields; prompt/model changes altering XML shape; schema updated in a new agentmemory version while responses follow the old format; truncation dropping required trailing elements.","solutions":["Retry — nondeterministic LLM output may validate on a second attempt.","Use a stronger model that reliably follows the summary XML schema.","Update agentmemory (or the model prompt) so the expected schema matches the produced output.","Check the logged validation.result.errors to see exactly which fields failed and adjust configuration accordingly."],"exampleFix":"// before\nawait sdk.trigger({ function_id: \"mem::summarize\", payload: { sessionId } }); // ignored validation_failed\n// after\nconst r = await sdk.trigger({ function_id: \"mem::summarize\", payload: { sessionId } });\nif (r.error === \"validation_failed\") await sdk.trigger({ function_id: \"mem::summarize\", payload: { sessionId, model: \"stronger-model\" } });","handlingStrategy":"retry","validationCode":"// confirm the model in config matches the one your schema was validated against\nif (!/strong-model/.test(provider.model)) console.warn(\"model may not produce schema-valid summary XML\");","typeGuard":"function isValidationFailed(res: unknown): res is { success: false; error: \"validation_failed\" } {\n  return typeof res === \"object\" && res !== null && (res as any).error === \"validation_failed\";\n}","tryCatchPattern":"const res = await sdk.trigger({ function_id: \"mem::summarize\", payload: { sessionId } });\nif (isValidationFailed(res)) {\n  const retry = await sdk.trigger({ function_id: \"mem::summarize\", payload: { sessionId } });\n  if (isValidationFailed(retry)) escalateOrFallback(retry);\n}","preventionTips":["Use models known to follow strict XML output instructions.","Keep agentmemory and its expected summary schema in sync with your prompts.","Retry automatically on validation_failed before surfacing to users.","Read logged validation errors to target prompt fixes."],"tags":["llm","validation","summarization","schema"],"backgroundTag":"schema-validation-failed","analyzedSha":"e04ba88819c365c9acf9d6661ea802143e728bd6","analyzedAt":"2026-08-30T01:07:40.754Z","schemaVersion":2},"datasetVersion":"2026-08-30T03:17:51.788Z"}