Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Verdict

Verdict is a DMN 1.5 decision engine for Go. It loads a decision model, tells you what is wrong with it before you deploy it, evaluates it, and hands back a trace of exactly what it did and why.

It also does one thing DMN does not: a decision can be delegated to an agent — an LLM behind a typed, bounded, traced boundary — without the rest of the graph losing any of its determinism.

model.dmn ──▶ load ──▶ analyse ──▶ evaluate ──▶ outputs
                 │         │           │
                 ▼         ▼           ▼
            diagnostics  gaps &      trace
                        overlaps

What is here

If you want to…Read
Install it and run a modelInstallation and a First Model
Drive it from a shellThe Command Line
Write a decision table that holds upDecision Tables
Put a model inside a decision safelyAgent Decisions
Audit what an evaluation didTraces
Open a Verdict model in Camunda ModelerDMN XML and Interoperability
Author or generate models as JSONVerdict Decision JSON
Validate a model file in CI or an editorThe VDJ JSON Schema
Run it as a serviceDeployment
Let an agent drive itMCP Tools and Resources
Wire it into NexusNexus Integration
Look up an error codeDiagnostic Codes

Three commitments

DMN is the spec, not the inspiration. The graph model, the boxed expressions, the hit policies and FEEL come from DMN 1.5. Verdict does not invent a name for something DMN already names, and does not quietly improve a behaviour the spec fixes. Where it deviates, the deviation is documented.

The trace is output, not logging. Every evaluation produces a record of which nodes fired, which rules matched, and what an agent was asked. Its JSON shape is a stable contract that dashboards and auditors read — not a debug aid that might change shape next release.

Interoperability is verified, not asserted. Every shipped model is validated against the OMG DMN 1.3 XSD by make validate, and every VDJ document Verdict writes is validated against the published JSON Schema by the test suite. “It parses in our own reader” is not a claim about anyone else’s tool.

The machine-readable contract

The VDJ JSON Schema is published at its own $id:

https://frankbardon.github.io/verdict/vdj-schema.json

It is generated from the same Go types the reader decodes into and the same vocabulary registry the engine evaluates against, so it cannot drift from the engine that serves it. verdict schema prints the identical bytes offline.