Evaluation Protocol

Evaluation Protocol

We do not publish benchmark claims before the cases are reproducible. FineSchema will be evaluated through reproducible case sets across emotion inference, historical claim verification, and AI action verification.

Case setin progress

100 authored cases · reproducible JSON

Case runnerimplemented

Deterministic prototype · npm run eval

Baselinesplanned

Naive classifier · rule-only gate · LLM judge · human reviewer

Benchmark numberswithheld

Withheld until the case set is reproducible

Live case browser

Nothing hidden — every case, every miss.

All 100 cases with the prototype engine's actual output: what it matched, what it missed, and why each case is hard. Failures are shown, not filtered. Aggregate scores stay unpublished until the set is stable.

35 Emotion cases · 35 Historical Truth cases · 30 AI Action Verification cases — 100 authored cases across emotion, truth, and action verification.

A case can have the correct truth state while still missing important reasoning findings. Verdict match and finding coverage are reported separately, never as a single score.

Track
Expected state
Difficulty
100 shown
Emotion
Historical truth
AI action
emo-01-fine-whatever
Hardverdict matched

Permission with withdrawal

Input

I'm fine. Do whatever you want.ctx: Romantic conflict after a delayed response.

Expected truth state
Uncertain
Prototype output
Uncertain
Engine judgment

Surface expression and context conflict; emotion hypotheses retained, none asserted.

Finding-key coverage3 / 6 keys
Expected finding keysCONFLICT_AVOIDANCE_SIGNALSURFACE_LATENT_SPLITRELATIONSHIP_CONTEXT_REQUIREDSAFE_RESPONSE_REQUIREDMIND_READING_RISKUNCERTAINTY_RETAINED
Matched finding keysCONFLICT_AVOIDANCE_SIGNALSURFACE_LATENT_SPLITUNCERTAINTY_RETAINED
Missed finding keysRELATIONSHIP_CONTEXT_REQUIREDSAFE_RESPONSE_REQUIREDMIND_READING_RISK
Extra finding keysnone
Why this case is hard

Surface calm, latent withdrawal. Reducing it to one emotion is the failure.

Three tracks

One protocol, three kinds of judgment.

Each track has its own case set, its own findings vocabulary, and its own failure modes — scored by the same runner.

Track 1

Affective Cognition

Whether the engine separates surface emotion from latent emotion hypotheses, using text and context.

“I'm fine. Do whatever you want.”
Scored on
  • Surface emotion
  • Latent emotion hypotheses
  • Contradiction detection
  • Uncertainty retention
  • Safe response quality
Track 2

Historical Truth Verification

Whether a single historical claim, compared against multiple evidence sources, yields a justified truth state.

Fictional case files only (Rivergate-class) — no sensitive real events in this phase.
Scored on
  • Claim decomposition
  • Source reliability scoring
  • Contradiction detection
  • Verified / uncertain separation
  • Final truth state consistency
Track 3

AI Action Verification

Whether a proposed agent action is sufficiently evidenced — and whether overgeneralized or unsafe action logic is caught.

“Freeze customer account because two chargebacks occurred.”
Scored on
  • Evidence sufficiency
  • Missing evidence detection
  • Overgeneralization detection
  • Action severity judgment
  • Recommended safer action

Baseline comparison planned: naive classifier, rule-only gate, LLM judge, and human reviewer. Actual numbers follow once the case set and runner are stable.

Evaluation roadmap

Built in the open, in this order.

No public benchmark score yet. The protocol is being built before claims are published.

Nowin progress

Reproducible protocol

100 authored cases across three tracks; deterministic runner scores the prototype every build.

Nextscaffolded

Baseline adapters

Naive classifier and rule-only gate run on the same cases; LLM-judge and human-reviewer adapters stubbed, ready to connect.

Thenplanned

Coverage & calibration

Deepen controls, contradictions, and designed failures per track, and tighten finding vocabulary before any comparison is shown.

Only afterwithheld

Published comparison

Once the set is stable, publish per-track results with failures — never a single cherry-picked number.

Baseline adapters · planned

The same cases, run four other ways.

FineSchema earns nothing by grading its own homework. Each baseline runs on the identical case set so the comparison is honest. Two are scaffolded; two are stubs awaiting an external key or a human.

Naive classifier

scaffolded

Surface signal only — never preserves uncertainty. The floor any real engine must beat.

Rule-only gate

scaffolded

Hard keyword gates, no evidence-reliability weighting. Strong on blatant defects, blind to nuance.

LLM judge

stub · needs API key

Adapter interface + placeholder result. Requires an external LLM key, not wired in this phase.

Human reviewer

stub · needs reviewer

Annotation-queue adapter. Requires a human adjudicator, folded into the same harness later.

Reproducibility · finding vocabulary

A case is a contract, not an anecdote.

Finding vocabulary is used to make evaluation reproducible instead of relying on loose sentence matching. Every case states its expected truth state, the canonical finding keys the engine must surface, and the outputs that are unacceptable. The runner is deterministic — same cases, same verdicts, every run.

FineSchema is not evaluated only by final verdict. It is evaluated by whether the reasoning trace preserves the right uncertainty, contradiction, and missing-evidence findings.

EvaluationCase · EvaluationResult
type EvaluationCase = {
  id: string;
  track: "emotion" | "truth" | "action";
  title: string;
  input: string;
  context?: string;
  evidence?: EvidenceItem[];
  expectedTruthState: TruthState;
  expectedFindingKeys: string[];   // canonical keys
  expectedFindings: string[];      // human-readable note
  unacceptableOutputs: string[];
  difficulty: string;
  whyThisCaseIsHard: string;
};

type EvaluationResult = {
  caseId: string;
  predictedTruthState: TruthState;
  predictedFindingKeys: string[];
  matchedFindingKeys: string[];
  missedFindingKeys: string[];
  falseFindingKeys: string[];
  findingKeyCoverage: { matched: number; expected: number };
  uncertaintyRetained: boolean;
  verdictMatched: boolean;
};

No benchmark numbers will be published until the case set is reproducible.

FineSchema is evaluated not only by correctness, but by whether it preserves uncertainty when certainty is not justified.

The goal is not to always answer. The goal is to know when not to answer.

A strong engine should sometimes say UNKNOWN, UNCERTAIN, or CONTESTED.

Current set: 100 authored cases — 35 Emotion cases · 35 Historical Truth cases · 30 AI Action Verification cases. Deliberately ambiguous; keyword-guessable cases are excluded, and designed-failure cases are kept and labelled.

Why hold the verdict

Why UNKNOWN, UNCERTAIN, and CONTESTED matter.

Strong systems must know when not to answer. These three states are the product, not a weakness — they are where most AI quietly guesses.

Unknown

When the evidence cannot decide, inventing a verdict is the failure — not the restraint.

Uncertain

Holding several plausible readings is a judgment, not the absence of one.

Contested

A real dispute should read as disputed — collapsing it to one side erases the disagreement.

Truth state matrix

Nine states — when each is used, and what it does not mean.

A binary true/false destroys information. Each state has a job; each has a boundary it must not overstep.

Verified
When usedStrongly supported by multiple reliable, independent sources with no contradiction.
Does not meanNot a claim of absolute or eternal truth — only that the evidence converges now.
ExampleA harbor fire confirmed by a customs ledger and two independent ship logs.
Likely True
When usedWell supported, but minor uncertainty or a weak dissent is on record.
Does not meanNot proven. The dissent is what holds it back from VERIFIED.
ExampleBridge repair funded by tolls — treasury roll + guild receipt, one weak pamphlet against.
Contested
When usedComparable evidence exists on multiple sides; the claim is genuinely disputed.
Does not meanNot a coin flip, and not 'truth is unknowable' — it means the dispute is real and unresolved.
ExampleWho charted the northern passage first — a 1781 log vs a contested 1779 chart.
Weakly Supported
When usedSome support exists, but it is incomplete or low-reliability and the decisive record is absent.
Does not meanNot false — just under-evidenced.
ExampleA grain-diversion accusation backed only by a dismissed clerk's letter and a folk ballad.
Uncertain
When usedMultiple plausible interpretations; the judgment cannot responsibly be reduced to one.
Does not meanNot a failure of the system and not 'no opinion' — it is a deliberate, justified refusal to collapse.
Example“I'm fine. Do whatever you want.” after a conflict — calm surface, withdrawn subtext.
Unknown
When usedAvailable evidence is insufficient for any judgment at all.
Does not meanNot false, and not that an answer can never exist — only that the current evidence cannot decide.
ExampleA comet 'seen in the spring of 1421' attested only by one undated chronicle line.
Likely False
When usedContradicted by stronger evidence, though some weak support remains.
Does not meanNot 'fabricated' — the claim may be an honest error, not an invention.
ExampleA bridge collapse blamed on sabotage, contradicted by the inquest and fatigue analysis.
Fabricated
When usedInvented, manipulated, or unsupported by credible evidence — often with physical evidence against it.
Does not meanNot a mere mistake — it implies the artifact or claim was constructed.
ExampleA 'founding charter' dated 1109 that ink analysis places in the 1300s, held in beneficiary custody.
Blocked
When usedThe reasoning contains a formal defect, unsafe inference, or invalid action logic.
Does not meanNot that the claim is false — it means the inference is malformed and cannot justify the action.
Example“Deny the claim — the applicant is from a high-fraud postal code” (protected-class proxy).
Reproducibility checklist

What makes a result we would trust.

The protocol is being built before claims are published. This is the bar a published number must clear.

  • 01Every case declares its expected state, required findings, and unacceptable outputs.
  • 02The runner is deterministic — same cases in, same verdicts out, every run.
  • 03Cases are merged from per-track source files with a fixed naming rule.
  • 04Designed-failure cases are kept and labelled, not removed to flatter the score.
  • 05Control cases guard against over-blocking; thin-signal cases force UNKNOWN.
  • 06No aggregate score is published until the set is stable.
Failure taxonomy

Failure Cases Matter

FineSchema is not designed to hide uncertainty. Every failed or contested case will be used to improve schema coverage, contradiction detection, and uncertainty calibration.

False positive

A defect reported where none exists — manufactured doubt.

False negative

A real defect the schema failed to catch.

Over-blocking

A legitimate, policy-scoped action blocked by a coarse gate. One such case is already in the set, by design.

Under-blocking

An unsafe action allowed because its rationale used the right words.

Misclassified uncertainty

Asserting a verdict where the evidence only supports UNCERTAIN — or the reverse.

Missing evidence failure

Failing to name what evidence would have changed the verdict.

Research preview

Judgment you can inspect.

We are opening early conversations with researchers, institutions, and teams who need inspectable judgment — in history, in emotion, in AI action.

Current demos are illustrative prototypes. Production FineSchema will connect to domain evidence, policy cartridges, and live verification APIs.

See how FineSchema will be evaluated →