Skip to main content
Users change their minds and facts change: “Actually, Tom manages the website project now.” EDN updates memory so your model uses the new fact, and keeps the old one in the history instead of overwriting it.

Corrections happen automatically

When you save a conversation with memory/ingest, EDN checks the user’s message:
  • A new fact (“Sara manages the website project.”) is saved as a USER_STATED record.
  • A correction (“Actually, Tom manages it now.”) is saved as a new USER_STATED record and, where it matches an earlier fact, replaces it.
So in most integrations, you don’t need to do anything extra: corrections in normal conversation are handled when you save each turn. EDN uses a language model to decide whether a message states a fact or a correction. Building the SIP uses no model.

What gets replaced

EDN only replaces a fact when the new statement clearly refers to the same thing. If it is unsure, it keeps both. Example:
  1. The user says “Sara manages the website project.” EDN saves record A (USER_STATED).
  2. Later: “Actually, Tom manages the website project now.” EDN saves record B (USER_STATED), and A gets superseded_by: B.
  3. A SIP for “Who manages the website project?” now contains only B. Record A is still listed, so you can see what changed.

Seeing what changed

The memory/ingest response tells you when a message replaced a fact. In the example above, saving step 2 returns:
Response
fact.replaces is null when the new fact didn’t replace anything, including when EDN kept both because it was unsure. Use GET /api/v1/memory/records/{record_id}/history to see every version of a fact.

Next steps

Memory records

How replaced records appear.

Provenance

What each source label means.

The SIP

Why replaced records never reach your model.