Qwen3.5 0.8B + an explicit physics guard. WebLLM · WebGPU ·
no inference server.
APPLE M4 MAXRECORDED RUN 04
71ms
per action decision.
511accepted choices
40.12 slevel completion
QWEN → CODE → GAME{ "maneuver": "jump" }
Rounded from 71.26 ms mean worker inference in the final-build
run. Model download and CPU forecasting excluded. M4 Max
identification supplied by the device owner.
Most software needs a choice, not a paragraph.
JEVfire asks a pretrained model to score a menu of allowed values,
then constructs the JSON in code. Inspired by Jev’s decision-first
idea; implemented with existing models and no retraining.
01 / THE IDEA
01 / FOLLOW A DECISION
Same model. A different way out.
We keep the tokenizer and model weights. Existing token labels—A,
B, C—stand for full, typed choices. One scored output position
still runs the model’s decoder stack, not just one layer.
Read the contextReuse an exact cached prefix.
Score the vocabularySame model, same tokenizer.
Keep A / B / CChoose the highest-scoring label.
Build JSON in codeMap A to the typed value jump.
OUTPUT{ "maneuver": "jump" }
Ready
Independent fields can be batched on CUDA. Browser fields run
sequentially with shared context.
THE GUARANTEE
No invented fields. No undeclared values.
Successful JEVfire responses are assembled from your declared keys
and choices. A valid choice can still be a bad choice. Independent
fields can also disagree; dependent decisions need staged requests
or application checks.
02 / THE 100% QUESTION
A smaller menu. Not more certainty.
The model can give high scores to tokens outside our menu. We
ignore those scores and rescale the allowed choices to sum to
100%. That does not measure how likely the decision is to be
correct.
Here, A has 10%, B has 5%, and everything else has 85%. Within A
and B, the share becomes 10 ÷ 15 = 66.7% and
5 ÷ 15 = 33.3%. The winner stays the same.
Where does the other 85% go?ILLUSTRATIVE VALUES
■ A · jump■ B · wait▧ other tokens
Full vocabulary100%
A 10% · B 5% · other 85%
↓
Allowed choices15% retained
A 10% · B 5%
No weights changed. No tokenizer changed.
03 / REUSE THE WORK
Read the rules once. Read the world again.
Instructions stay put. The world changes. We retain the exact
instruction prefix’s attention and recurrent state, then process
fresh observations and candidate choices. A changed prefix needs
fresh computation.
REUSABLE PREFIX“Keep moving. Avoid damage.”
TICK 1gap ahead → jump
TICK 2landing → run
TICK 3enemy → hop
Schematic observations. Each changing suffix still runs through
the model. A downloaded model cache is different from a
prompt-state cache.
SAME-PROMPT CACHE ABLATION
Cache off140.17 ms
Cache on67.32 ms
2.08× faster across 12 paired maneuver prompts.
All 12 choices matched. This isolates caching; changing the
entire controller is a different experiment.
In Jev’s terminology,
RLCD means Reinforcement Learning for Calibrated
Decisions. Calibration means predictions assigned 70% confidence should be
right about 70% of the time across comparable cases.
Our wrapper doesn’t train the model. Other projects do: supervised
learning uses labeled examples; reinforcement learning rewards
outcomes. Either can train probability estimates, and either still
needs independent evaluation.
Being confidently wrong costs more.TEACHING EXAMPLE
Examples→ Predict→ Grade→ Update weights ↺
100 predictions: 70 correct, 30 wrong
● Current confidence◆ Minimum at 70%
Penalty: 0.273
Synthetic illustration, not a training run. Binary Brier penalty;
lower is better. Real models learn different confidence for
different inputs.
05 / OPEN TRAINING RECIPES
CHECKED SEPTEMBER 2026
Some projects really train. They don’t all do RL.
Three useful examples, with different objectives. These are
source-reviewed recipes and author-reported results, not training
runs we reproduced.
SUPERVISED CLASSIFICATION
OpenJev Qwen3.5 · 4B
Train a new classification head to decide whether a candidate is
supported, contradicted, or neutral given the context. Scores
come from this head, rather than vocabulary generation.
The recipe
120,000 SNLI/MNLI examples; 2,000 validation examples; one
epoch; batch 32; maximum length 256; learning rate 2e-5.
Fine-tune the text backbone and head; freeze the vision tower.
The released run uses no LoRA.
Recorded NLI validation accuracy: 89.85%. This is not a Mario
score or a calibration result.
A small candidate scorer trained with cross-entropy plus a
penalty for probability errors. A separate calibration step
adjusts how sharp its probabilities are.
The recipe
Start with GLiClass/ModernBERT. 2,300 training examples; three
epochs; batch 8, accumulation 4; backbone/head learning rates
2e-5/1e-4. Select by validation NLL. Fit temperature on 500
separate calibration examples; evaluate on 1,000 test
examples.
The v2 test report keeps 95% accuracy, but calibration error
worsens from 1.13% to 3.35% after temperature scaling. Calling
a step “calibration” does not guarantee improvement.
Generate reasoning, an answer, and confidence. Grade correctness
and confidence together, then update the model with GRPO. Actual
RL; a different method from Jev’s unreproduced recipe.
The recipe
Hotpot QA; 32 sampled completions per prompt; temperature 0.7;
one epoch; learning rate 1e-6; BF16. The authors document four
A100 GPUs for Hotpot training.
Example checkpoint:
mehuldamani/hotpot-v2-brier-7b-no-split. These
models still generate reasoning text; their confidence
training does not automatically transfer to our A/B/C token
scores.
Best fit: small action menus, routing, flags, and independent
typed decisions. Code owns the keys and maps each selected label
to its value. Our current API accepts flat finite fields; code
can compose larger objects.
Constrained JSON generation
Best fit: nested objects, dynamic arrays, and free-text strings
inside a schema. A grammar masks tokens that cannot legally come
next; the model continues generating. Later fields can condition
on earlier values.
Trained decision models
Best fit: repeated tasks with representative training data.
Learn better choices or probability estimates, then use code
assembly or constrained decoding. Training and output
constraints can be combined.
Successful constrained generation enforces supported schema rules,
not factual truth. Prefix caching can help both approaches; some
engines skip forced text. See
XGrammar
and
vLLM structured outputs.
07 / THE MEASUREMENT RECEIPTS
DIFFERENT WORKLOADS. SEPARATE RESULTS.
Fast is a measurement. Good is another one.
BROWSER / M4 MAXWorld 1-1
Final-build run mean
71.26 ms
Accepted choices
511
Accepted choices / second
12.74
Request round-trip mean
73.27 ms
CPU forecasting mean
2.68 ms
Level completed in
40.12 s
One continuous run on the shipping build; worker latency counts
accepted choices. Qwen3.5-0.8B-q4f16_1, WebLLM 0.2.85, Chrome
152. Excludes download; first cold-policy choice: 192.80 ms.
Across all four recorded runs: 4/4 completions,
72.79 ms mean inference, 12.60 accepted choices/sec. One
authored level, with a physics guard—not a general success
guarantee. Device owner identified M4 Max; browser telemetry
records Apple / Metal 3.
Are we changing the tokenizer or looking at token distributions?
The tokenizer and vocabulary stay unchanged. We verify
single-token labels and read their scores from the existing
language-model head. The browser uses raw logits; the vLLM path
requests label log probabilities. Restricting and normalizing
those scores gives a distribution over the menu—not a measured
correctness probability.
Can it take images as context?
The CUDA image-context path can pass images to a compatible
vision-language model. Image encoding still costs time, and
model/backend support is required. The browser Mario demo uses
textual state summaries and CPU forecasts, not screen pixels.
Image-context example ↗
Does the game pause while the model thinks?
Live mode keeps the world and maneuver executor moving while a
worker scores the next choice. There is one request outstanding;
stale answers are checked against the new state. The physics guard
forecasts candidates before inference and validates the chosen
maneuver afterwards. Raw-control Decision steps is a separate
diagnostic mode.
Did we reproduce Jev’s RLCD training?
No. JEVfire was inspired by the community
Qwen RLCD demo
and Jev’s typed-decision direction. We use frozen pretrained
weights and inference-engine caching. The name RLCD on a
repository does not establish that its authors used reinforcement
learning.