Current

Knowledge admission and mutation planning

Benchmark first

Corpora: LongMemEval · QASPER · LongBench

Protocol: Replay sessions in timestamp order without gold-answer fields. Report information extraction, multi-session reasoning, temporal reasoning, knowledge updates, and abstention separately; add evidence Recall@k, write amplification, stored bytes, reader tokens, and latency. Compare raw-history, retrieval-only, extracted-memory, and consolidated-memory baselines under identical context budgets.

Admission is evaluated before reconciliation. A candidate may be valid JSON and still be unsafe, low-authority, redundant, or unsupported. Reconciliation runs only for accepted candidates.

How it works

Run provenance, evidence-span, recalled-input, secret, external-instruction, authority, and confidence rules over the candidate. Aggregate rule results into ACCEPT, DEFER, REJECT, or QUARANTINE with reason codes. Only accepted candidates reach mutation reconciliation, which validates add, merge, supersede, retract, or unchanged operations against the current canonical slot without writing storage.

Papers and standards

Indirect prompt injectionW3C PROVMem0: memory mutation operations

Disposition precedence and commit boundaries are proposed Mari contracts.

Decide admission before calling a mutation planner
from mari_components.knowledge import (
    AdmissionDisposition,
    AdmissionSignals,
    AdmissionThresholds,
    admit_candidate,
)

decision = admit_candidate(
    AdmissionSignals(
        confidence=0.94,
        has_provenance=True,
        evidence_span_valid=True,
        source_authorized=True,
        recalled_input=False,
        contains_secret=False,
        contains_external_instruction=False,
    ),
    thresholds=AdmissionThresholds(accept=0.90, defer=0.65),
)

if decision.disposition is AdmissionDisposition.ACCEPT:
    mutation_plan = reconcile(candidate, current)  # application-injected policy