The Epistemic Tribunal refuses to treat the first plausible answer as sovereign. Instead, it stages a governed, frequently brutal contest between competing internal accounts of a task. It scores those accounts against structural constraints, forces them to justify themselves against prior failure patterns.
0
stars
58
commits
Python
primary language
Apr 23, 2026
updated
Read the final experimental audit: The Crucible of Reason: An Audit of the Epistemic Tribunal
It is a vanity, and a particularly modern one at that, to assume that simply exposing a Large Language Model to a problem of logic is sufficient to produce reasoning. This repository is the home of the Sovereign Epistemic Agent project, and its first concrete experimental subsystem: the Epistemic Tribunal.
The system refuses to treat the first plausible answer as sovereign. Instead, it stages a governed, frequently brutal contest between competing internal accounts of a task. It scores those accounts against structural constraints, forces them to justify themselves against prior failure patterns, and then decides whether any candidate deserves selection.
The central object here is not "the answer." It is the governed conflict between candidate hypotheses.
The Epistemic Tribunal is a metacognitive adjudication stack. It was built to test whether a reasoning system can distrust its own brittle internal consensus, adjudicate between competing stances, and treat failure as reusable knowledge rather than as a discarded by-product.
Given a structured reasoning task (such as the ARC-AGI benchmark or GSM8K), the tribunal:
weighted_sum or EQBSL fusion) to elect the winning trace, request a resample, or abstain entirely.The architecture is entirely domain-agnostic, though it was hardened in the crucible of ARC grid transformations.
Our recent 8-cycle EQBSL (Evidence Quantified Belief Subjective Logic) tuning campaign yielded a bracing conclusion: the tribunal's adjudication logic is highly mature, but it is entirely bottlenecked by the intellectual poverty of its external evidence sources.
Findings:
shape-clamp sequence, we successfully reduced LLM spatial hallucinations from an 80% failure rate to 0%. The LLMs now reliably arrive at the courtroom suitably attired.Roadmap to Genuine Epistemic Synthesis:
Implemented now
Near-term extensions
Long-range research direction
| Aspect | Greedy / single-pass | Epistemic Tribunal |
|---|---|---|
| Candidate generation | One answer | Multiple competing generator strategies |
| Invariant awareness | None | Extracted from training pairs; penalises violations |
| Self-critique | None | TraceCritic scores every candidate before selection |
| Uncertainty | Ignored | Entropy, margin, and coalition mass dictate decisions |
| Failure memory | None | Past failures are stored to penalise similar future traces |
| Abstention | Never | Tribunal abstains or requests resample when confidence is low |
| Auditability | Black-box | Full structured decision record in SQLite |
flowchart TD
T["Task JSON"] --> G["Generator bank<br/>competing generator strategies"]
T --> I["Invariant extractor"]
G --> C["Trace critic"]
I --> C
G --> U["Uncertainty analyzer"]
C --> A["Tribunal aggregator"]
U --> A
A --> D{"Decision"}
D -->|SELECT| L["Failure ledger"]
D -->|RESAMPLE| L
D -->|ABSTAIN| L
The system evaluates candidates against five distinct metrics: consistency_score, rule_coherence_score, morphology_score, failure_similarity_penalty, and invariant_compliance_score. It aggregates these alongside uncertainty signals (entropy, margin, coalition_mass) to produce a final verdict.
The current SQLite failure ledger is primarily diagnostic and post-hoc. It stores structured failures for analysis and later penalisation. That matters, but it is not yet a live writable epistemic memory.
A stronger Strange Loop memory will act less like an archive and more like an internal corrective organ: something the system consults while forming or revising candidate traces, not merely after a run has concluded. The current ledger is a bridge toward that architecture.
uv (recommended)git clone https://github.com/Steake/Sovereign-Epistemic-Agent.git
cd Sovereign-Epistemic-Agent
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
# Run a single task
tribunal run data/examples/colour_swap_001.json
# Run a benchmark suite over a directory
tribunal benchmark data/examples/ --ledger data/benchmark_ledger.db
# Inspect the forensic ledger for a specific task
tribunal ledger inspect --task-id colour_swap_001 --ledger data/benchmark_ledger.db
Runtime settings are governed by configs/default.yaml and can be overridden via TRIBUNAL_CONFIG_PATH.
The Epistemic Tribunal is built around a single, unforgiving principle: metacognitive adjudication over competing hypotheses is more robust than greedy answer selection.
Python
93.0%
Shell
5.4%
Jupyter Notebook
1.6%
The Epistemic Tribunal refuses to treat the first plausible answer as sovereign. Instead, it stages a governed, frequently brutal contest between competing internal accounts of a task. It scores those accounts against structural constraints, forces them to justify themselves against prior failure patterns.
0
stars
58
commits
Python
primary language
Apr 23, 2026
updated
Read the final experimental audit: The Crucible of Reason: An Audit of the Epistemic Tribunal
It is a vanity, and a particularly modern one at that, to assume that simply exposing a Large Language Model to a problem of logic is sufficient to produce reasoning. This repository is the home of the Sovereign Epistemic Agent project, and its first concrete experimental subsystem: the Epistemic Tribunal.
The system refuses to treat the first plausible answer as sovereign. Instead, it stages a governed, frequently brutal contest between competing internal accounts of a task. It scores those accounts against structural constraints, forces them to justify themselves against prior failure patterns, and then decides whether any candidate deserves selection.
The central object here is not "the answer." It is the governed conflict between candidate hypotheses.
The Epistemic Tribunal is a metacognitive adjudication stack. It was built to test whether a reasoning system can distrust its own brittle internal consensus, adjudicate between competing stances, and treat failure as reusable knowledge rather than as a discarded by-product.
Given a structured reasoning task (such as the ARC-AGI benchmark or GSM8K), the tribunal:
weighted_sum or EQBSL fusion) to elect the winning trace, request a resample, or abstain entirely.The architecture is entirely domain-agnostic, though it was hardened in the crucible of ARC grid transformations.
Our recent 8-cycle EQBSL (Evidence Quantified Belief Subjective Logic) tuning campaign yielded a bracing conclusion: the tribunal's adjudication logic is highly mature, but it is entirely bottlenecked by the intellectual poverty of its external evidence sources.
Findings:
shape-clamp sequence, we successfully reduced LLM spatial hallucinations from an 80% failure rate to 0%. The LLMs now reliably arrive at the courtroom suitably attired.Roadmap to Genuine Epistemic Synthesis:
Implemented now
Near-term extensions
Long-range research direction
| Aspect | Greedy / single-pass | Epistemic Tribunal |
|---|---|---|
| Candidate generation | One answer | Multiple competing generator strategies |
| Invariant awareness | None | Extracted from training pairs; penalises violations |
| Self-critique | None | TraceCritic scores every candidate before selection |
| Uncertainty | Ignored | Entropy, margin, and coalition mass dictate decisions |
| Failure memory | None | Past failures are stored to penalise similar future traces |
| Abstention | Never | Tribunal abstains or requests resample when confidence is low |
| Auditability | Black-box | Full structured decision record in SQLite |
flowchart TD
T["Task JSON"] --> G["Generator bank<br/>competing generator strategies"]
T --> I["Invariant extractor"]
G --> C["Trace critic"]
I --> C
G --> U["Uncertainty analyzer"]
C --> A["Tribunal aggregator"]
U --> A
A --> D{"Decision"}
D -->|SELECT| L["Failure ledger"]
D -->|RESAMPLE| L
D -->|ABSTAIN| L
The system evaluates candidates against five distinct metrics: consistency_score, rule_coherence_score, morphology_score, failure_similarity_penalty, and invariant_compliance_score. It aggregates these alongside uncertainty signals (entropy, margin, coalition_mass) to produce a final verdict.
The current SQLite failure ledger is primarily diagnostic and post-hoc. It stores structured failures for analysis and later penalisation. That matters, but it is not yet a live writable epistemic memory.
A stronger Strange Loop memory will act less like an archive and more like an internal corrective organ: something the system consults while forming or revising candidate traces, not merely after a run has concluded. The current ledger is a bridge toward that architecture.
uv (recommended)git clone https://github.com/Steake/Sovereign-Epistemic-Agent.git
cd Sovereign-Epistemic-Agent
uv venv
source .venv/bin/activate
uv pip install -e ".[dev]"
# Run a single task
tribunal run data/examples/colour_swap_001.json
# Run a benchmark suite over a directory
tribunal benchmark data/examples/ --ledger data/benchmark_ledger.db
# Inspect the forensic ledger for a specific task
tribunal ledger inspect --task-id colour_swap_001 --ledger data/benchmark_ledger.db
Runtime settings are governed by configs/default.yaml and can be overridden via TRIBUNAL_CONFIG_PATH.
The Epistemic Tribunal is built around a single, unforgiving principle: metacognitive adjudication over competing hypotheses is more robust than greedy answer selection.
Python
93.0%
Shell
5.4%
Jupyter Notebook
1.6%