Skip to content

The Adjudication Gate (C7)

The AdjudicationGate (C7) is the central decision point in the mempill engine. Every claim that survives gateway validation (C1) and firewall checks (C6) passes through C7 before any write occurs. C7 is deterministic — given identical inputs, it always produces the same output. It embeds no model and calls no external service.

Before reaching C7, a claim travels through two earlier components:

  1. Gateway (C1) — validates provenance, structure, and temporal coherence. Malformed or incoherent claims are rejected immediately (Rejected disposition).
  2. Firewall (C6) / Amplification Guard — detects recall re-entry loops and burst patterns. Claims matching these signatures are routed to Quarantined or corroborated by identity.
  3. Reconciler (C3) — classifies the conflict relationship between the incoming claim and the current incumbent belief. Produces a ConflictType that C7 uses as its primary routing signal.

C7 never calls an extractor, never calls an LLM, and never reads external state beyond what is passed to it.

C7 classifies every incoming claim into one of two paths:

Cheap path — commit immediately, without oracle involvement:

  • New, non-conflicting External(UserAsserted) or External(ExternalFirstHand) claim
  • No prior live claim on the same (subject, predicate) — or the prior claim has a non-overlapping valid-time window (succession)
  • Outcome: CommittedCheap

Heavy path — adjudication required:

  • Incoming claim contradicts an existing live claim on the same (subject, predicate) with the same cardinality
  • The contradiction is a genuine belief-overturning operation, not a clean temporal succession

The asymmetry is intentional. First-hand external claims describing facts not yet in the store are cheap. Claims that would overturn an existing belief require evidence and potentially oracle judgment.

ingest_claim
C1 Gateway ──────────────────────── invalid → Rejected
│ valid
C6 Firewall ─────────────────────── burst/loop → Quarantined
│ passes
C3 Reconciler: classify conflict
├── ConflictType::NoConflict
│ │
│ ├── provenance = External(*) ───────────────────► CommittedCheap
│ └── provenance = ModelDerived ──────────────────► CommittedInferred
└── ConflictType::SameLineConflict (belief-overturning)
├── oracle_present = false ──────────────────────► Contested
└── oracle_present = true
├── request_adjudication() → handle_id
│ ↓
│ (async gap)
│ ↓
│ submit_adjudication()
│ │
│ ┌──────────┴──────────┐
│ │ │
│ Affirm Deny
│ (challenger wins) (incumbent stands)
│ │ │
│ Challenger→CommittedCheap Challenger→Superseded
│ Incumbent→Superseded
└── oracle returns Unknown ──────────► Contested

The Reconciler (C3) classifies conflicts before they reach C7:

ConflictType Meaning C7 route
NoConflict No live claim on same subject-line, or succession (non-overlapping trusted valid-time) Cheap path
SameLineConflict Different value, same (subject, predicate), same cardinality, overlapping or untrusted valid-time Heavy path

Temporal succession (non-overlapping, trusted valid-time windows) is classified as NoConflict by C3 and routes to the cheap path — no oracle is needed. See Valid-Time Succession.

Before routing to the heavy path, C7 validates temporal coherence. A claim is incoherent if:

  • valid_time.start > valid_time.end (inverted window)
  • valid_time.start > tx_time (claims to have been true in the future at the point it was recorded)

Incoherent claims are routed to Quarantined. This enforces the B7 constraint: a validity boundary must be dated before or at the point when it was learned to be false.

ModelDerived claims (model-inferred content) take a separate commit path through C7:

  • Non-conflicting ModelDerived claims commit as CommittedInferred — down-weighted relative to external claims.
  • Conflicting ModelDerived claims are routed to PendingConflict — they do not carry enough authority to overturn an existing external belief unilaterally.
  • ModelDerived claims cannot trigger the oracle heavy path directly; they cannot overturn until anchored to external evidence.

This enforces invariant I5: stochastic proposers propose, the deterministic gate commits.

  • I5 — Stochastic proposes, never commits: oracle and extractor outputs are proposals; C7 makes the commit decision.
  • I7 — Contested first-class: oracle absent + conflict → Contested, never silent incumbent-wins.
  • DC-4 — Oracle is the only correctness pressure: no internal signal (frequency, corroboration count, recency) substitutes for oracle judgment on a belief-overturning conflict.