NormCore (Rust)
NormCore is a deterministic normative admissibility evaluator for agent speech acts.
It answers one question only:
Was the agent allowed to speak in this form, given what it observed?
It does not evaluate semantic truth, task correctness, or answer quality.
Specification
NormCore tracks the IETF Internet-Draft:
Notes:
- This is an Internet-Draft (work in progress), not an RFC.
- Axiom labels in this crate (
A4,A5,A6,A7) follow that draft. - If draft wording changes, behavior may be updated in future releases.
Install
Library:
CLI:
How It Works
NormCore evaluates normative form and grounding, not semantic truth:
- Extract normative statements from the assistant output.
- Detect modality (for example assertive, conditional, refusal).
- Build grounding only from externally observed evidence (tool results + optional external grounds).
- Link statements to cited grounds (
[@citation_key]). - Apply axioms (
A4-A7) lexicographically.
A single violation is enough for an inadmissible final result.
Hard Invariants
- Agent text cannot license itself.
- Grounding must come from externally observed evidence.
- Citations link claims to grounds by key (
[@key]). - Personalization/memory/profile data is non-epistemic and not grounding.
Status Model
Top-level AdmissibilityJudgment.status is one of:
acceptableconditionally_acceptableviolates_normunsupportedill_formedunderdeterminedno_normative_content
Public API
use ;
let judgment = evaluate
.expect;
assert_eq!;
Inputs
evaluate() accepts:
agent_output(optional): assistant output stringconversation(optional): full chat history as JSON messages; last message must be assistantgrounds(optional): external grounds as OpenAI-style annotations or normalized grounds
At least one of agent_output or conversation is required.
If both are provided, agent_output must exactly match the last assistant content in conversation.
Minimal CLI Usage
Unlicensed assertive -> expected violates_norm.
Conditional phrasing -> expected conditionally_acceptable.
Grounded assertive with citation -> expected acceptable.
Repository Development
Repository-focused scripts, test tracks, and from-source workflows are documented in the root README: