Qwen3.5-2B-Base, readout fine-tuned (LoRA, + coherence)
0
4 commits
1 linked in READMEs
updated Sep 25, 2026
A System One decision model: it reads a state, answers typed questions (choice, score, noul) and returns calibrated
probability distributions your code can branch on β it never writes text. This repo is a rank-16 LoRA (10,911,744 parameters) on Qwen/Qwen3.5-2B-Base, merged into the weights at load, trained on its own decision
readout with a coherence penalty.
At a glance β accuracy 0.702 Β· ECE 0.051 Β· held-out 0.742 Β· TVD to human labels 0.320 Β· sure loss 0.034
same order, Qwen3.5-2B-Base, untuned (Tier 0): 0.533 / 0.124 / 0.576 / 0.491 / 0.377
same order, Jev 1.13.0: 0.733 / 0.113 / 0.835 / 0.432 / 0.081
jev-bench Β· leaderboard Β· findings Β· code
from jevify import load_jevified
model = load_jevified("Praveenrajus/jevify-qwen3.5-2b-base-readout-coh")
model.ask({"text": "The battery lasted two days on a single charge."},
{"q": {"type": "noul", "instructions": "Is the review positive?"}})
jevify-serve --model Praveenrajus/jevify-qwen3.5-2b-base-readout-coh serves it as a drop-in for the TypeSafe SDK (TYPESAFE_BASE_URL=http://localhost:8000).
The backbone is pulled from its own repo at load, pinned to commit b1485b2fa6dfa1287294f269f5fb618e03d52d7c.
Every number is on the jev-bench test splits (22,773 records) or the study's other test suites, scored the same way for every model; the rows under this model are references from the same study.
Decisions and calibration
| model | acc | ECE | Brier | held-out acc | TVD to human labels |
|---|---|---|---|---|---|
| this model | 0.702 | 0.051 | 0.365 | 0.742 | 0.320 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.533 | 0.124 | 0.544 | 0.576 | 0.491 |
| same recipe, supervised only | 0.696 | 0.053 | 0.365 | 0.726 | 0.342 |
| same recipe from the instruct model | 0.702 | 0.054 | 0.364 | 0.742 | 0.315 |
| Jev 1.13.0 (TypeSafe API) | 0.733 | 0.113 | 0.349 | 0.835 | 0.432 |
Coherence and invariance β sure loss: mean dΒ² over 4,749 question families (0 = perfectly coherent); order flip: how often the top answer changes when options are shuffled; tag TVD: how much the distribution moves when option tags change from AβJ to other identifiers.
| model | sure loss | share incoherent | order flip | tag TVD | K=2βmax acc drop |
|---|---|---|---|---|---|
| this model | 0.034 | 0.510 | 0.079 | 0.041 | 0.279 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.377 | 0.986 | 0.402 | 0.061 | 0.643 |
| same recipe, supervised only | 0.362 | 0.986 | 0.101 | 0.040 | 0.274 |
| same recipe from the instruct model | 0.031 | 0.514 | 0.094 | 0.044 | 0.255 |
| Jev 1.13.0 (TypeSafe API) | 0.081 | 0.725 | 0.046 | β | 0.246 |
Out of distribution β stated rules (LegalBench, rule given in the question), none-of-the-above when the gold option is removed, injected-instruction hijack rate, and three community Jev benchmarks.
| model | stated rule | 'none' when gone | hijack | phishing AUROC | tool risk |
|---|---|---|---|---|---|
| this model | 0.658 | 0.536 | 0.144 | 0.621 | 0.800 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.575 | 0.622 | 0.309 | 0.809 | 0.617 |
| same recipe, supervised only | 0.555 | 0.422 | 0.131 | 0.569 | 0.800 |
| same recipe from the instruct model | 0.545 | 0.596 | 0.041 | 0.803 | 0.783 |
| Jev 1.13.0 (TypeSafe API) | 0.924 | 0.744 | 0.205 | 0.688 | 0.933 |
Reproduction check. Loading this folder with load_jevified and re-scoring 72 jev-bench test records from six sources reproduced the training run's own test predictions: 0 changed choice answers, mean largest |Ξp| 0.008, max 0.032 (the adapter is merged into bf16 weights at load).
The model is trained on its own decision readout β the distribution over the allowed answers read at the answer position,
one forward pass, no decoding β with the primitive's proper scoring rule, plus a coherence penalty (weight 1.0): every training question comes with automatically derived siblings (the options as yes/no questions, the negation, the threshold questions of a scale), and the de Finetti sure loss of the family's answers is penalised, so the model's answers to related questions stay mutually consistent.
Options are shuffled per family. Training data: the train splits of the 16 non-held-out jev-bench sources
(5,885 families, at most 400 records per source); lr 3e-05, 2 epochs,
best epoch by validation loss (epoch 0), seed 0.
A Tier 0 recipe (temperature per primitive, Noul bias, option-order permutations) was then fitted on validation splits.
The six held-out sources (clinc150, arc_challenge, yelp5, measuring_hate_speech, fever_evidence, strategyqa_grounded) never appeared in training.
jevify_config.json β the recipe, the backbone and the training settings load_jevified readslora/ β the adapter, merged into the backbone at loadresults/test_metrics.json β every jev-bench config; recipe.json β the fitted reciperesults/coherence.json, probes.json, tags.json β the coherence, probe and tag testsresults/train.json β the training log; summary.json β this model's row of the study tableresults/verification.json β the reproduction check reported under ResultsQwen3.5-2B-Base, readout fine-tuned (LoRA, + coherence)
0
4 commits
1 linked in READMEs
updated Sep 25, 2026
A System One decision model: it reads a state, answers typed questions (choice, score, noul) and returns calibrated
probability distributions your code can branch on β it never writes text. This repo is a rank-16 LoRA (10,911,744 parameters) on Qwen/Qwen3.5-2B-Base, merged into the weights at load, trained on its own decision
readout with a coherence penalty.
At a glance β accuracy 0.702 Β· ECE 0.051 Β· held-out 0.742 Β· TVD to human labels 0.320 Β· sure loss 0.034
same order, Qwen3.5-2B-Base, untuned (Tier 0): 0.533 / 0.124 / 0.576 / 0.491 / 0.377
same order, Jev 1.13.0: 0.733 / 0.113 / 0.835 / 0.432 / 0.081
jev-bench Β· leaderboard Β· findings Β· code
from jevify import load_jevified
model = load_jevified("Praveenrajus/jevify-qwen3.5-2b-base-readout-coh")
model.ask({"text": "The battery lasted two days on a single charge."},
{"q": {"type": "noul", "instructions": "Is the review positive?"}})
jevify-serve --model Praveenrajus/jevify-qwen3.5-2b-base-readout-coh serves it as a drop-in for the TypeSafe SDK (TYPESAFE_BASE_URL=http://localhost:8000).
The backbone is pulled from its own repo at load, pinned to commit b1485b2fa6dfa1287294f269f5fb618e03d52d7c.
Every number is on the jev-bench test splits (22,773 records) or the study's other test suites, scored the same way for every model; the rows under this model are references from the same study.
Decisions and calibration
| model | acc | ECE | Brier | held-out acc | TVD to human labels |
|---|---|---|---|---|---|
| this model | 0.702 | 0.051 | 0.365 | 0.742 | 0.320 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.533 | 0.124 | 0.544 | 0.576 | 0.491 |
| same recipe, supervised only | 0.696 | 0.053 | 0.365 | 0.726 | 0.342 |
| same recipe from the instruct model | 0.702 | 0.054 | 0.364 | 0.742 | 0.315 |
| Jev 1.13.0 (TypeSafe API) | 0.733 | 0.113 | 0.349 | 0.835 | 0.432 |
Coherence and invariance β sure loss: mean dΒ² over 4,749 question families (0 = perfectly coherent); order flip: how often the top answer changes when options are shuffled; tag TVD: how much the distribution moves when option tags change from AβJ to other identifiers.
| model | sure loss | share incoherent | order flip | tag TVD | K=2βmax acc drop |
|---|---|---|---|---|---|
| this model | 0.034 | 0.510 | 0.079 | 0.041 | 0.279 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.377 | 0.986 | 0.402 | 0.061 | 0.643 |
| same recipe, supervised only | 0.362 | 0.986 | 0.101 | 0.040 | 0.274 |
| same recipe from the instruct model | 0.031 | 0.514 | 0.094 | 0.044 | 0.255 |
| Jev 1.13.0 (TypeSafe API) | 0.081 | 0.725 | 0.046 | β | 0.246 |
Out of distribution β stated rules (LegalBench, rule given in the question), none-of-the-above when the gold option is removed, injected-instruction hijack rate, and three community Jev benchmarks.
| model | stated rule | 'none' when gone | hijack | phishing AUROC | tool risk |
|---|---|---|---|---|---|
| this model | 0.658 | 0.536 | 0.144 | 0.621 | 0.800 |
| Qwen3.5-2B-Base, untuned (Tier 0) | 0.575 | 0.622 | 0.309 | 0.809 | 0.617 |
| same recipe, supervised only | 0.555 | 0.422 | 0.131 | 0.569 | 0.800 |
| same recipe from the instruct model | 0.545 | 0.596 | 0.041 | 0.803 | 0.783 |
| Jev 1.13.0 (TypeSafe API) | 0.924 | 0.744 | 0.205 | 0.688 | 0.933 |
Reproduction check. Loading this folder with load_jevified and re-scoring 72 jev-bench test records from six sources reproduced the training run's own test predictions: 0 changed choice answers, mean largest |Ξp| 0.008, max 0.032 (the adapter is merged into bf16 weights at load).
The model is trained on its own decision readout β the distribution over the allowed answers read at the answer position,
one forward pass, no decoding β with the primitive's proper scoring rule, plus a coherence penalty (weight 1.0): every training question comes with automatically derived siblings (the options as yes/no questions, the negation, the threshold questions of a scale), and the de Finetti sure loss of the family's answers is penalised, so the model's answers to related questions stay mutually consistent.
Options are shuffled per family. Training data: the train splits of the 16 non-held-out jev-bench sources
(5,885 families, at most 400 records per source); lr 3e-05, 2 epochs,
best epoch by validation loss (epoch 0), seed 0.
A Tier 0 recipe (temperature per primitive, Noul bias, option-order permutations) was then fitted on validation splits.
The six held-out sources (clinc150, arc_challenge, yelp5, measuring_hate_speech, fever_evidence, strategyqa_grounded) never appeared in training.
jevify_config.json β the recipe, the backbone and the training settings load_jevified readslora/ β the adapter, merged into the backbone at loadresults/test_metrics.json β every jev-bench config; recipe.json β the fitted reciperesults/coherence.json, probes.json, tags.json β the coherence, probe and tag testsresults/train.json β the training log; summary.json β this model's row of the study tableresults/verification.json β the reproduction check reported under Results