Conflicts & Gaps

Momental continuously monitors the knowledge graph for contradictions between stored knowledge and current reality. These tools let you inspect and resolve those signals.

What Are Conflicts?

A conflict is a detected contradiction between two or more knowledge atoms - or between an atom and the current codebase. Conflicts are raised automatically by Momental's conflict detection system when it finds evidence that a stored claim no longer holds.

For example: an atom says "Our API responds within 200ms at p99", but recent monitoring data shows p99 has been 450ms for two weeks. Momental raises a conflict and routes it to the relevant team members for review.

Listing Conflicts

momental_conflicts_list

Returns all open conflicts visible to the current agent. By default returns only unresolved conflicts. Pass includeResolved: true to include resolved history.

ParameterTypeRequiredDescription
includeResolvedbooleanNoInclude already-resolved conflicts (default: false)
domainstringNoFilter by knowledge domain
limitnumberNoMaximum results (default: 20)
const conflicts = await momental_conflicts_list();
// [
//   {
//     id: "conflict_abc",
//     type: "CONTRADICTION",
//     severity: "HIGH",
//     summary: "Atom A says p99<200ms, but monitoring shows 450ms",
//     atomIds: ["atom_001", "atom_002"],
//     createdAt: "2026-03-25T09:00:00Z"
//   }
// ]

momental_conflict_details

Returns the full details of a specific conflict, including the conflicting atoms, the evidence that triggered the conflict, and any prior resolution attempts.

ParameterTypeRequiredDescription
conflictIdstringYesThe conflict ID from momental_conflicts_list
const details = await momental_conflict_details({ conflictId: "conflict_abc" });
// {
//   id: "conflict_abc",
//   conflictingAtoms: [
//     { id: "atom_001", statement: "API p99 is under 200ms", createdAt: "..." },
//     { id: "atom_002", statement: "p99 latency has been 450ms for 2 weeks", createdAt: "..." }
//   ],
//   evidence: "Monitoring data from Grafana dashboard shows consistent 450ms",
//   suggestedResolution: "Update atom_001 to reflect current measured latency"
// }

Resolving Conflicts

momental_conflict_resolve

Marks a conflict as resolved and records your resolution rationale. The resolution is stored as a DECISION atom so future agents understand why the conflict was closed this way.

ParameterTypeRequiredDescription
conflictIdstringYesThe conflict to resolve
resolutionstringYesHow the conflict was resolved
atomToKeepstring (UUID)NoIf two atoms contradict, which one is correct
atomToRetirestring (UUID)NoThe atom that is now outdated/incorrect
await momental_conflict_resolve({
  conflictId: "conflict_abc",
  resolution: "Updated atom to reflect current p99 of 450ms. Latency regression introduced in v2.3.1.",
  atomToKeep: "atom_002",   // the recent measurement
  atomToRetire: "atom_001"  // the outdated claim
});

momental_conflict_dismiss

Dismisses a conflict without resolving the underlying issue. Use when the conflict is a false positive - for example, when both atoms are correct but refer to different environments.

ParameterTypeRequiredDescription
conflictIdstringYesThe conflict to dismiss
reasonstringYesWhy this conflict is a false positive
await momental_conflict_dismiss({
  conflictId: "conflict_xyz",
  reason: "Both atoms are correct - atom_001 is about staging, atom_002 is about production"
});

momental_conflict_feedback

Adds feedback to a conflict without resolving it. Useful for annotating a conflict with context while waiting for another team member to make the final call.

ParameterTypeRequiredDescription
conflictIdstringYesThe conflict to annotate
feedbackstringYesContext or investigation notes

Cross-Tree Conflicts

Cross-tree conflicts arise when two strategy nodes in different parts of the tree contain contradictory decisions - for example, two EPICs that each allocate the same budget resource. These are more strategic in nature and require team leadership to resolve.

momental_cross_tree_conflicts_list

Returns open cross-tree conflicts visible to the current agent.

momental_cross_tree_conflict_resolve

Resolves a cross-tree conflict with a rationale and the winning strategy node.

momental_cross_tree_conflict_dismiss

Dismisses a cross-tree conflict as a false positive with a reason.

Knowledge Gaps

A gap is a public surface that has no corresponding documentation or knowledge atom. Gaps are detected automatically via the weekly gap scan and can also be surfaced on demand.

momental_find_gaps

Scans the knowledge graph for surfaces (tools, agents, API endpoints) that have no linked documentation or atoms. Returns a prioritized list of coverage gaps.

ParameterTypeRequiredDescription
scopestringNoFilter by scope: "documentation", "knowledge", or "all" (default: "all")
limitnumberNoMaximum gaps to return (default: 20)
const gaps = await momental_find_gaps({ scope: "documentation" });
// [
//   { surfaceId: "tool_xyz", surfaceName: "momental_code_deps", type: "MCP_TOOL", priority: "HIGH" },
//   { surfaceId: "agent_abc", surfaceName: "Thor", type: "AGENT", priority: "MEDIUM" }
// ]

momental_gaps_list

Returns the current list of tracked gaps (gaps that have been formally added to the backlog, as opposed to newly detected gaps from momental_find_gaps).

momental_gap_resolve

Marks a gap as resolved, typically after a doc page or knowledge atom has been created to cover the surface.

ParameterTypeRequiredDescription
gapIdstringYesThe gap to mark as resolved
resolutionstringYesWhat was created to cover this gap

momental_trigger_conflict_detection

Manually triggers the conflict detection scan for the current team. The scan normally runs weekly, but you can trigger it after a significant batch of knowledge updates to catch contradictions immediately.

// After a large batch of atom updates, trigger immediate conflict detection
await momental_trigger_conflict_detection();
// Returns: { status: "queued", estimatedSeconds: 30 }

Quick Reference

ToolPurpose
momental_conflicts_listList open conflicts
momental_conflict_detailsFull details of one conflict
momental_conflict_resolveResolve with rationale
momental_conflict_dismissDismiss as false positive
momental_conflict_feedbackAdd notes without resolving
momental_find_gapsFind undocumented surfaces
momental_gaps_listList tracked gaps
momental_gap_resolveMark a gap as covered
momental_trigger_conflict_detectionRun conflict scan now