Resolve a Conflict

When two atoms in your knowledge graph contradict each other — or when an atom contradicts a strategy node — Momental flags it as a conflict and notifies you. This is a feature, not a problem. Conflicts surface stale beliefs, competing assumptions, and misaligned strategy before they cause real damage.

Where conflicts appear

Reading a conflict

Every conflict shows you:

Example conflict

Atom A: "We prioritize mobile users. All new features ship mobile-first."
         Created by: Sarah, 14 months ago

Atom B: "We are a desktop-first product. Mobile is read-only."
         Created by: James, 3 months ago

Conflict type: SEMANTIC
Confidence: HIGH

This is a real conflict — two authoritative statements saying opposite things. One of them is stale.

Your resolution options

OptionWhat it doesWhen to use it
Keep existing Marks the new atom as superseded. The old atom stays authoritative. The old atom is still correct. The new one was a mistake or duplicate.
Keep new Marks the old atom as superseded. The new one becomes authoritative. The old atom is stale. The team's understanding has evolved.
Keep both Marks the conflict as resolved without retiring either atom. Both stay active. Both are true in different contexts (e.g., different product lines or time periods).
Merge Combines both into a new atom that captures the nuance. Both originals are retired. Both contain partial truth that should be unified into one statement.
Dismiss Marks the conflict as a false positive. No atoms are changed. The detection was wrong — the atoms don't actually conflict.

Resolving via MCP

// List open conflicts
const conflicts = await momental_conflicts_list();

// Get details on a specific conflict
const conflict = await momental_conflict_details({ conflictId: conflicts[0].id });

// Resolve: keep the newer atom, retire the old one
await momental_conflict_resolve({
  conflictId: conflict.id,
  resolution: "KEEP_NEW",
  rationale: "Strategy changed in Q3 — we are now desktop-first. Atom A is 14 months old and no longer reflects current direction."
});

Cross-tree conflicts

A cross-tree conflict is when an atom in your knowledge graph directly contradicts a strategy node. These are the most strategically significant — they mean what you believe and what you're trying to do are out of alignment.

Knowledge atom: "Free tier users are not strategic — focus on enterprise."
Strategy node:  KEY_RESULT: "Grow free tier signups by 50% this quarter"

→ Cross-tree conflict: ATOM_CONTRADICTS_STRATEGY

Resolving a cross-tree conflict usually means one of three things:

const crossTreeConflicts = await momental_cross_tree_conflicts_list();

await momental_cross_tree_conflict_resolve({
  conflictId: crossTreeConflicts[0].id,
  resolution: "ATOM_IS_STALE",
  rationale: "We changed strategy in Q2 — free tier is now a growth lever, not a distraction."
});

When to dismiss vs. resolve

Dismiss when the detection is genuinely wrong — two atoms that use similar language but aren't actually contradictory. Resolve when there's a real tension, even if the answer is "keep both in different contexts."

A well-maintained workspace has zero open high-confidence conflicts. Low-confidence conflicts can be periodically reviewed and dismissed if they're false positives.