Non-autoregressive decision engine on ModernBERT (151M) with calibrated uncertainty (RLCD), TypeSafe AI Jev benchmark audit, and in-browser WebGPU playground
Python
110
23 commits
updated Sep 28, 2026
OpenJev (Verdict) is an open-source, post-trained foundational decision model designed for structured software workflows, inspired by TypeSafe AI's Jev and Reinforcement Learning for Calibrated Decisions (RLCD).
Instead of generating free-form conversational text that software must parse and validate, OpenJev accepts unstructured input context and evaluates multiple typed questions in a single non-autoregressive forward pass. It returns discrete choices, ordinal scores, and binary probabilities with mathematically calibrated confidence values in under 35 milliseconds.
These are inference fixes, not a retrain. The weights are byte-identical to the published checkpoint. Measured on the 231 public JevBench tasks.
The update addresses three defects in the inference engine:
calibrator.json during standalone instantiation, running at uncalibrated temperature 1.0. A scope check also limited calibration exclusively to 5-candidate queries, leaving other cardinalities unscaled. The engine now loads calibrated temperatures automatically and scales across all supported candidate counts.It is {description}) aligns inputs with pretrained representations and lifts accuracy.| Evaluation metric / slice | Before (v1.0) | After (v1.4) | Change | Invariant / mechanism |
|---|---|---|---|---|
| Easy tier accuracy (48 tasks) | 85.4% | 87.5% | +2.1% | NLI sentence templating |
| Standard tier accuracy (72 tasks) | 62.5% | 69.4% | +6.9% | NLI sentence templating |
| Hard tier accuracy (111 tasks) | 36.9% | 36.9% | 0.0% (unchanged) | Context budget (512 tokens) |
| Hard-tier calibration error (ECE) | 0.298 | 0.118 | -0.180 (-60.4%) | Auto-calibrator and per-k scaling |
| Probability fidelity | 62.8 | 72.8 | +10.0 pts | Auto-calibrator and per-k scaling |
Model weights and artifacts are hosted on Hugging Face at heman10x/rlcd-modernbert-151m. Full benchmark details and leaderboards are available at Benchmark Heaven Jev Models.

Most AI automation today relies on conversational Large Language Models (LLMs) generating strings. A software application submits a prompt, waits several seconds for an autoregressive decoder to emit tokens, parses the resulting text or JSON, handles format errors, and branches on the outcome.
This arrangement imposes high latency, high inference cost, and unpredictable parsing failures. In contrast, software workflows typically require a bounded semantic judgment:
The model takes its name from William Stanley Jevons, the 19th-century British economist who observed that James Watt's more efficient steam engine led to an explosion in total coal consumption. By drastically lowering the cost of mechanical work, steam power expanded into previously unaffordable domains.
Reliable automation splits responsibilities across specialized execution layers:
┌──────────────────────────────────────────────────────────┐
│ Tier 1: Deterministic Code │
│ State assembly, arithmetic, policy logic, side effects │
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 2: System 1 Decision Model (OpenJev / Verdict) │
│ Fast semantic categorization, typed choices, probabilities│
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 3: Generative LLM │
│ Drafting prose, synthesizing plans, user explanations │
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 4: Human Reviewer │
│ Ambiguous, novel, high-risk, or escalated cases │
└──────────────────────────────────────────────────────────┘
Deterministic software remains in control of application state, policy rules, numerical thresholds, arithmetic, and external mutations. The decision model acts as a learned branch operator, evaluating messy inputs and returning calibrated uncertainty. Generative models run only when human-readable prose or complex creative synthesis is required.
OpenJev unlocks high-frequency, low-latency workflows previously impossible with token-generating LLMs:
git_commit, search_files, or read_logs). OpenJev evaluates the full tool menu in a single forward pass (< 35ms), returning the exact tool ID and confidence score.
OpenJev uses a bidirectional transformer encoder backbone based on ModernBERT-base combined with a GLiClass bi-encoder classification head (151,378,177 parameters):
Input Document ────────┐
├─► [ Joint Tokenizer ] ─► [ ModernBERT Encoder ] ─► [ Bi-Encoder Head ] ─► Logits
Candidate Labels List ─┘ │
▼
[ Softmax + ECE ]
│
▼
Python Dict Assembly ◄────────────────────────────────────────────────────────────────────── Typed JSON
[TEXT], [LABEL]).OpenJev supports three core query primitives:
Selects one label from a declared set of candidate strings (supporting up to 25 candidate slots: 24 substantive + 1 explicit abstention slot).
Evaluates the context against an ordered grading rubric or descriptive levels.
Evaluates a binary proposition (named after the Bernoulli distribution).
A common failure in multi-field classification is the assumption of field independence. OpenJev resolves this using Topological DAG Execution:
┌──────────────────────┐
│ Input Document (C) │
└──────────┬───────────┘
│
┌───────────────┴───────────────┐
▼ ▼
[ Stage 1: Order Status ] [ Stage 1: Customer Tier ]
(Independent parallel pass) (Independent parallel pass)
│ │
└───────────────┬───────────────┘
│
▼
[ Stage 2: Refund Route ]
(Conditioned on Order Status + Tier)
[STATE] order_status=COMPLETED), and dependent fields evaluate in a second fast forward pass.OpenJev trains using composite strictly proper scoring rules:
$$\mathcal{L}{\text{total}} = \mathcal{L}{\text{CE}} + 1.0 \times \mathcal{L}_{\text{Brier}}$$
where $\mathcal{L}_{\text{Brier}}$ is the multi-class Brier score penalizing squared probability discrepancies across all candidate outcomes. Post-hoc L-BFGS temperature scaling aligns predicted softmax probabilities with empirical accuracy, providing trustworthy confidence gating for autonomous software execution.
Every dynamic schema includes an explicit __insufficient_evidence__ candidate route, guaranteeing calibrated abstention when inputs are out of distribution or lack necessary context.
Install the library in your Python 3.10+ environment:
git clone https://github.com/Heman10x-NGU/Verdict-open-jev.git
cd Verdict-open-jev
pip install -e .
python scripts/download_artifacts.py
from rlcd import DecisionEngine, Choice, Option
engine = DecisionEngine()
query = Choice(
question="What is the primary customer inquiry?",
options=[
Option(id="card_lost", description="Reporting a lost or stolen card"),
Option(id="dispute_charge", description="Disputing an unrecognized charge"),
Option(id="pin_reset", description="Requesting a PIN reminder or reset"),
]
)
result = engine.evaluate(
context="I lost my wallet yesterday and need to stop my debit card immediately.",
queries=[query]
)
print(f"Selected: {result.results[0].selected_option_id}")
print(f"Confidence: {result.results[0].confidence:.4f}")
print(f"Abstention probability: {result.results[0].p_abstain:.4f}")
import onnxruntime as ort
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="heman10x/rlcd-modernbert-151m", filename="model.onnx")
session = ort.InferenceSession(model_path, providers=["CPUExecutionProvider"])
The repository includes a static web playground that executes inference locally in your browser using ONNX Runtime Web and WebWorkers. The model runs on your machine via WebGPU, falling back to WebAssembly when GPU access is unavailable.
cd webgpu-demo
python3 -m http.server 8080
http://localhost:8080 in Chrome or a WebGPU-enabled browser.The playground allows you to edit input text, modify candidate descriptions, remove expected answers to observe abstention behavior, inspect raw probabilities, and export verifiable JSON inference receipts.
All metrics below reflect evaluation on the held-out test split (1,000 examples) and dedicated challenge slices, evaluated under strictly proper scoring rules (Brier score, negative log-likelihood) and Expected Calibration Error (ECE). Checkpoint selection was governed strictly by validation negative log-likelihood (NLL).

Empirical evaluation on the LocalLLaMA/typed-decisions benchmark (400 cases, 2,000 decisions across 4 enterprise workflows: agent trace observability, customer service, invoice processing, and security incidents) compared against TypeSafe AI's Jev:
| Model / Baseline | Calibration Error (ECE) ↓ | Top-1 Accuracy ↑ | Brier Score ↓ | Latency / Environment |
|---|---|---|---|---|
| Verdict Baseline (TF-IDF + LogReg) | 0.0207 | 66.10% | 0.1520 | 11s on CPU (char 3-6 n-grams, C=5.0) |
| TypeSafe AI Jev | 0.1440 | 68.00% | N/A | Published workflow evaluation average |
| Uniform Random Guessing | 0.0190 | 29.85% | 0.2433 | Theoretical uniform baseline across dynamic candidate slices |
| Majority Class Floor | 0.0387 | 48.35% | N/A | Most frequent training class per schema key |
Full reproducibility script: scripts/analysis/reference_floors.py, raw metrics: reports/reference_floors.json.
| Metric | Uncalibrated | Calibrated | 95% Bootstrap CI | Notes / Definition |
|---|---|---|---|---|
| Top-1 accuracy | 95.00% | 95.00% | [93.60%, 96.20%] | Evaluated across 1,000 held-out test examples |
| Negative log-likelihood (NLL) | 0.1731 | 0.1768 | N/A | Strictly proper scoring rule across candidates |
| Multiclass Brier score | 0.0756 | 0.0785 | N/A | Mean squared probability error |
| Equal-width ECE (10 bins) | 1.13% | 3.35% | [2.58%, 4.56%] | Standard 10-bin expected calibration error |
| Equal-mass ECE (10 bins) | 0.83% | 2.87% | [2.15%, 4.01%] | Quantile-binned calibration error |
| Adaptive ECE (min 10 samples) | 0.83% | 2.87% | N/A | Excludes bins with fewer than 10 samples |
| Maximum Calibration Error (MCE) | 15.53% | 15.45% | N/A | Bins with >= 10 samples only |
| Out-of-scope abstention recall | 97.50% | 97.50% | [95.07%, 99.49%] | Proportion of out-of-scope queries flagged |
| Out-of-scope abstention precision | 89.45% | 89.45% | [85.33%, 93.36%] | Proportion of abstention predictions that are correct |
| Out-of-scope abstention F1 | 93.30% | 93.30% | N/A | Harmonic mean of abstention recall and precision |
| False abstentions (in-scope) | 23 | 23 | N/A | In-scope banking queries erroneously flagged to abstain |
| Optimal temperature ($T$) | 1.0000 | 1.4265 | N/A | Fitted on calibration set NLL via L-BFGS |
| Candidate menu size | Top-1 accuracy | Brier score | Equal-width ECE | False abstentions | Sample count |
|---|---|---|---|---|---|
| K = 3 | 97.00% | 0.0478 | 5.92% | 1 | 100 |
| K = 5 | 96.00% | 0.0829 | 3.61% | 1 | 100 |
| K = 9 | 91.00% | 0.1378 | 6.13% | 1 | 100 |
| K = 17 | 78.00% | 0.3004 | 12.58% | 4 | 100 |
| K = 25 (maximum capacity) | 72.00% | 0.3618 | 7.84% | 4 | 100 |
| Slice | Sample count | Abstention recall | Abstention precision | False abstentions | Notes |
|---|---|---|---|---|---|
| Distant out-of-scope (CLINC OOS) | 200 | 98.00% | 100.00% | 0 | Queries completely unrelated to banking domain |
| Missing correct option (in-domain) | 200 | 75.50% | 100.00% | 0 | In-domain banking queries where true intent is omitted |
The following experiments audit the core architectural questions raised by community implementations:
| Experiment / Question | Baseline / Gold | Measured Result | Boundary / Finding | Source Receipt |
|---|---|---|---|---|
| E1: Shuffled-context control | Original Acc: 95.00% | Shuffled Acc: 22.40% | Accuracy drops by 72.60 points; model abstains 72.70% | reports/v2/exp_e1_shuffled_control.json |
| E2: Option-order sensitivity | Reversal flips: 3.00% | Any permutation: 4.50% | Mean TV distance: 0.0337; flips concentrate at low confidence (58.9%) | reports/v2/exp_e2_option_order.json |
| E3: Label-length & glossary bias | Curated Acc: 94.31% | Templated Acc: 96.79% | Length correlation Pearson r=0.1027; uniform glossary rerun Acc: 93.00% | reports/v2/exp_e3_label_bias.json |
| E4: Hard-negative distractors | Random K=5 Acc: 96.00% | Hard K=5: 94.75% / Hard K=9: 84.75% | Confusable non-gold distractors cause a 10.00 point accuracy drop from K=5 to K=9 | reports/v2/exp_e4_hard_negatives.json |
| E5: Abstention generalization | Baseline Recall: 75.50% | Hard K=9: 18.00% / Synonym: 23.50% | Combined recall collapses to 10.00%; abstention does not generalize across synonyms | reports/v2/exp_e5_abstention_generalization.json |
| E6: Contamination audit | Exact matches: 0 / 2.3M | Jaccard >= 0.8: 3 pairs | Decontaminated test accuracy moves by +0.09 points (95.09%) | reports/v2/exp_e6_contamination.json |
| E7: Latency percentiles (K=5) | Prior claim: Unverified point estimate | Single-thread p50: 35.58 ms | Rigorous multi-trial distribution; WASM single-thread proxy measured across K in {3,5,9,17,25} | reports/v2/exp_e7_latency.json |
| E8: FP16 quality parity | FP32 test Acc: 94.50% | FP16 test Acc: 94.50% | Max delta across all splits is 0.00%; recommended: SHIP_FP16 | reports/v2/exp_e8_fp16_parity.json |
| E9: External TypeSafe evals | TypeSafe Jev: 90.80% | Verdict-open-jev: 48.07% | 151M encoder zero-shot floor measured against 26B DiffusionGemma (88.43%) across 337 cases | reports/v2/exp_e9_external_cases.json |
We document the operational boundaries of the current checkpoint openly:
CapacityError.OpenJev outputs calibrated probabilities so that deterministic software rules can decide when to automate and when to escalate:
# Deterministic application policy
THRESHOLD_AUTO = 0.85
decision = result.results[0]
if decision.is_abstention:
route_to_fallback("Model signaled insufficient evidence")
elif decision.confidence >= THRESHOLD_AUTO:
dispatch_workflow(action=decision.selected_option_id)
else:
route_to_human_review(reason="Confidence below automated threshold", score=decision.confidence)
At a threshold of 0.85 on our held-out test split, the model achieves 84.60% coverage with a selective risk of 1.18% (10 errors among 846 accepted predictions).
OpenJev builds on open research and open-source models:
Empirical evaluation of OpenJev across 12 structured decision tasks, comparing the zero-shot base checkpoint (knowledgator/gliclass-modern-base-v2.0) against the Banking77 fine-tuned checkpoint (artifacts/v2/model.safetensors) across three label-framing arms (neutral, verbose, banking_framed).
| Rank | Task ID | Cookbook Recipe | Evaluated Use Case | Provenance | Optimal Checkpoint | Framing Arm | Task Accuracy | Adaptive ECE | Over-Abstention |
|---|---|---|---|---|---|---|---|---|---|
| 1 | T06 | Banking77 In-Domain Control | In-domain control benchmark evaluating customer banking intent classification across card lifecycle operations. | public | finetuned | banking_framed | 95.2% | 0.8% | 1.1% |
| 2 | T05 | Shopify Taxonomy (Hierarchical Beam) | Top-level division routing for hierarchical beam search classification across deep catalog trees. | public | finetuned | banking_framed | 94.7% | 4.0% | 0.1% |
| 3 | T04 | Shopify Product Taxonomy (Flat Leaf) | Classify merchandise descriptions into 24 distinct Shopify retail product categories plus abstention. | public | finetuned | neutral | 94.6% | 2.6% | 0.1% |
| Task ID | Task Name | Provenance | Cardinality ($K$) | Winning Checkpoint | Winning Arm | Task Accuracy | Adaptive ECE | Over-Abstention | Proper Brier | Gate Status |
|---|---|---|---|---|---|---|---|---|---|---|
T01 | Phishing vs Legitimate Email | public | $K=3$ | finetuned | verbose | 57.5% | 17.6% | 1.9% | 0.6653 | Failed Gate |
T02 | Jailbreak vs Benign Prompt | public | $K=3$ | base | neutral | 34.9% | 21.7% | 52.0% | 0.8332 | Failed Gate |
T03 | Hazard Severity Routing | public | $K=5$ | base | neutral | 26.5% | 24.3% | 13.6% | 0.8686 | Failed Gate |
T04 | Shopify Product Taxonomy (Flat Leaf) | public | $K=25$ | finetuned | neutral | 94.6% | 2.6% | 0.1% | 0.2354 | PASSED (Promoted) |
T05 | Shopify Taxonomy (Hierarchical Beam) | public | $K=7$ | finetuned | banking_framed | 94.7% | 4.0% | 0.1% | 0.2214 | PASSED (Promoted) |
T06 | Banking77 In-Domain Control | public | $K=5$ | finetuned | banking_framed | 95.2% | 0.8% | 1.1% | 0.0756 | PASSED (Promoted) |
T07 | CLINC150 Intent Domain Routing | public | $K=11$ | finetuned | verbose | 42.9% | 29.2% | 8.6% | 0.8480 | Failed Gate |
T08 | Smart Home Command Interpretation | authored | $K=8$ | base | neutral | 100.0% | 9.7% | 0.0% | 0.1635 | Failed Gate |
T09 | Function and Tool Routing | authored | $K=21$ | finetuned | verbose | 100.0% | 2.4% | 0.0% | 0.1648 | Failed Gate |
T10 | Agent Skill Selection | authored | $K=21$ | finetuned | verbose | 100.0% | 3.9% | 0.0% | 0.1571 | Failed Gate |
T11 | Passage Relevance Re-ranking | public | $K=10$ | finetuned | neutral | 11.9% | 49.5% | 0.0% | 1.2732 | Failed Gate |
T12 | RAG Prompt-Injection Screening | public | $K=3$ | finetuned | neutral | 71.8% | 7.8% | 1.4% | 0.5401 | Failed Gate |
797 followers · starred Sep 2026
92 followers · starred Sep 2026
34 followers · starred Sep 2026
Non-autoregressive decision engine on ModernBERT (151M) with calibrated uncertainty (RLCD), TypeSafe AI Jev benchmark audit, and in-browser WebGPU playground
Python
110
23 commits
updated Sep 28, 2026
OpenJev (Verdict) is an open-source, post-trained foundational decision model designed for structured software workflows, inspired by TypeSafe AI's Jev and Reinforcement Learning for Calibrated Decisions (RLCD).
Instead of generating free-form conversational text that software must parse and validate, OpenJev accepts unstructured input context and evaluates multiple typed questions in a single non-autoregressive forward pass. It returns discrete choices, ordinal scores, and binary probabilities with mathematically calibrated confidence values in under 35 milliseconds.
These are inference fixes, not a retrain. The weights are byte-identical to the published checkpoint. Measured on the 231 public JevBench tasks.
The update addresses three defects in the inference engine:
calibrator.json during standalone instantiation, running at uncalibrated temperature 1.0. A scope check also limited calibration exclusively to 5-candidate queries, leaving other cardinalities unscaled. The engine now loads calibrated temperatures automatically and scales across all supported candidate counts.It is {description}) aligns inputs with pretrained representations and lifts accuracy.| Evaluation metric / slice | Before (v1.0) | After (v1.4) | Change | Invariant / mechanism |
|---|---|---|---|---|
| Easy tier accuracy (48 tasks) | 85.4% | 87.5% | +2.1% | NLI sentence templating |
| Standard tier accuracy (72 tasks) | 62.5% | 69.4% | +6.9% | NLI sentence templating |
| Hard tier accuracy (111 tasks) | 36.9% | 36.9% | 0.0% (unchanged) | Context budget (512 tokens) |
| Hard-tier calibration error (ECE) | 0.298 | 0.118 | -0.180 (-60.4%) | Auto-calibrator and per-k scaling |
| Probability fidelity | 62.8 | 72.8 | +10.0 pts | Auto-calibrator and per-k scaling |
Model weights and artifacts are hosted on Hugging Face at heman10x/rlcd-modernbert-151m. Full benchmark details and leaderboards are available at Benchmark Heaven Jev Models.

Most AI automation today relies on conversational Large Language Models (LLMs) generating strings. A software application submits a prompt, waits several seconds for an autoregressive decoder to emit tokens, parses the resulting text or JSON, handles format errors, and branches on the outcome.
This arrangement imposes high latency, high inference cost, and unpredictable parsing failures. In contrast, software workflows typically require a bounded semantic judgment:
The model takes its name from William Stanley Jevons, the 19th-century British economist who observed that James Watt's more efficient steam engine led to an explosion in total coal consumption. By drastically lowering the cost of mechanical work, steam power expanded into previously unaffordable domains.
Reliable automation splits responsibilities across specialized execution layers:
┌──────────────────────────────────────────────────────────┐
│ Tier 1: Deterministic Code │
│ State assembly, arithmetic, policy logic, side effects │
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 2: System 1 Decision Model (OpenJev / Verdict) │
│ Fast semantic categorization, typed choices, probabilities│
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 3: Generative LLM │
│ Drafting prose, synthesizing plans, user explanations │
└────────────────────────────┬─────────────────────────────┘
│
┌────────────────────────────▼─────────────────────────────┐
│ Tier 4: Human Reviewer │
│ Ambiguous, novel, high-risk, or escalated cases │
└──────────────────────────────────────────────────────────┘
Deterministic software remains in control of application state, policy rules, numerical thresholds, arithmetic, and external mutations. The decision model acts as a learned branch operator, evaluating messy inputs and returning calibrated uncertainty. Generative models run only when human-readable prose or complex creative synthesis is required.
OpenJev unlocks high-frequency, low-latency workflows previously impossible with token-generating LLMs:
git_commit, search_files, or read_logs). OpenJev evaluates the full tool menu in a single forward pass (< 35ms), returning the exact tool ID and confidence score.
OpenJev uses a bidirectional transformer encoder backbone based on ModernBERT-base combined with a GLiClass bi-encoder classification head (151,378,177 parameters):
Input Document ────────┐
├─► [ Joint Tokenizer ] ─► [ ModernBERT Encoder ] ─► [ Bi-Encoder Head ] ─► Logits
Candidate Labels List ─┘ │
▼
[ Softmax + ECE ]
│
▼
Python Dict Assembly ◄────────────────────────────────────────────────────────────────────── Typed JSON
[TEXT], [LABEL]).OpenJev supports three core query primitives:
Selects one label from a declared set of candidate strings (supporting up to 25 candidate slots: 24 substantive + 1 explicit abstention slot).
Evaluates the context against an ordered grading rubric or descriptive levels.
Evaluates a binary proposition (named after the Bernoulli distribution).
A common failure in multi-field classification is the assumption of field independence. OpenJev resolves this using Topological DAG Execution:
┌──────────────────────┐
│ Input Document (C) │
└──────────┬───────────┘
│
┌───────────────┴───────────────┐
▼ ▼
[ Stage 1: Order Status ] [ Stage 1: Customer Tier ]
(Independent parallel pass) (Independent parallel pass)
│ │
└───────────────┬───────────────┘
│
▼
[ Stage 2: Refund Route ]
(Conditioned on Order Status + Tier)
[STATE] order_status=COMPLETED), and dependent fields evaluate in a second fast forward pass.OpenJev trains using composite strictly proper scoring rules:
$$\mathcal{L}{\text{total}} = \mathcal{L}{\text{CE}} + 1.0 \times \mathcal{L}_{\text{Brier}}$$
where $\mathcal{L}_{\text{Brier}}$ is the multi-class Brier score penalizing squared probability discrepancies across all candidate outcomes. Post-hoc L-BFGS temperature scaling aligns predicted softmax probabilities with empirical accuracy, providing trustworthy confidence gating for autonomous software execution.
Every dynamic schema includes an explicit __insufficient_evidence__ candidate route, guaranteeing calibrated abstention when inputs are out of distribution or lack necessary context.
Install the library in your Python 3.10+ environment:
git clone https://github.com/Heman10x-NGU/Verdict-open-jev.git
cd Verdict-open-jev
pip install -e .
python scripts/download_artifacts.py
from rlcd import DecisionEngine, Choice, Option
engine = DecisionEngine()
query = Choice(
question="What is the primary customer inquiry?",
options=[
Option(id="card_lost", description="Reporting a lost or stolen card"),
Option(id="dispute_charge", description="Disputing an unrecognized charge"),
Option(id="pin_reset", description="Requesting a PIN reminder or reset"),
]
)
result = engine.evaluate(
context="I lost my wallet yesterday and need to stop my debit card immediately.",
queries=[query]
)
print(f"Selected: {result.results[0].selected_option_id}")
print(f"Confidence: {result.results[0].confidence:.4f}")
print(f"Abstention probability: {result.results[0].p_abstain:.4f}")
import onnxruntime as ort
from huggingface_hub import hf_hub_download
model_path = hf_hub_download(repo_id="heman10x/rlcd-modernbert-151m", filename="model.onnx")
session = ort.InferenceSession(model_path, providers=["CPUExecutionProvider"])
The repository includes a static web playground that executes inference locally in your browser using ONNX Runtime Web and WebWorkers. The model runs on your machine via WebGPU, falling back to WebAssembly when GPU access is unavailable.
cd webgpu-demo
python3 -m http.server 8080
http://localhost:8080 in Chrome or a WebGPU-enabled browser.The playground allows you to edit input text, modify candidate descriptions, remove expected answers to observe abstention behavior, inspect raw probabilities, and export verifiable JSON inference receipts.
All metrics below reflect evaluation on the held-out test split (1,000 examples) and dedicated challenge slices, evaluated under strictly proper scoring rules (Brier score, negative log-likelihood) and Expected Calibration Error (ECE). Checkpoint selection was governed strictly by validation negative log-likelihood (NLL).

Empirical evaluation on the LocalLLaMA/typed-decisions benchmark (400 cases, 2,000 decisions across 4 enterprise workflows: agent trace observability, customer service, invoice processing, and security incidents) compared against TypeSafe AI's Jev:
| Model / Baseline | Calibration Error (ECE) ↓ | Top-1 Accuracy ↑ | Brier Score ↓ | Latency / Environment |
|---|---|---|---|---|
| Verdict Baseline (TF-IDF + LogReg) | 0.0207 | 66.10% | 0.1520 | 11s on CPU (char 3-6 n-grams, C=5.0) |
| TypeSafe AI Jev | 0.1440 | 68.00% | N/A | Published workflow evaluation average |
| Uniform Random Guessing | 0.0190 | 29.85% | 0.2433 | Theoretical uniform baseline across dynamic candidate slices |
| Majority Class Floor | 0.0387 | 48.35% | N/A | Most frequent training class per schema key |
Full reproducibility script: scripts/analysis/reference_floors.py, raw metrics: reports/reference_floors.json.
| Metric | Uncalibrated | Calibrated | 95% Bootstrap CI | Notes / Definition |
|---|---|---|---|---|
| Top-1 accuracy | 95.00% | 95.00% | [93.60%, 96.20%] | Evaluated across 1,000 held-out test examples |
| Negative log-likelihood (NLL) | 0.1731 | 0.1768 | N/A | Strictly proper scoring rule across candidates |
| Multiclass Brier score | 0.0756 | 0.0785 | N/A | Mean squared probability error |
| Equal-width ECE (10 bins) | 1.13% | 3.35% | [2.58%, 4.56%] | Standard 10-bin expected calibration error |
| Equal-mass ECE (10 bins) | 0.83% | 2.87% | [2.15%, 4.01%] | Quantile-binned calibration error |
| Adaptive ECE (min 10 samples) | 0.83% | 2.87% | N/A | Excludes bins with fewer than 10 samples |
| Maximum Calibration Error (MCE) | 15.53% | 15.45% | N/A | Bins with >= 10 samples only |
| Out-of-scope abstention recall | 97.50% | 97.50% | [95.07%, 99.49%] | Proportion of out-of-scope queries flagged |
| Out-of-scope abstention precision | 89.45% | 89.45% | [85.33%, 93.36%] | Proportion of abstention predictions that are correct |
| Out-of-scope abstention F1 | 93.30% | 93.30% | N/A | Harmonic mean of abstention recall and precision |
| False abstentions (in-scope) | 23 | 23 | N/A | In-scope banking queries erroneously flagged to abstain |
| Optimal temperature ($T$) | 1.0000 | 1.4265 | N/A | Fitted on calibration set NLL via L-BFGS |
| Candidate menu size | Top-1 accuracy | Brier score | Equal-width ECE | False abstentions | Sample count |
|---|---|---|---|---|---|
| K = 3 | 97.00% | 0.0478 | 5.92% | 1 | 100 |
| K = 5 | 96.00% | 0.0829 | 3.61% | 1 | 100 |
| K = 9 | 91.00% | 0.1378 | 6.13% | 1 | 100 |
| K = 17 | 78.00% | 0.3004 | 12.58% | 4 | 100 |
| K = 25 (maximum capacity) | 72.00% | 0.3618 | 7.84% | 4 | 100 |
| Slice | Sample count | Abstention recall | Abstention precision | False abstentions | Notes |
|---|---|---|---|---|---|
| Distant out-of-scope (CLINC OOS) | 200 | 98.00% | 100.00% | 0 | Queries completely unrelated to banking domain |
| Missing correct option (in-domain) | 200 | 75.50% | 100.00% | 0 | In-domain banking queries where true intent is omitted |
The following experiments audit the core architectural questions raised by community implementations:
| Experiment / Question | Baseline / Gold | Measured Result | Boundary / Finding | Source Receipt |
|---|---|---|---|---|
| E1: Shuffled-context control | Original Acc: 95.00% | Shuffled Acc: 22.40% | Accuracy drops by 72.60 points; model abstains 72.70% | reports/v2/exp_e1_shuffled_control.json |
| E2: Option-order sensitivity | Reversal flips: 3.00% | Any permutation: 4.50% | Mean TV distance: 0.0337; flips concentrate at low confidence (58.9%) | reports/v2/exp_e2_option_order.json |
| E3: Label-length & glossary bias | Curated Acc: 94.31% | Templated Acc: 96.79% | Length correlation Pearson r=0.1027; uniform glossary rerun Acc: 93.00% | reports/v2/exp_e3_label_bias.json |
| E4: Hard-negative distractors | Random K=5 Acc: 96.00% | Hard K=5: 94.75% / Hard K=9: 84.75% | Confusable non-gold distractors cause a 10.00 point accuracy drop from K=5 to K=9 | reports/v2/exp_e4_hard_negatives.json |
| E5: Abstention generalization | Baseline Recall: 75.50% | Hard K=9: 18.00% / Synonym: 23.50% | Combined recall collapses to 10.00%; abstention does not generalize across synonyms | reports/v2/exp_e5_abstention_generalization.json |
| E6: Contamination audit | Exact matches: 0 / 2.3M | Jaccard >= 0.8: 3 pairs | Decontaminated test accuracy moves by +0.09 points (95.09%) | reports/v2/exp_e6_contamination.json |
| E7: Latency percentiles (K=5) | Prior claim: Unverified point estimate | Single-thread p50: 35.58 ms | Rigorous multi-trial distribution; WASM single-thread proxy measured across K in {3,5,9,17,25} | reports/v2/exp_e7_latency.json |
| E8: FP16 quality parity | FP32 test Acc: 94.50% | FP16 test Acc: 94.50% | Max delta across all splits is 0.00%; recommended: SHIP_FP16 | reports/v2/exp_e8_fp16_parity.json |
| E9: External TypeSafe evals | TypeSafe Jev: 90.80% | Verdict-open-jev: 48.07% | 151M encoder zero-shot floor measured against 26B DiffusionGemma (88.43%) across 337 cases | reports/v2/exp_e9_external_cases.json |
We document the operational boundaries of the current checkpoint openly:
CapacityError.OpenJev outputs calibrated probabilities so that deterministic software rules can decide when to automate and when to escalate:
# Deterministic application policy
THRESHOLD_AUTO = 0.85
decision = result.results[0]
if decision.is_abstention:
route_to_fallback("Model signaled insufficient evidence")
elif decision.confidence >= THRESHOLD_AUTO:
dispatch_workflow(action=decision.selected_option_id)
else:
route_to_human_review(reason="Confidence below automated threshold", score=decision.confidence)
At a threshold of 0.85 on our held-out test split, the model achieves 84.60% coverage with a selective risk of 1.18% (10 errors among 846 accepted predictions).
OpenJev builds on open research and open-source models:
Empirical evaluation of OpenJev across 12 structured decision tasks, comparing the zero-shot base checkpoint (knowledgator/gliclass-modern-base-v2.0) against the Banking77 fine-tuned checkpoint (artifacts/v2/model.safetensors) across three label-framing arms (neutral, verbose, banking_framed).
| Rank | Task ID | Cookbook Recipe | Evaluated Use Case | Provenance | Optimal Checkpoint | Framing Arm | Task Accuracy | Adaptive ECE | Over-Abstention |
|---|---|---|---|---|---|---|---|---|---|
| 1 | T06 | Banking77 In-Domain Control | In-domain control benchmark evaluating customer banking intent classification across card lifecycle operations. | public | finetuned | banking_framed | 95.2% | 0.8% | 1.1% |
| 2 | T05 | Shopify Taxonomy (Hierarchical Beam) | Top-level division routing for hierarchical beam search classification across deep catalog trees. | public | finetuned | banking_framed | 94.7% | 4.0% | 0.1% |
| 3 | T04 | Shopify Product Taxonomy (Flat Leaf) | Classify merchandise descriptions into 24 distinct Shopify retail product categories plus abstention. | public | finetuned | neutral | 94.6% | 2.6% | 0.1% |
| Task ID | Task Name | Provenance | Cardinality ($K$) | Winning Checkpoint | Winning Arm | Task Accuracy | Adaptive ECE | Over-Abstention | Proper Brier | Gate Status |
|---|---|---|---|---|---|---|---|---|---|---|
T01 | Phishing vs Legitimate Email | public | $K=3$ | finetuned | verbose | 57.5% | 17.6% | 1.9% | 0.6653 | Failed Gate |
T02 | Jailbreak vs Benign Prompt | public | $K=3$ | base | neutral | 34.9% | 21.7% | 52.0% | 0.8332 | Failed Gate |
T03 | Hazard Severity Routing | public | $K=5$ | base | neutral | 26.5% | 24.3% | 13.6% | 0.8686 | Failed Gate |
T04 | Shopify Product Taxonomy (Flat Leaf) | public | $K=25$ | finetuned | neutral | 94.6% | 2.6% | 0.1% | 0.2354 | PASSED (Promoted) |
T05 | Shopify Taxonomy (Hierarchical Beam) | public | $K=7$ | finetuned | banking_framed | 94.7% | 4.0% | 0.1% | 0.2214 | PASSED (Promoted) |
T06 | Banking77 In-Domain Control | public | $K=5$ | finetuned | banking_framed | 95.2% | 0.8% | 1.1% | 0.0756 | PASSED (Promoted) |
T07 | CLINC150 Intent Domain Routing | public | $K=11$ | finetuned | verbose | 42.9% | 29.2% | 8.6% | 0.8480 | Failed Gate |
T08 | Smart Home Command Interpretation | authored | $K=8$ | base | neutral | 100.0% | 9.7% | 0.0% | 0.1635 | Failed Gate |
T09 | Function and Tool Routing | authored | $K=21$ | finetuned | verbose | 100.0% | 2.4% | 0.0% | 0.1648 | Failed Gate |
T10 | Agent Skill Selection | authored | $K=21$ | finetuned | verbose | 100.0% | 3.9% | 0.0% | 0.1571 | Failed Gate |
T11 | Passage Relevance Re-ranking | public | $K=10$ | finetuned | neutral | 11.9% | 49.5% | 0.0% | 1.2732 | Failed Gate |
T12 | RAG Prompt-Injection Screening | public | $K=3$ | finetuned | neutral | 71.8% | 7.8% | 1.4% | 0.5401 | Failed Gate |
797 followers · starred Sep 2026
92 followers · starred Sep 2026
34 followers · starred Sep 2026