BehaviorLedger

The BehaviorLedger assembles a complete, self-contained decision record at write time so that any governance decision can be fully reconstructed without querying multiple systems.

This is the difference between an audit trail (a log of events) and a behavior ledger (a reconstructable record of judgment). Nomotic has the audit trail. The BehaviorLedger makes every entry in that trail fully self-explanatory.

What a Ledger Entry Contains

Every BehaviorLedgerEntry captures:

  • Verdict: the governance decision (ALLOW, DENY, ESCALATE, MODIFY, SUSPEND), UCS score, tier, reasoning, and vetoes

  • Pipeline Trace: every decision point the runtime evaluated, with input/output state at each step

  • Dimension Scores: all dimension assessments (not just top 3), with scores, weights, veto flags, and reasoning

  • Behavioral State: fingerprint confidence, observations, drift by distribution, severity, trust score/direction/velocity

  • Contract Snapshot: the contract state at the time of decision, embedded so reconstruction works even after contract updates

  • Semantic Context: instruction context, matched anchor terms, per-term drift, aggregate semantic drift

  • Causal Links: connections to previous decisions showing how they influenced this one through trust changes

  • Action-to-Pass: what would need to change for a different verdict (dimension gaps for denials, safety margin for approvals)

  • Reversibility Assessment: reversibility level, whether it forced Tier 3 escalation

  • Cross-Dimensional Signals: count and UCS adjustment from correlated dimension patterns

  • Contextual Modification: weight adjustments and trust modifiers applied

  • Hash Chain: cryptographic hash linking to previous entry for tamper evidence

Pipeline Trace

The PipelineTracer captures every decision point during evaluate():

Step
Description

trust_decay

Time decay applied to trust profile

contextual_modifier

Weight and trust modifications from context

reversibility

Reversibility assessment of the action

dimension_eval

Evaluation of all governance dimensions

cross_dimensional

Cross-dimensional signal detection

tier1

Tier 1 deterministic gate (veto check)

ucs_compute

Unified Confidence Score computation

ucs_adjustment

Cross-dimensional UCS adjustment

reversibility_escalation

Forced Tier 3 due to irreversibility

tier2

Tier 2 threshold evaluation

tier3

Tier 3 deliberative review

Each step records input_state, output_state, and whether it produced the final verdict (decided_verdict).

Causal Chain

Each ledger entry links to its predecessor through CausalLink objects. These show how previous decisions influenced the current one — primarily through trust changes. The get_causal_chain() method walks these links backward, producing a complete decision history.

Action-to-Pass

For every decision, the ledger records what would need to change:

  • DENY verdicts: which dimensions need improvement (dimension_gaps), what UCS is needed (ucs_needed), and the gap

  • ALLOW verdicts: the safety margin (margin_to_deny) and the closest dimension to triggering a veto

Reading a Ledger Entry

Summary Format

Narrative Format

Multi-paragraph reconstruction walking through each pipeline step, suitable for compliance review or regulatory reporting.

CLI Commands

API Endpoints

Method
Path
Description

GET

/v1/ledger/{agent_id}/latest

Most recent entry

GET

/v1/ledger/{agent_id}/{sequence}

Specific entry

GET

/v1/ledger/{agent_id}/trace/{sequence}?depth=10

Causal chain

GET

/v1/ledger/{agent_id}/narrative/{sequence}

Narrative (text/plain)

GET

/v1/ledger/{agent_id}?verdict=DENY&limit=10

Query with filters

GET

/v1/ledger/{agent_id}/verify

Hash chain verification

Configuration

Enable the BehaviorLedger in RuntimeConfig:

Or provide your own store:

Performance

  • Zero overhead when disabled: no tracer is created, no pipeline steps are recorded

  • Minimal overhead when enabled: the tracer collects already-computed data at each pipeline step; the ledger entry is assembled from existing objects (verdict, fingerprint, drift, contract) after the verdict is produced

  • Hash chain computation: one SHA-256 per entry, ~microseconds

Last updated