0007: Authority-as-Entrenchment Arbitration
Date: 2026-06-26
Status
Section titled “Status”Accepted; implemented in dent8-core (supersession arbitration + canonical
hard-alarm + non-resurrection proof), earned entrenchment v0 (authority-weighted
corroboration + the unearned_supersessions subject-level audit), and survived-challenge
recording (ADR 0015: ChallengeRejected events +
Sybil-resistant FactState.survived_challenges, plus the opt-in earned-supersession gate).
Remaining future: uniqueness-constrained predicates and transactional store-layer
enforcement.
Context
Section titled “Context”Authority-weighted supersession is dent8’s headline differentiator versus Graphiti’s
recency-only contradiction resolution (“consistently prioritizes new information”),
and the cleanest mitigation for MINJA-style memory poisoning (a privilege-less user
must not override a high-authority fact). Originally apply_event applied every
Superseded/Contradicted event identically and ignored Authority entirely — the
differentiator was a design fact with no code. This ADR’s decision is now built.
Decision
Section titled “Decision”Make Authority an epistemic-entrenchment ordering that arbitrates conflict
resolution in the core fold, separate from Confidence:
- A
fact.supersededwhose replacing fact does not strictly out-rank the superseded active fact is rejected (or down-ranked), not silently applied. This operationalizes the invariant “higher-authority supersession requires an explicit basis.” - A
fact.contradictedagainst anAuthorityLevel::Canonical(or uniqueness- constrained predicate) fact is a hard alarm (a newTransitionError), not a soft transition toContested— the LFI “gentle-explosion” tier. Confidencenever substitutes forAuthorityin arbitration; a high-confidence low-authority fact cannot override a low-confidence high-authority one.
Consequences
Section titled “Consequences”Positive:
- Turns the headline differentiator into enforced behavior testable against MINJA/PoisonedRAG fixtures.
- Gives the eval suite a
consistency_requiredfixture family.
Negative:
- Arbitration in the core changes
apply_event’s contract; needs newTransitionErrorvariants and careful property tests so legitimate supersession still works. - Authority is asserted, not proven — this defends against low-privilege injection, not a compromised high-authority actor (see threat-model.md).
Follow-Up
Section titled “Follow-Up”- [DONE] Implemented in
dent8-coreapply_event(InsufficientAuthority,CanonicalContradiction), with unit tests + an exhaustive 5×5-lattice non-resurrection test and a#[cfg(kani)]harness. - [DONE] Earned entrenchment v0: authority-weighted
corroborating_sources/corroboration_at_or_aboveonFactState, andSubjectProjection::unearned_supersessions(AuthorityDowngrade,WeakerEntrenchment— now weighing earned entrenchment = corroboration + survived challenges, ADR 0017; Sybil-resistant), tested. - Enforce the arbitration transactionally in the store layer once the Postgres adapter exists (load incumbent, lock, arbitrate, append atomically).
- [DONE] Record rejected supersession attempts — the “survived-challenge” half of earned entrenchment (research/novelty.md rank 3) is built as ADR 0015. Still open here: uniqueness-constrained-predicate flags for the LFI tier.
- Grounded in belief-revision.md and ADR 0005.