The Program Is the Dosimeter: Calibrated Query-Time Posterior Control in Language Models
Anonymous authors, under review at ICLR 2027
Activation steering adds alpha * v to the residual stream, but alpha carries no
semantic unit. A small probabilistic program supplies the units — and that is what turns an
adequate steering vector into a measuring instrument.
The loop, its calibration, and its locality.
(a) Read a posterior off the residual stream, condition it outside the model with a small
probabilistic program, write the target posterior back onto a linear residual coordinate; the dose is
delta = logit(p*) - logit(p).
(b) On BB-Urn with Qwen2.5-7B at layer 21, realized change in answer log-odds tracks the program dose with
slope 0.961, R² 0.922.
(c) The same write moves nothing off that query: oracle at the answer 3.46 versus calibrated write 0.96,
while shared-site write 0.08, cached re-read 0.34 and base model 0.36 sit at the random control.
The idea
A dose has a unit; a steering strength does not
Steering asks you to pick a scalar and see what happens. There is no principled answer to
“how much”, because the knob is measured in whatever units the vector happens to have.
A probabilistic program fixes this by naming the quantity you actually want to change.
Dosedelta= logit(p*)
− logit(p)measured in nats
Activation steering
h' = h + alpha * v — alpha is a strength. Doubling it is not doubling
anything the task defines, so there is nothing to calibrate against and no way to say the edit
was the right size.
Program-defined dose
The program reads a posterior p, conditions on evidence outside the model to get
p*, and the difference of their logits is the requested move in the answer's
log-odds. The units come with the request.
Why that is the contribution
Not a better steering vector. The dose semantics are what let you check whether a write of
delta nats actually produced delta nats — the difference between a knob
and an instrument.
The missing unit, the interface, and the measured response. Evidence is conditioned on outside the
model and never enters the prompt. Against a random-null band sitting at zero, the write realizes the
requested dose with slope 0.961 and R² 0.922.
Results
Three claims
01
The writeback is calibrated, and the dose is identified without leakage
On BB-Urn with Qwen2.5-7B at layer 21, realized log-odds move in near-unit proportion to the
requested dose. The identifying variation is six cross-condition evidence levels, not 2880
independent doses — we say so rather than count pairs as samples.
0.961slope, BB-Urn / Qwen2.5-7B, layer 21
0.922R² over n = 480 instances, 2880 pairs
0.96–1.02near-unit slope range across three layers
0.98–0.99oracle-in-context ceiling
Six evidence conditions supply the variation. A separate leakage-free experiment then fits the gain
blind to the dose, with directions unit-normalized and frozen on a calibration split:
1.027mean-difference direction, CI [0.977, 1.070], R² 0.978
1.004ActAdd contrastive direction, CI [0.963, 1.042], R² 0.984
0.926chart-native reference on the same axis
0.041repe_pca direction — fails
Two unrelated directions both land inside the pre-registered band while a third fails outright: the
direction is interchangeable, and the units come from the program rather than from the vector's geometry.
02
It is a query-time actuator, not stored state
The edit is spent on the query it was written for. Transport it to a neighboring question and the
effect vanishes as far as our probes can tell; cache it once and never re-apply it and later queries
look like the random control.
Three probes, all at random
Transported vector, local chart, and shared-position write each come out
indistinguishable from the random control.
Cached, never re-applied
A one-time edit is approximately the random control at every later query,
so nothing durable was installed.
Re-applied, it composes
A re-applied write composes with the model's own filtering — slope
1.07, against 0.32 for a destroyed logit edit.
The consequence is architectural: long-horizon state has to live outside the model and be
re-applied on every query.
03
Keeping the program outside the model pays off
Because the state lives in the program, sixteen rounds of belief updating run at O(1)
context. Given a task's probabilistic model and no outcome labels, the loop repairs calibration and
still matches or beats label-supervised calibrators.
16rounds at O(1) context
0.433 → 0.687BB-Urn accuracy, label-free repair, n = 600
0.283 → 0.055BB-Urn expected calibration error
22 / 22public-benchmark cells where the write beats the same posterior stated in the prompt
0.35 → 0.70Bayesian-Teaching accuracy, both models, within 0.09 of the exact-Bayes ceiling
0.57 → 0.72BCC held-out coherence r on Llama, held-out n = 204
The label-free repair matches or beats temperature, vector, and Dirichlet scaling — all of which need
outcome labels. Stating the same posterior in the prompt loses in every one of the 22 cells.
Sixteen rounds, and calibration correction without labels. Re-writing external state per query
tracks the exact posterior far better than putting the evidence, or the posterior itself, into the
context. On the correction panel the write is level with label-supervised scaling methods while using
no outcome labels.
Scope
What does not transfer
Near-unit calibration is a Qwen / BB-Urn result. It is not a property of language models in general,
and one of our pre-registered tests failed. Both statements belong here rather than in a footnote.
Qwen2.5-7B, L21
Has units
Two independent unit-norm directions land inside the frozen band (1.027 and 1.004). This is the
regime the near-unit claim is about, and only this one.
Llama-3.1-8B, L22 / L28
No actuator on this task
Chart-native response reaches only 0.141 and 0.242. There is nothing to calibrate here; the write
does not act.
Gemma-2-2b-it — band failed
Attenuated, and super-unit
Attenuated actuator at L18 / L22 (0.40 / 0.47). The fixed-direction ActAdd test at L22 is linear but
super-unit at 1.205, CI [1.096, 1.301] — outside the pre-registered band. Reported as a
failure, not rescued.
BB-Skill, cross-family
Linear but attenuated
Across three model families the response stays linear with slope 0.69–0.88, so the mechanism
transfers in form while the gain does not.
Method
How the identification experiment removes the leakage
If the direction is chosen and the gain is fitted on the same doses you report, a near-unit slope is
partly bookkeeping. Four choices, all made before the runs, close that path.
01Unit-norm, pre-fixed directions
Directions are unit-normalized and fixed on a calibration split, so their scale cannot absorb the
dose and no per-report tuning is possible.
02Gain fitted blind to the dose
The gain is estimated without seeing the dose it will be evaluated against, so it cannot be chosen
to make the slope come out at one.
03Frozen acceptance band
The band [0.9, 1.1] with R² ≥ 0.9 was pre-registered before the runs.
Gemma's 1.205 fails it, which is what a frozen band is for.
04Cluster bootstrap, half held out
17 urn ratios × 8 draw patterns = 136 settings, half held out, with the bootstrap clustered over
settings rather than over instances.