Observation notebook · Anya · 2026 · continuous-damping branch
MiniCPM5-1B — the husk, and the Σα-law it left behind
SpecimenMiniCPM5-1B · 24-layer dense Llama (GQA) · no-CoT math / EQ / MC battery
Statusclosed out 2026-06-13 · no shippable model win · the ruler + the Σα-law are the deliverable
Sourcerys_minicpm5_damping.md · rys_minicpm5_1b.md · project_mlx_sweep_minicpm.md

The model was the test subject; the method was the result. This specimen produced almost nothing shippable (no capability win worth a GGUF), but the instrument was built here, and one empirical regularity, the Σα-law, held up across every later model. Read it for the ruler, not the result.

§0The patient

MiniCPM5-1B is the plainest model in the lab. Unlike its sibling MiniCPM-V 4.6 (a Qwen3.5 rebase), it's an original release, and the config says it all: the muP machinery is gone, and it genuinely declares LlamaForCausalLM: 24 dense GQA layers, untied embeddings. Everything downstream is textbook-Llama behaviour, including the residual-norm pathology it wears so openly.

It is also the model where the engine changed. Every earlier specimen was cut with llama.cpp on a static GGUF: you can duplicate or delete whole blocks, but you can't turn a layer's contribution down to 60%. The interesting surgery on MiniCPM5 is continuous, so the whole sweep moved into a live MLX process where the model's own Python objects get patched between forward passes. That sounds like a footnote, but it's the reason this page exists.

↳ the massive activation is created by layer 0 — the embedding is diffuse; the spike is born, not carried

The residual-norm highway Last-token residual norm and top-1 energy share plotted down layers L0 to L23. The L2 norm climbs about 66-fold while the single-dimension energy share collapses to a floor by L6 and then re-concentrates; the massive activation is made at layer 0, not carried up from the diffuse embedding. The residual-norm highway MiniCPM5-1B · last-token residual · norm log-climb (left) + top-1 energy share (right) · 4 crosslang probes avg 31610032103 residual L2 norm — log 0.60.40.20 top-1 single-dim energy share embL0L4L8L12L16L20L23 layer index (residual leaving layer i) L1 — this page’s layer 0.01 0.60 — massive activation born at L0 norm: 3.7 → 245 over L0→L23 ≈ 66×, near-log-linear climb top dim 745→288 @ L7 floor 0.04 @ L6 re-conc. → 0.39 @L22 L23 output · Δ/resid 0.96 residual L2 norm (log, left axis) top-1 energy share (right axis) A vanilla-Llama highway: residual norm climbs ~66× (3.7→245); one dim holds 60% of L0’s energy. The embedding is diffuse (0.01) — the massive activation is born at layer 0, not carried in the embedding.
The residual-norm highway Last-token residual norm and top-1 energy share plotted down layers L0 to L23. The L2 norm climbs about 66-fold while the single-dimension energy share collapses to a floor by L6 and then re-concentrates; the massive activation is made at layer 0, not carried up from the diffuse embedding. The residual-norm highway MiniCPM5-1B · last-token residual stream norm log-climb (left) + top-1 energy share (right) · 4 probes 31610032103 residual L2 norm — log 0.60.40.20 top-1 energy share embL0L4L8L12L16L20L23 layer index (residual leaving layer i) L1 — the active layer on this page .01 0.60 — born at L0 norm: 3.7→245 ≈ 66× climb L23 · Δ/resid .96 top dim 745→288 @L7 floor .04 residual L2 norm (log, left) top-1 energy share (right) Vanilla-Llama highway: residual norm climbs ~66× (3.7→245) down the 24 layers, and one dimension holds 60% of the energy at L0. But the embedding is diffuse (0.01): the massive activation is born at layer 0, not in the embedding — it then spreads, then re-concentrates.
Fig 1 — the residual-norm highway (the stage). Last-token residual down layers L0→L23: the L2 norm climbs ~66× (3.7 → 245), near-log-linear, while the top-1 single-dimension energy share starts at 0.60 at L0, collapses to a 0.04 floor by L6, then re-concentrates to ~0.39 by L22 before the L23 output rewrite redistributes it. The raw embedding is diffuse (energy 0.01, norm 0.9) — the massive activation is made at layer 0, the textbook Sun et al. 2024 pattern. L1 (the layer this whole page is about) and L23 are marked.
source residual_highway.json · 4 crosslang probes, last-tokentype data-grounded (single-pass instrumentation)safety norm vs energy by line-style + axis, not colour

§1The lever — continuous damping, not duplication

Duplication and pruning are discrete (a layer is either in the stack or out). Damping makes layer surgery continuous: you can turn a layer's contribution down to 60% instead of all-or-nothing. That's what needed the live MLX engine, and it's what the rest of this page is about. The surgery primitive is one line:

# ScaledLayer.__call__
out = x + α · (block(x) − x)   =   x + α·Δ

Δ is the layer's residual contribution. α = 1 is the untouched model. 0 < α < 1 damps the layer: it still computes, but writes a fraction of its update into the stream. α = 0 is a clean skip (identity). α > 1 over-amplifies. And α < 0 is an anti-update (push the stream the opposite way the layer wanted), which is not a functional inverse, because the block is nonlinear; it's a controlled way to ask "what does fighting this layer do?"

Configs are composed in original-layer-index space, applied in the order prune → blocks → dups → damp. A single layer can be duplicated k times, each copy given its own α, and the original pass damped too. That composition is the entire experimental vocabulary: a split-pass duplicates L and damps both the original and the copy; a stack is k copies with a per-copy α profile; everything else (ramps, triples, multi-site chains) is the same trick with more knobs. Nothing here is trainable — it's all inference-time. The question every config asks is the lab's usual one: did capability move, or did the grader just get fooled?

§2Building the ruler before trusting it

The first real finding had nothing to do with surgery. The base model has a cliff. On the original wide math set, ~50% of items floored to 0.0 and ~24% saturated to 1.0, leaving only ~8% in a band where a score could move. Baseline 0.33, no resolution. A sweep run on that ruler measures mostly nothing, precisely.

So the ruler got calibrated. A difficulty ladder (16 items per rung, both operands controlled, 8 seeds, baseline-only) mapped where each operation breaks. Rungs are operand digit-counts: d5 means both operands run 5 digits; mul/div shapes like 3×2 mean 3-digit × 2-digit. The packed in-band set (load_math_inband, 48 items) all sits at p ∈ 0.28–0.72, baseline ≈ 0.48: headroom in both directions, so a config can win or lose visibly.

opeasy → hard (strict rate)usable band
addd2 1.00 → d5 0.48 → d7 0.22smooth; bullseye at d5
subd2 0.89 → d3 0.60 → d4 0.30 → d5 0.17controlled-borrow, near-monotone
mul2×2 0.80 → 3×2 0.49 → 3×3 0.04razor-thin; only 3×2 usable
div1×2 0.98 → 2×2 0.72 → 2×3 0.28the rich, controllable channel

↳ a shaded band marks the 0.3–0.7 region where a score can actually move — most of the wide set sat outside it

The arithmetic cliff and the usable band One small-multiple panel per arithmetic operation: baseline strict-correct rate against difficulty rung, with the usable roughly 0.3 to 0.7 band shaded. Addition declines gently, multiplication falls almost vertically, and division declines broadly, so most difficulty rungs sit outside the band where a score can actually move. The arithmetic cliff — where each operation breaks Baseline strict-correct rate vs difficulty. Shaded = the 0.3–0.7 band where a score can actually move. 1.00.50 add · gentle slope d2d5d7 ◦ bullseye d5 = 0.48 sub · near-monotone d2d3d4d5 mul · the razor cliff 2×23×23×3 ▿ only 3×2 = 0.49 usable div · broad channel 1×22×22×3 The packed in-band set (mul 3×2, add d5/d6, sub d3/d4, div 2×2/2×3) all sit at p ∈ 0.28–0.72, baseline ≈ 0.48 — a ruler with headroom both ways, so a config can win or lose visibly. Marker = operation (● add · ■ sub · ▲ mul · ◆ div). Lesson: n=4 per rung is a lottery; ≥12, all operands controlled. add sub mul div usable band 0.3–0.7 bullseye (best-resolution rung)
The arithmetic cliff and the usable band One small-multiple panel per arithmetic operation: baseline strict-correct rate against difficulty rung, with the usable roughly 0.3 to 0.7 band shaded. Addition declines gently, multiplication falls almost vertically, and division declines broadly, so most difficulty rungs sit outside the band where a score can actually move. The arithmetic cliff — where each operation breaks Baseline strict-correct vs difficulty. Shaded = 0.3–0.7 band. add · gentle 1.50 d2d5d7 sub · monotone d2d3d4d5 mul · razor cliff 1.50 2×23×23×3 div · broad 1×22×22×3 ◦ bullseye = best-resolution rung (add d5, mul 3×2) In-band set sits at p 0.28–0.72, baseline ≈ 0.48 — a ruler that can win or lose visibly. Lesson: n=4 per rung is a lottery; use ≥12, all operands controlled. add sub mul div usable band 0.3–0.7
Fig 2 — the arithmetic cliff and the band carved out of it. One small-multiple panel per operation: baseline strict-correct rate vs difficulty rung, with the usable ~0.3–0.7 band shaded. Addition declines gently; multiplication falls almost vertically (2×2 0.80 → 3×3 ≈ 0, leaving a single usable rung); division declines broadly. Bullseyes (add_d5, mul_3×2) marked. Operation by marker shape, not colour.
source difficulty-ladder sweep · 16 items/rung · 8 seeds · baseline-onlytype data-grounded calibrationsafety ops by marker shape; band by shading

Two methodology lessons fell out of building this, and they generalise to every model in the lab. (1) n=4 items per rung is a lottery. A famous sub_d4 = 0.03 "dip" turned out to be an artifact of 4-item sampling plus a generator bug (only the minuend's digits were controlled, so each rung was a difficulty grab-bag). Control all operands; ≥12 items per rung; the dip vanished. (2) The cell cache had a contamination bug. The harness keyed result cells on (config_id, probe_name, seed) with no content check — change a probeset while keeping the names (items-per-rung 4→16 shifts the RNG stream, so cal_sub_d4_i00 is now a different problem) and it silently resumed over stale cells. The fix: content-hash the battery into the results filename, so any change auto-forks a fresh file. Neither is glamorous; both would have quietly poisoned every number after them.

§3Split-pass — damping both copies is a real mechanism

The first thing that actually moved the needle: take a layer, duplicate it, and damp both the original pass and the copy. On L1 and L10 specifically (not the "refine zone" L5–12 we'd guessed), this buys +0.11–0.12 strict math, confirmed at 24 seeds, t ≈ +6. split_1_a50_a70 = 0.53 strict, t +6.2.

Don't apply the layer's contribution in one go. Apply a scaled-back version, let the residual stream move, then run the layer again on that moved stream and apply another scaled-back version — two gentle nudges instead of one shove. What makes this its own mechanism is that on the second nudge the layer re-evaluates from the stream's new position, so it contributes a fresh opinion, not a scaled copy of its first.

The arithmetic, precisely — why split ≠ a stronger single pass

α is the per-pass damping and Δ(x) = block(x) − x the layer's residual contribution. A single damped pass computes the update once, at the original input x. A split pass computes it twice, and the second time the block sees the already-moved stream:

# single:  x + α·Δ(x)

# split:   x₁ = x + α₀·Δ(x)      ← first nudge, evaluated at x
          x₂ = x₁ + α₁·Δ(x₁)    ← second nudge, re-evaluated at x₁

Because the block is nonlinear, Δ(x₁) ≠ Δ(x). So x + α₀·Δ(x) + α₁·Δ(x₁) is not the vector x + (α₀+α₁)·Δ(x) — which is all a single pass at strength α₀+α₁ could produce. One Euler step versus two half-steps: the second corrects for where the first landed.

↳ the layer rotates its opinion 42° between sub-steps — a fresh read, not a scaled copy

Split-pass curvature The L1 residual at one answer token, showing how a single α=1.5 pass and a split pass at the same total Σα peel apart. The layer rotates its opinion about 42° between sub-steps, so the split re-evaluates rather than scaling one direction; the single-minus-split gap has a closed form that held to 1.6%. A single pass and a split pass at equal Σα do not coincide MiniCPM5-1B · L1 residual at the answer token (probe “4827 + 3596”, Σα=1.5) · the split re-evaluates the layer between sub-steps ① one shove vs split L1 residual, PC1/PC2 · Σα=1.5 PC1 (residual at answer token) PC2 baseline α=1 single α=1.5 ② opinion rotates per step cos(Δᵢ, Δ₀) · Σα=1.5 avg cos(Δ₁,Δ₀) = 0.745 1.00.90.80.70.6 012345 sub-step i ③ gap grows with splitting gap_frac · avg over 4 probes 0.2.4.6 k=2k=3k=4 Σα=1.0 Σα=1.5 The endpoint gap has a closed form — single − split = (Σα/k)·Σᵢ(Δ(x) − Δ(xᵢ)) — which held numerically to 1.6%. k=2 k=3 k=4 k=6 single shove (Σα=1.5) baseline (α=1) x (L1 in) A single damped pass can only slide the residual along the Δ(x) line; the split steps off it. The effect is the layer re-reading the moved stream — more sub-steps, the further from a single shove.
Split-pass curvature The L1 residual at one answer token, showing how a single α=1.5 pass and a split pass at the same total Σα peel apart. The layer rotates its opinion about 42° between sub-steps, so the split re-evaluates rather than scaling one direction; the single-minus-split gap has a closed form that held to 1.6%. One pass and a split pass at equal Σα don’t coincide MiniCPM5-1B · L1 residual at the answer token probe “4827 + 3596” · Σα=1.5 · split re-evaluates per step ① one shove vs split — the paths peel apart PC1 (residual at answer token) PC2 baseline α=1 single α=1.5 ② opinion rotates per sub-step avg cos(Δ₁,Δ₀) = 0.745 1.00.90.80.70.6 012345 sub-step i ③ gap grows with splitting 0.2.4.6 k=2k=3k=4 Σα=1.0 Σα=1.5 closed form: single − split = (Σα/k)·Σᵢ(Δ(x)−Δ(xᵢ)) — held to 1.6% k2 k3 k4 k6 single shove baseline α=1 x (L1 in) · origin A single damped pass can only slide the residual along Δ(x); the split steps off it — the layer re-reads the moved stream, landing further off with every sub-step.
Fig 3 — split-pass curvature (the geometry). The L1 residual at one answer token. (a) the one-shot α=1.5 pass and the split paths at the same Σα peel apart — the split re-evaluates between sub-steps and lands elsewhere; (b) the opinion rotates each sub-step, cos(Δ₁,Δ₀) = 0.745 at k=2 (≈42°); (c) the split-vs-single gap grows with k and Σα. The endpoint gap has a closed form, single − split = (Σα/k)·Σᵢ(Δ(x) − Δ(xᵢ)), which held numerically to 1.6% — the divergence is provably nothing but the layer's change of opinion.
source split_curvature_probe.npz · L1 residual vectorstype data-grounded; gap closed-form to 1.6%safety paths by curvature + marker; no red/green

And it isn't only those three controls. We swept a single damped pass of L1 across the whole single-knob range (α = 0.5 → 1.5, the entire envelope a single α can reach). It tops out at +0.028 (α ≈ 0.6) and craters under amplification (α = 1.5 → −0.115); it never clears baseline by more than noise. The best split/stack sits at +0.153. No single α comes close: a +0.125 gap, ~5×. And at the same total dose Σα = 1.5, one pass scores −0.115 and the split scores +0.153, a 0.27 swing that is pure re-evaluation. (Cross-checked across two independent sweep files: L1 at α = 1.30 gives Δ −0.080 in both to four decimals, so the comparison rides on Δ-vs-baseline, where the constant harness offset cancels.)

Where single-α is trapped — the off-axis claim

observation a single α on L1 buys at most +0.03 and is actively harmful when amplified; the split at identical Σα buys +0.15. interpretation a single α can only slide the residual along the Δ(x) line, and that line never gets above baseline — the gain lives off-axis, where only the re-evaluating split can reach. The split isn't a tidier route to a place single-α could reach; it reaches a place single-α can't. This is the behavioural face of the geometry in Fig 1.

↳ same knob budget, opposite outcomes — the split stays above the single at every dose

Single-α versus split Math-probe score against dose for a single-α pass versus a split pass, each config measured against its own baseline. At the same total Σα the split stays above the single at every dose — the same knob budget, opposite outcomes — with a 0.27 swing at Σα = 1.5. One pass can’t buy what splitting buys MiniCPM5-1B · L1 · Δ strict-math vs own baseline · 18 shared math probes · each config against its own file baseline +.15+.10+.05 0−.05−.10 Δ strict-math vs baseline baseline (Δ = 0) 0.51.01.52.0 Σα (cumulative alpha on L1) +.028 same Σα = 1.5 Δ-swing +0.27 single −.115 → split +.153 single damped pass (Σα = α) split, k = 2 (Σα sweep) k3 k4 k6 (stacks) Same budget, opposite outcomes. A single α buys at most +0.03 and turns harmful when amplified. Splitting the same Σα across re-evaluated passes holds +0.15 — a place a single α can’t reach.
Single-α versus split Math-probe score against dose for a single-α pass versus a split pass, each config measured against its own baseline. At the same total Σα the split stays above the single at every dose — the same knob budget, opposite outcomes — with a 0.27 swing at Σα = 1.5. One pass can’t buy what splitting buys MiniCPM5-1B · L1 · Δ strict-math vs own baseline 18 shared math probes · each config vs its own file +.15+.10+.05 0−.05−.10 Δ strict-math vs baseline Δ = 0 0.51.01.52.0 Σα (cumulative alpha on L1) +.028 same Σα = 1.5 swing +0.27 single damped pass (Σα = α) split, k = 2 (Σα sweep) k3 k4 k6 (stacks) Same budget, opposite outcomes. A single α buys at most +0.03 and turns harmful when amplified. Splitting the same Σα across re-evaluated passes holds +0.15 — a place a single α can’t reach.
Fig 4 — single-α vs split, on the 18 shared math probes (each config against its own baseline). The single-pass curve humps to +0.028 near α 0.6, crosses zero at α 1.0, and falls to −0.115 by Σα 1.5; the split k=2 curve sweeps Σα alongside and stays above the single at every dose, while high-k stacks (k=3–6) sit higher still near the peak. The arrow marks the same-dose 0.27 swing at Σα = 1.5.
source single_alpha_vs_split_math18.json · Δ vs own-file baselinetype data-grounded; two-file cross-checksafety series by line-style + marker; no red/green

§4The Σα-law

Take layer L, give it k passes with a profile of alphas, and define Σα = the sum of all per-pass alphas on that layer.

The claim: Σα is the governing variable — not the copy count, not the ramp shape, not which particular pass carries which α. The cumulative alpha sets the score.

A caveat on the word "law." This is an empirical regularity, not a theorem: strong enough to name, not proven universal. It earns the name here: the pooled regression (§6) fits it at R² = 0.74, and the same Σα-governance recurs on Granite. But it's one layer of one 1B model plus a cross-model echo; the crest drifts by channel; nothing here derives it from first principles. That's the bar this lab holds. Σα graduated to a named law on the strength of the regression and the transfer, where Granite's weaker combo-stacking pattern stayed a "depth-separation heuristic" precisely because it hadn't.

config (L1 stack-ramp)profileΣαmath
stack_1_k2…k8 (conserve)[1/k] × k1.00.52–0.55 — flat across k=2→8
stack_1_k5decay[1, .5, .25, .125, .06]1.940.44 (n.s.) — survives
stack_1_k8decay[1, .5, …]1.990.44 (n.s.) — survives
stack_1_k5dec[1, .8, .6, .4, .2]3.00.26 — cratering
stack_1_k5inc[.2, .4, .6, .8, 1]3.00.16 — worse (back-loaded)
stack_1_k8dec / k8inclinspace4.80.000 — dead

Read down the Σα column and the score tracks it, not the shape. The conserve row (Σα = 1) is flat from k=2 to k=8 — once total update is fixed, adding copies does nothing. A fine scan then sharpened it: the peak isn't at Σα = 1 (just the lowest densely-sampled cell). On L1 it sits at Σα ≈ 1.25, on a broad 1.1–1.5 ridge, fading by ~2.0, cratering by ~3, and reaching full residual-norm collapse around Σα ≈ 4.8.

↳ the signature plot — k spreads the curve vertically (gain), it does not move the peak horizontally

The Σα curve Strict-math change against total Σα on layer L1: one dose-response hump that peaks in the 1.25 to 1.5 ridge, crosses zero past 2, and flattens into a death floor near 4.8. Overlaid copy-count series show that k spreads the curve vertically without moving the peak, spanning four labelled regimes from conserve to norm-collapse. The Σα-law — one dose-response governs the whole specimen Layer 1 of MiniCPM5-1B. x = Σα (cumulative per-pass damping). y = strict-math Δ vs baseline (v3, base 0.417). Δ 0 +.13 −.16 −.42 12345 Σα → conserve repair over-drive norm-collapse Σα ≈ 1.25 ridge (1.1–1.5) Σα ≈ 4.8: residual-norm floor, score 0.0 same Σα, back-loaded → worse k is a gain multiplier, Σα is the sign: below peak k2 → k6 lifts +7.6 → +9.7 above peak k deepens the crater (L11 @ Σα 2: k2 −9.5 → k3 −17.9) Read down the Σα axis and the score tracks it, not the copy count or ramp shape. Pooled regression over 35 L1 configs fits the hump at R² = 0.74; a concentration penalty (Σa²) explains why flat beats ramp and k6 beats k4 at the same dose.
The Σα curve Strict-math change against total Σα on layer L1: one dose-response hump that peaks in the 1.25 to 1.5 ridge, crosses zero past 2, and flattens into a death floor near 4.8. Overlaid copy-count series show that k spreads the curve vertically without moving the peak, spanning four labelled regimes from conserve to norm-collapse. The Σα-law — one dose-response governs all Layer 1 of MiniCPM5-1B. x = Σα (cumulative damping). y = strict-math Δ vs baseline (v3, base 0.417). Δ0 +.13 −.16 −.42 12345 Σα → Σα ≈ 1.25 ridge 1.1–1.5 conserve over-drive norm-collapse Σα 4.8: floor score 0.0 k is a gain multiplier, Σα is the sign: below peak k2 → k6 lifts +7.6 → +9.7 above peak k deepens the crater (L11 @ Σα 2: k2 −9.5 → k3 −17.9 · back-loaded ∘ = worse) Score tracks the Σα axis, not the copy count or ramp shape. Pooled regression over 35 L1 configs fits the hump at R² = 0.74; a concentration penalty (Σa²) explains why flat beats ramp and k6 beats k4 at the same dose.
Fig 5 — the Σα curve (the signature plot of the whole specimen). X = Σα on L1, Y = strict-math Δ vs baseline. One smooth dose-response hump: rising from below 1, peaking in the ~1.25–1.5 ridge, decaying through ~2, crossing zero, then plunging into the crater and flattening at the ~4.8 death floor. Overlaid k=2 / k=4 / k=6 series show k spreading the curve vertically — helpful below the peak, harmful above it — without moving the peak. The four regimes annotated: conserve / repair / over-drive / norm-collapse.
source fig_sigma_law.json + sigma_kfill.py · in-band ruler, Δ vs own baselinetype data-grounded dose-responsesafety k-series by marker shape; regimes labelled in text

Honesty about the peak. "Σα ≈ 1.25" is the L1 finescan answer, but it's not clean across the board. A separate distributed sweep found Σ1.50 k6 stacks beating the Σ1.25 band at the very top (champion shp1_S150_k6_flat, t +7.33), and the pooled regression put the math optimum nearer Σα ≈ 1.65 versus ~1.5 for the balanced battery. So the truthful statement is: a broad peak in the ~1.25–1.65 region, drifting higher for the narrow math channel, not a single magic constant. The ridge is real; its exact crest is channel-dependent. That tension is in the data and stays in the writeup.

§5One death, two doors

Over-drive (Σα ≫ 1) and negative-α reversal converge on the same failure. Grade the verbatim generations along the Σα climb and you watch the model die the same way each time: at Σα = 1 clean; at Σα ≈ 2 coherent but with arithmetic slips plus de-narration derail (the model wandering into MMLU-style narration); at Σα = 3 wounded (operand echo, CJK script leaking); at Σα ≈ 4.8 dead: 500000…0 digit-repetition, special tokens, random scripts.

Refuted — "the stack absorbs divergence"

observation a divergence sandwich diverge_567 (+.7 / −.5 / +.8 on L5/6/7) collapses to 0.00, while the control (+.7 / +.5 / +.8) holds at 0.27. interpretation it's the negation, not the perturbation, that kills it: the bracketing positive layers do not absorb a reversed middle layer. The verbatim of the collapsed run shows the same 0.0000…0 norm-collapse signature as over-drive: the two doors open onto the same room.

The mechanistic reading, consistent with Fig 1: L1's job is keeping the residual inside the norm band the downstream layernorms expect. You can break that from either side: pour too much in (over-drive) or push it backwards (negation). Either way the stream walks out of the band, the late layernorms see a vector they were never trained on, and the output head spills digits, special tokens, and whatever script is nearest in embedding space. L1 is simultaneously the most split-helpful layer and the most negation-fragile one (at α = −0.1, L1 → 0.03 vs L5 → 0.12). The leverage cuts both ways because it's the same leverage.

§6The degeneration rate — exposure, not capability

This is the result I'm fondest of, and it cost no compute: a metric computed over generations that were already stored. Different probe channels disagreed about whether a config was good: math liked high-k; the emotional-intelligence (eq) channel hated it. observation diffing the verbatim responses showed the disagreement is about length: math answers are ~16 tokens, eq answers ~96. interpretation the explanation is not "math and eq need different surgery"; it's exposure: a low per-token derailment probability is invisible in 16 tokens and compounds into a visible loss across 96.

So define a degeneration rate: the fraction of stored responses that derail (special-token leak + name:number line-loops, the same crater signature, appearing subclinically). It's monotone in both knobs: in k (0 → 5.0% from k4 → k12 at S150) and in Σα (0.8 → 11.7% from S150 → S250 at k6). Math sits near 0%: its short answers just don't expose the risk.

Take the eq channel, throw out only the derailed responses, and score the clean ones (conditional mean): at k10/k12 the clean-only eq is ≥ baseline (0.478 / 0.475 vs 0.472). The clean responses hold at or above baseline on every channel, including the one whose aggregate score the surgery tanked. What the surgery costs isn't content quality; it's the probability of derailing. The "eq champion" of the early board, dampall_a65, turns out to be a 14.6% derailment machine; the genuine stable champion, shp1_S150_k6_flat, degenerates 0.4% of the time, more stable than baseline's own 2.1%.

↳ throw out the derailed responses and the clean ones sit at/above baseline — the cost is risk, not quality

Exposure, not capability Left: degeneration rate rising with both copy count and Σα. Right: for the eq channel the aggregate score falls with copy count, but scoring only the non-derailed responses holds flat at or above the untouched baseline — the surgery's cost is derailment risk, not content quality. Derailment is a probability tax, not a capability loss MiniCPM5-1B · L1 split-pass damping · eq channel (96-tok) · “derail” = special-token leak or repeated-line loop degeneration rate (%) ① rises with copy-count k (Σα fixed 1.5) 04812 4681012 copies k 5.0% ② rises with dose Σα (k fixed 6) 04812 1.51.752.02.252.5 cumulative Σα 11.7% ③ eq score, change from baseline (per copy-count k) +.020+.010−.010 baseline (.472) basek4k6k8k10k12 0.8%0%0.8%2.1%3.3%5.0% copies k (with derail rate) clean-only stays ≥ baseline at every k aggregate dips below: the derail tax aggregate (all responses) clean-only (derails dropped) Past the k6 peak the aggregate eq score falls — but the non-derailed responses hold at baseline. The model isn’t getting dumber as you stack copies; it’s derailing more often. The cost is exposure, not capability — and a special-token ban would buy it back.
Exposure, not capability Left: degeneration rate rising with both copy count and Σα. Right: for the eq channel the aggregate score falls with copy count, but scoring only the non-derailed responses holds flat at or above the untouched baseline — the surgery's cost is derailment risk, not content quality. Derailment is a probability tax, not a capability loss MiniCPM5-1B · L1 split-pass damping · eq channel (96-tok) “derail” = special-token leak or repeated-line loop ① derail % rises with copy-count k (Σα 1.5) 04812 derail % 4681012 copies k 5.0% ② derail % rises with dose Σα (k 6) 04812 derail % 1.51.752.02.252.5 cumulative Σα 11.7% ③ eq score — change from baseline, per k aggregate clean-only (derails dropped) +.020+.010−.010 dashed = baseline eq (.472) basek4k6k8k10k12 0.8%0%0.8%2.1%3.3%5.0% copies k (derail rate under each) Past k6 the aggregate eq score falls — but the clean responses hold at baseline. Not dumber, just derailing more. The cost is exposure, not capability.
Fig 6 — exposure, not capability. Left: degeneration rate (%) rising monotonically with both copy count (at fixed Σα) and Σα (at fixed k). Right: the conditional-mean comparison — for the eq channel, the aggregate score falls with k, but scoring only the non-derailed responses holds flat at or above the untouched-model baseline (dashed). The surgery improves content quality and only costs derailment probability.
source stored generations · special-token + line-loop detectortype data-grounded; zero added compute (regrade)safety series by hatch/marker; baseline dashed

§7It's all one cost surface

The separate observations (flat-beats-ramp, k6-beats-k4 below peak, the dose hump) are not separate. Pool all 35 L1 finescan configs (flats, ramps, k-ladders) and fit:

math  =  β₀ + β₁·Σα + β₂·Σα² + β₃·Σα²(profile)
      →  R² = 0.74,   β₃ = −0.041 ± 0.009  (t −4.9)

The Σα² term gives the dose parabola (peak ≈ 1.65 for math); the profile-curvature term, Σa² summed over the per-pass alphas, is a penalty for concentration: spreading the same Σα across flatter, smaller passes costs less than dumping it into one big pass. "Flat beats ramp" and "k6 beats k4" are the same phenomenon: both lower Σa² at fixed Σα.

Where the regression fails is itself informative: the residual-norm wall is not smooth. A k1→k2 rescue at Σ1.5 was observed at +0.252 against a quadratic prediction of ~+0.05: a single concentrated pass breaks beyond what smooth curvature predicts. The model is approximately additive inside its trained envelope and catastrophically nonlinear at the norm walls: a regime-linear residual stream, polite in the middle, lethal at the edges. Per-layer the additivity has a spectrum: L0 is an extreme outlier (−0.19; it wants one concentrated write, corroborating its amplification-site identity), L1 (+0.035) and L23 (+0.049) are the only saturating layers (splitting the dose helps, exactly why L1 rewards high k, a suggestive bookend symmetry), and the mid-stack is near-additive.

§8What did it actually measure?

Mostly not new capability. The throughline of the whole MiniCPM5 board is that the gains are de-collapse / compliance relief: surgery unclogs a model that was strangling its own output on a stalled valve, rather than teaching it arithmetic it didn't know. The overall v3-battery champ, damp5_a80_damp23_a80 (L5 semantic entry + L23 output gate, both α0.8, bal t +4.12), is an additivity bet that paid off, but it's relieving pathology, not adding a skill. The multiple-choice "winners" (dampall_a64/65/66) are pure A-attractor de-collapse: the model stops defaulting to answer A.

This is why the next fork was built to falsify the capability story: a chain-of-thought battery. If a config's win survives when the model is actually reasoning step-by-step, it's capability; if it evaporates, it was compliance relief. That fork is built but not fully run. The one suggestive smoke result is worth flagging as a hypothesis, not a finding: observation dampall_a90 beat baseline in CoT smoke (0.074 vs 0.046). interpretation if a 1B can't sustain chain-of-thought because it collapses into loops, then de-collapse surgery might be a reasoning prosthesis: not a capability test but a capability enabler. Unproven. The most interesting thread left on the table when the model was closed out.

§9Methodology lessons (the durable part)

Read these before adding runs to any model, not just this one.

#Lesson
1Content-hash the battery into the results filename. Cell caches keyed on (config, probe, seed) silently resume over stale cells when a probeset changes under a stable name. Auto-fork on content change.
2Cap batch width explicitly (max_batch_rows). Short uniform prompts (math ~15 tok) balloon to ~500-wide under a token-based cap, past MLX's ~256-row decode knee → throughput collapse. The cap only bites the short channels.
3≥12 items per rung, all operands controlled. Small rungs are hostage to one derail-prone item; uncontrolled generators turn a difficulty rung into a grab-bag.
4r is a std-dev ratio, invariant to N. Persistent seed-sensitivity (r = std(per-seed Δ) / std(baseline noise) > 1) is real effect-heterogeneity, not low power — more seeds sharpen the mean (t↑) but don't drop r. Stop chasing r < 1 on the math channel; report the means.
5The de-narration derail is the irreducible floor. "Question: In the following…" appears in every config including healthy ones; surgery modulates how much, never eliminates it — the same collapse the project studies, subclinical.
6Greedy n=1 fabricates false positives (carried from HRM, re-confirmed here). Always sample, always multi-seed.

Caveats

Medium confidence, and here is what that means. The Σα-law itself graduated (R² = 0.74 on the fit, plus a predicted transfer to Granite), but its peak is a channel-dependent ridge, not a constant: quoting "Σα = 1.25" without the 1.25–1.65 range and the math-vs-balanced drift is over-claiming. And there is no shippable model win here: the best math specialist (split_1_a50_a70) loses overall to a de-collapse config, and even that is pathology relief. Read a method and a regularity into this page, not a capability claim.

Build notes & lineage

MiniCPM5 is the continuous-damping branch of the line — the model where the engine moved from llama.cpp static GGUFs to live MLX in-process patching, which is what made everything above possible. The Σα-law born here transferred, with a predicted downshift, to Granite; the "I built the ruler before trusting it" lesson is shared across the lab. Engine: MLX in-process patching, mlx-zaya venv, mlx-lm 0.31.3. Surgery primitive ScaledLayer + apply_config in shared/mlx_sweep_harness.py; batteries probes_combined_v3 / probes_math_wide (load_math_inband) / probes_eq_bench_v4; all generations stored for regrade. Technique credit and the grader-gaming taxonomy live on the shared Methods & references page. Sibling specimens: Gemma 4, Granite, HRM. Run locally on a 16 GB Mac Mini.