# `[2026-08-27]` The dose-response says benefit and damage are ONE direction in weight space

vLLM **cannot LoRA-serve Gemma-4-26B-A4B at all** — it is an MoE and the LoRA manager has no
expert mapping (`AttributeError: To support LoRA for MoE model, 'get_expert_mapping' must be
implemented`, `vllm/lora/utils.py:398`, v0.24.0). Found by trying it: one container start,
which is exactly what playbook §3.10 exists to buy.

So each scale point was **pre-merged** instead — `merge_and_unload` with the adapter's alpha
pre-scaled, which reproduces exactly what a LoRA at scale s would serve, on the same serving
path as the gate. Artifacts held at `/tank/erp-tune/serve/merged-run03{,-s075,-s050,-s025}`.

    scale     attractor   gain kept   noise@31   damage     prose@40 cost
    s=0.50       0.9684        0.0%     1.0000     0.00pp          0.00pp
    s=0.75       0.8966       42.0%     0.9688     3.12pp          6.25pp
    s=1.00       0.8049      100.0%     0.5938    40.62pp         15.62pp

    first 42% of the gain costs   3.12pp of noise coherence
    last  58% of the gain costs  37.50pp more   -> 12x worse per point

**Every axis is monotone in scale — attractor, distance, marker density, RP length, both
coherence measures, even truncation count. No knee anywhere.**

## The conclusion, which is stronger than an exchange rate

An exchange rate says the trade is expensive. This says **there is no trade to make**: the
adapter learned ONE direction and everything rides it. brokkr's framing, worth keeping:
**scaling moves you along the direction the adapter already learned; it cannot give you a
different one.**

That converts the merge-back from a candidate fix into a **measurement of the problem**.
zerofata's MeroMero v1 ships the merge-back as its answer, so it was worth testing — and
testing it is what proved it cannot be the answer here.

## The T4 mechanism is NOT register capture

    pad type    base            tuned
    prose       1.0000 flat     mild knee, onset ~1,600 tok
    noise       1.0000 flat     1.0000 -> 0.5938    <- SEVERE

The prose-gradient "wedge" predicted **prose** should be the worst case. Instead prose is the
mild axis and **shuffled tokens are where it collapses** — a continuation prior has nothing to
continue in shuffled tokens. Every miss is `wrong-name`: correct format, on task, wrong answer.
**State mis-tracking, not register capture.**

brokkr: *"The tune did not teach it to continue prose — it destroyed its ability to skip text
that is not worth reading."*

## ⚠ INSTRUMENT FLOOR — temperature 0 is NOT deterministic under concurrency

    same seat, same items, temperature 0, --jobs 8
      prose reps 31   0.9375  0.9688  0.9688    spread 3.12pp
      noise reps 24   0.7500  0.7188  0.7188    spread 3.12pp

vLLM's continuous batching is not numerically invariant to batch composition. **Any eval delta
under ~3.1pp at n=64/jobs=8 is inside the floor.** Only `--jobs 1` shrinks it; more n averages
over it. Also in auto-memory as
`reference_vllm_temp0_not_deterministic_under_jobs`.

Corollary: it retro-closes the window-2 concurrency worry — measured dirty-vs-clean divergence
was 1.56pp, comfortably inside this floor.

See [[2026-08-27-mix-specified-in-the-wrong-unit]] for the wedge this displaced.
