Skip to documentation
Docs navigation
Docs/Conflict detection & versioning
Advanced

Conflict detection & versioning

Understand how supported crawler maintenance distinguishes competing facts, explicit updates, supersession, and decay.

Memory quality model

MemoGrafterCrawler runs deterministic, non-destructive passes over active memory. It annotates rows and creates edges; it does not delete graph nodes or rewrite historical topic summaries.

Conflict versus update

A conflict contains competing normalized values for the same subject and predicate without an explicit update cue.
A version update requires language such as “actually,” “now,” “changed to,” or “instead” on the newest value.
Plain disagreement keeps both facts active and marks conflict; recency alone does not make one fact current.
Broad topic memories are conservatively filtered to reduce false-positive conflict groups.

Graph representation

Conflicting facts receive hasConflict: true and an idempotent conflicts memory edge.
An older replaced fact receives supersededBy pointing to the newer fact.
The update edge direction is newer_memory --updates--> older_memory.
Decay marks stale active memory as decayed using confidence-weighted exponential recency.

Run supported maintenance

crawler.ts
const memo = new MemoGrafter(config);
await memo.initialize();

const crawler = new MemoGrafterCrawler({
  store: memo.store,
  intervalMs: 60_000,
});
const report = await crawler.runOnce();
console.log(report);
crawler.start();
// During shutdown:
crawler.stop();
await memo.close();

Historical summaries

Topic summaries describe the segment that produced them and remain historical. When active memory supersedes a detail in an older summary, graft prompt assembly adds deterministic maintenance notes and active facts so the downstream model knows what to prefer.

Lifecycle interaction

Forgotten memories and memories attached to suppressed topics are skipped.
Already superseded or decayed rows are not treated as active candidates.
Maintenance annotations remain visible in snapshots and history.
Existing false-positive edges are not automatically deleted by later crawler runs.