Ask a chat model a routing question and it writes you a paragraph — which your code then parses back into a label. minojev skips the paragraph. One forward pass returns a typed, calibrated probability distribution with zero output tokens.
After reading your question, the model has already formed an opinion. Making it write that opinion out as text is the slowest possible way to hear it. So minojev reads the opinion straight from the model's hidden states, and reports it as probabilities over the candidates you declared.
Three steps, no generation loop, no output parser.
Each option becomes a path: state + question + that candidate. Related questions share one state prefix.
Paths are batched through the backbone. Every decision head reads hidden states; no token is sampled, ever.
Choice, boolean, and score questions return distributions. Dev-fitted temperatures keep confidence honest.
What makes this project more than a demo.
A 547k-parameter transformer and a byte tokenizer train on a laptop CPU in minutes — no downloads, no API keys, no GPU.
Datasets, teacher targets, per-question predictions, metrics, and replay bundles are committed in the repo.
Temperature scaling is fitted on dev and stored in the checkpoint. ECE is measured before and after.
Train decision heads from scratch, or read native logits from a pretrained Hugging Face model with zero training.
Many questions per state in one pass; one KV prefill per distinct state, then cheap branches.
The whole model, trainer, calibration, and demos fit in one afternoon of reading. Bilingual docs included.
Both replay committed bundles — no server model required.
Every step shows a move distribution, four parallel safety booleans, and the code-enforced final move. Learned from scratch in minutes.
One state, many runtime questions — choices, booleans, and scores scored together, with teacher distributions overlaid.
547k parameters, CPU, fully reproducible via scripts/build_results.sh.
minojev synth --out data/train.jsonl --count 512 --seed 17 --split train minojev train --train data/train.jsonl --dev data/dev.jsonl \ --output-dir runs/synth --steps 800 --calibrate gold --device cpu minojev score --checkpoint runs/synth/checkpoint \ --input examples/decisions.jsonl --output results.jsonl --mode reuse