Deterministic Engine + Evidence Chain

The model reasons. The rules decide.

LLMs deliver intelligence, but intelligence alone has no direction and no accountability. The ERDL deterministic core closes that gap: before any tool runs, the rule engine adjudicates it (allow / deny / correct / escalate / request-human); after every verdict, a tamper-evident Decision Object is sealed — JCS + SHA-256, independently recomputable and byte-verifiable.

Determinism, verified by three independent systems

rulsynor-core's determinism isn't a self-claim — it's pinned down layer by layer by three independent repos:

Language layer
@openoba/erdl
Declarative deterministic rule language — 34-node kernel / 30 operators / 13 decisions
Test layer
erdl-vectors
Cross-implementation byte-level verification: 318 frozen vectors, byte-verified by 2 independent runners (Go / Python)
Proof layer
erdl-formal
Z3 / SMT formal verification: 34-node + E1–E12 coverage — lifts "tested determinism" to "proven over all inputs"

In one line: the language defines rules, the vectors prove "implementations agree", the formal verifier proves "every input is safe" — determinism, from claim → measurement → proof.

Decision Object: the audit record of every decision

Tamper-proof evidence
with audit.hash removed, JCS + SHA-256 yields the self-reported hash; tampering with any field causes a mismatch
Three-layer evidence
hash proves integrity, signature proves identity, timestamp proves time
Flat-hash chain
records chained by previous_hash; history tampering, deletion, dangling pointers, clock regression, whole-chain rebuild, version downgrade, and mixed chains are all modeled as detectable scenarios

7-step method

intent → plan → evidence → reason → guard → execute → audit — a complete execution loop, traceable and rollback-able at every step.

1
intent
understand intent
2
plan
formulate a plan
3
evidence
assemble basis
4
reason
reason and decide
5
guard
rule gate
6
execute
controlled execution
7
audit
audit and anchor

Quick Start

bash
# Try the Guard with zero setup (no API key)
$ rulsynor demo --tool=exec --cmd="rm -rf /"   # → DENY

# Chat with the 7-step loop
$ rulsynor chat

# Author your own rules: drop *.erdl.yaml into rules/, loaded at startup
$ rulsynor rules list

# Read-only audit trail
$ rulsynor audit list

See rulsynor-core · npm @openoba/rulsynor-core