File size: 3,290 Bytes
5ab0961
5a83a34
5ab0961
5a83a34
5ab0961
 
 
5a83a34
5ab0961
5a83a34
5ab0961
 
5a83a34
5ab0961
5a83a34
 
 
 
 
 
5ab0961
5a83a34
5ab0961
5a83a34
 
 
 
5ab0961
5a83a34
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5ab0961
 
 
5a83a34
 
 
 
 
 
 
5ab0961
5a83a34
5ab0961
5a83a34
 
 
 
5ab0961
5a83a34
5ab0961
5a83a34
 
 
5ab0961
5a83a34
5ab0961
5a83a34
 
 
5ab0961
5a83a34
 
5ab0961
 
5a83a34
 
5ab0961
5a83a34
5ab0961
5a83a34
5ab0961
5a83a34
5ab0961
5a83a34
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
base_model: Qwen/Qwen3.5-2B
library_name: peft
license: apache-2.0
pipeline_tag: text-generation
tags:
- lora
- transformers
- decision-model
- opencodifier
---

# OpenCodifier E1-E β€” Qwen3.5-2B verdict-slot decision LoRA

A LoRA adapter that turns [Qwen/Qwen3.5-2B](https://huggingface.co/Qwen/Qwen3.5-2B)
into a Jev-style **decision model**: probabilities are read from the
log-probs of verdict-slot label tokens at the answer position β€” nothing is
generated, nothing is parsed. It is the decision rung of the
[OpenCodifier](https://github.com/aliasfoxkde/OpenCodifier) ladder, and the
first own-trained arm to pass both release-gate legs.

## Results

All numbers from the OpenCodifier evaluation records
([BENCHMARKS.md](https://github.com/aliasfoxkde/OpenCodifier/blob/main/docs/BENCHMARKS.md),
TRAINING.md Β§9.9.1). Public 231-item JevBench split, deterministic
readout, fp16, single V100.

| metric | value |
|---|---|
| JevBench-231 accuracy | **0.6840** (publish bar 0.6494 β€” clear) |
| Internal holdout suite | **0.8083** (gate β‰₯ 0.75 β€” GATE_PASS; seed-replicated 0.8000) |
| Raw board ECE | 0.207 |
| Holdout-fitted temperature (T=3.362, analysis-only on board) | ECE 0.207 β†’ 0.127 |
| Auto-decidable @5% risk | 0.100 (23/231) |
| Brier | 0.504 |
| p50 latency | 0.58 s |

Per-family shape: routing / tool-selection / ordinal families at 1.00;
relational/compositional families are the weakness (multi_hop 0.389,
judge_hard 0.412, long_policy 0.368). The board is lost on compositional
families, not on routing β€” the candidate lever is relational-heavy
soft-label data, not parameters.

## Training

- **Base**: Qwen3.5-2B, LoRA verdict-slot readout
- **Corpus**: merged-v3 (173,452 records; composition and join rates in
  TRAINING.md). The corpus itself is **not** released with this adapter.
- **Schedule**: 11,009 steps, single V100 (T5500), fp16
- **Calibration**: temperature T=3.362 fitted on a labelled holdout
  (holdout ECE 0.179 β†’ 0.117); artifact ships in the OpenCodifier repo
  at `calibration/e1e-qwen3.5-2b-holdout.json`

## Intended use

Typed multiple-choice decisions (routing, tool selection, ordinal
grading) where calibrated token-level probabilities β€” not free text β€”
are the product. Pairs with the OpenCodifier engine's confidence gate:
low-confidence reads abstain or escalate to a stronger rung.

## Out of scope

Free-form generation; the base model's general chat ability is not
preserved or claimed. Not evaluated for safety of generated content β€”
the adapter is a readout head, not a chat model.

## How to use

```python
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer

base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-2B", torch_dtype="float16")
model = PeftModel.from_pretrained(base, "TaskWizerAI/opencodifier-e1e-2b")
```

Scores come from label-token log-probs at the answer position; see the
OpenCodifier repo for the readout harness and the Jev adapter wire shape.

## License

Apache-2.0, matching the OpenCodifier project.

## Citation

```bibtex
@software{opencodifier_e1e_2026,
  title  = {OpenCodifier E1-E: a gate-passing 2B decision-model LoRA},
  author = {Kinney, Michael},
  year   = {2026},
  url    = {https://github.com/aliasfoxkde/OpenCodifier}
}
```