The Adjudication Gate (C7)
Overview
Section titled “Overview”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.
The write path up to C7
Section titled “The write path up to C7”Before reaching C7, a claim travels through two earlier components:
- Gateway (C1) — validates provenance, structure, and temporal coherence. Malformed or incoherent claims are rejected immediately (
Rejecteddisposition). - Firewall (C6) / Amplification Guard — detects recall re-entry loops and burst patterns. Claims matching these signatures are routed to
Quarantinedor corroborated by identity. - Reconciler (C3) — classifies the conflict relationship between the incoming claim and the current incumbent belief. Produces a
ConflictTypethat 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.
Cheap path vs. heavy path
Section titled “Cheap path vs. heavy path”C7 classifies every incoming claim into one of two paths:
Cheap path — commit immediately, without oracle involvement:
- New, non-conflicting
External(UserAsserted)orExternal(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.
Gate decision flowchart
Section titled “Gate decision flowchart”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 ──────────► ContestedConflictType taxonomy
Section titled “ConflictType taxonomy”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.
The B7 temporal coherence check
Section titled “The B7 temporal coherence check”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
Section titled “ModelDerived claims”ModelDerived claims (model-inferred content) take a separate commit path through C7:
- Non-conflicting
ModelDerivedclaims commit asCommittedInferred— down-weighted relative to external claims. - Conflicting
ModelDerivedclaims are routed toPendingConflict— they do not carry enough authority to overturn an existing external belief unilaterally. ModelDerivedclaims 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.
Key invariants enforced by C7
Section titled “Key invariants enforced by C7”- 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.
Next steps
Section titled “Next steps”- Contested and Dispositions — what happens after the gate routes a claim
- Oracle Resolution Loop — how QueuedForAdjudication claims resolve
- Key Invariants — the full invariant set