Skip to content

RKM: evidence-driven Conflict Resolution stage in the validator pipeline (detect+score -> resolve) #129

Description

@se-jo-ma

Context. The RKM validator pipeline detects conflicts (shadow.py subsumption/shadow/salience-inversion) and scores them (scoring.py 0.6/0.9 bands) but has no resolution step. MemGraphRAG's strongest ablation: removing Conflict Resolution is the single biggest accuracy hit — detection alone is insufficient. Nautilus already has the provenance substrate (LineageRecord observation_ids/sandbox_results/derived_from, mark_retired, Proposal.decisions) to do bounded, deterministic auto-resolution of a defined conflict subclass before falling back to humans.

Proposal. Insert a resolve stage: new nautilus/rkm/validator/resolve.py, resolve(shadow_flags, lineage_evidence) -> ResolutionDecision, handling only the deterministic subset — e.g. a subsumed_by flag where the existing rule is strictly broader / higher salience / richer provenance → auto-retire the redundant proposal. salience_inverts and mutually-exclusive cases still route to human review. Pure function over flags+lineage; never invokes an LLM (swaps the paper's LLM adjudicator for a rule/provenance-deterministic one — borrows the goal, not the method).

Where.

  • nautilus/rkm/validator/pipeline.py run_pipeline :21-66 (insert resolve after shadow_check/score).
  • Consumes shadow.ShadowFlag (shadow.py:33) + lineage.LineageRecord (lineage.py:29); status transitions via rkm/types.py Proposal.decisions :35 + ProposalStatus 'superseded'/'promoted' :14; auditability via LineageStore.mark_retired (lineage.py:201).

Acceptance criteria.

  • Deterministic auto-retire for the subsumed_by subset; everything ambiguous → human review (fail-closed).
  • Retirement recorded via mark_retired with lineage.

Caveat (sequencing). run_pipeline currently calls shadow_check({}, []) / sandbox_replay({}, audit_log) with empty inputs (it is itself a scaffold) — a resolve stage is only meaningful once the pipeline is fed real ruleset + history. Sequence after that wiring.


Source: arXiv:2606.00610v1 — "MemGraphRAG: Memory-based Multi-Agent System for Graph Retrieval-Augmented Generation". Distilled from arXiv-research/2606.00610v1/analysis.md; file refs verified against current main by the analysis pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium priority: v2 epic or non-blocking gaparea/coreBroker core, CLIPS routing, session stateenhancementNew feature or requestsize/M<2 days: multi-file feature

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions