Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Secant: Calibrated Weight Edits, Quantized Files, and Constrained LoRA

Abstract

Editing a language model’s weights can change how it responds without retraining the whole model. Turning that idea into a reliable workflow requires answering three questions: how large should an edit be, which bytes should change in a compressed checkpoint, and how can later fine-tuning respect the edited directions?

Secant combines Rust checkpoint tools with a PyTorch adapter layer. Target-Shift Calibration sizes an edit to produce a requested change at a chosen layer’s reference activation. The equality is exact in real arithmetic; reported numerical tests across 15 models have a maximum float64 error of about 7.99e-15. Quantized block editing updates only the affected groups of 32 weights in Q8_0 files. Reordering complete 128-column panels preserves those blocks, whereas Q4_K groups 256 weights together and does not generally preserve the same boundary. The standalone patch command therefore refuses Q4_K. Project-Then-Heal constrains a LoRA adapter, a small trainable addition to a frozen model, so its output is perpendicular to supplied directions. It applies the constraint during each forward pass because projecting gradients alone need not survive AdamW’s coordinate-wise scaling.

The reported experiments measure both local numerical properties and model responses across six evaluation domains (MATH-500, GSM8K, MMLU-Pro, HumanEval, ASan-30, and paired ASAN-120; 59,440 retained H100 evaluation rows: 59,140 completed-cohort rows across 17 completed benchmark model identities in the Stage-2 + RMS suites from 0.8B to 32.8B plus 300 partial Gemma-2-27B baseline rows, alongside a 17-checkpoint PTH study from 0.8B to 72.7B, a 15-model calibration/adapter study, and a 4-arm Qwen3.5-0.8B MATH-500 attribution test), directly extending Takehi et al.'s Qwen3.5-0.8B loop-suppression study (Sparks of Weight-Space Programming, Nov 2, 2026, where an autonomous LLM agent gpt-6-astra / Astra traced activations and edited weights inside a Python kernel under a 10/25/50 forward-pass budget) to multi-subspace calibration with norm-matched random controls, compressed GGUF block surgery, subspace-locked LoRA healing, and paired vulnerability/benign controls.

On Qwen3.5-0.8B MATH-500 (n = 100, 4,096 tokens), setting enable_thinking=False lifts unedited accuracy from 1.0% (12.0% whole-response) to 48.0% (p=1.42×10−14p = 1.42 \times 10^{-14}), matching Takehi et al.'s 48.1% edited score at 32,768 tokens consistent with weight subtraction unblocking pre-existing math capability rather than teaching new math; with <think> enabled, our 0.016% B1 edit raises </think> closure 64x (1% -> 64%) and final accuracy to 24.0% (31.0% whole-response), whereas across three independent orthogonal norm-matched random seeds (seed_1..seed_3, 20261108..20261110) on the exact same 64 columns, random edits close 2.0%, 6.0%, and 1.0% (mean 3.0% ± 2.6%, 0/100 closed by ≥2/3\ge 2/3 majority vote) and score 0.0%, 2.0%, and 1.0% final accuracy (mean 1.0% ± 1.0%, 0/100 solved by ≥2/3\ge 2/3 majority vote; exact McNemar p≤1.05×10−5p \le 1.05 \times 10^{-5}, Holm-adjusted p≤8.39×10−5p \le 8.39 \times 10^{-5} across all 3 seeds). On 30 crash-triage prompts, calibrated edits to Qwen3.5-4B raised completion within a fixed token limit from 0/30 to 21/30, then 30/30 at a higher loop-edit dose (reported paired p = 1.86e-9 against baseline, with strict root-cause attribution rising from 0/30 to 19/30). In the 15-model adapter comparison (0.8B to 32.8B), Project-Then-Heal’s relative weight-update leakage into the protected directions was 1.78e-10 to 8.67e-10, compared with 0.33% to 1.67% for gradient-projected AdamW. These are results for the stated experiments. Calibration at one reference input does not guarantee behavior on other prompts, and a local adapter constraint does not prevent later layers or storage rounding from changing the result.

The same tools also audit weights. In one planted rank-1 edit per model, on SmolLM2-1.7B and Qwen3.5-4B, the edit stayed invisible to secant audit-trojan across the pre-specified doses (0.10% to 4.00%) until the post-hoc doses reached the nominal singular-value equality reference g∗=σ1(W)/∥W∥Fg^* = \sigma_1(W)/\lVert W\rVert_F (8.65% and 6.57% of the weight norm, where ∥ΔW∥2=σ1(W)\lVert\Delta W\rVert_2 = \sigma_1(W)). The trigger token reached rank 1 or 2 in the vocabulary projection at 8%, and the automatic sibling outlier test fired at 12%, with no false positives on the unedited bases. Across the 10-checkpoint corpus (six quantized formats present: Q8_0, Q4_K, Q6_K, Q2_K, Q3_K, Q4_0; 186,870,528 quantized blocks across 912 quantized tensors, plus 3,258,570,112 float elements across the 10 tested production GGUF and SafeTensors checkpoints), secant sanitize (Rule B3-2A) permits legitimate zero (0x0000) and FP16 subnormal (0x0001..0x03FF) multiplicative block scales by default (0 observed false positives across 10 / 10 checkpoints and 8,992,791 of 33,792,000 header scale fields d, dmin across 16,896,000 Q4_K superblocks), while flagging 100% of planted NaN and ±Inf block scales ((bits & 0x7C00) == 0x7C00), near-zero divisor scales (Rule B3-2B, < 1e-12f), and out-of-bounds integer routing indices (Rule B3-3).

On 14 five-arm models with public benchmarks (27,580 five-arm evaluations plus 300 base-only Gemma-2-27B evaluations = 27,880 rows across GSM8K, MATH-500, MMLU-Pro, HumanEval, and ASan-30), the calibrated edits left scores where equal-size random edits left them. Across a 6-model RMS-relative dosing study (24,000 benchmark evaluations), writer output norms σwriter\sigma_{\text{writer}} spanned 5.85 to 78.15, showing that a fixed unit shift ranges from 1.28% to 17.10% of the writer norm across architectures. Unhealed composed edits matched norm-matched random controls across all 6 models, while adding ProjectThenHealLinear (3.18e-17 to 5.07e-17 relative subspace leakage) raised GSM8K (87% to 93%, unadjusted p = 0.031) on Qwen2.5-Math-7B-Instruct and HumanEval (36% to 42%, unadjusted p = 0.238) on Qwen2.5-Coder-7B-Instruct; neither gain survives Holm-Bonferroni correction across the full test family, and direct heal-the-base (base_lora_1p0x) and healed-random (random_healed_rms_1p0x) control arms show that on Qwen2.5-Math-7B-Instruct both controls also reach 93% on GSM8K (p = 1.000 vs. composed_healed_rms_1p0x, attributing the 87% -> 93% gain to the 60-step LoRA adaptation pass while ProjectThenHealLinear reduces domain-subspace leakage from 4.75% to 5.08e-17), whereas on Qwen2.5-Coder-7B-Instruct HumanEval base_lora_1p0x (37%) and random_healed_rms_1p0x (35%) do not reproduce composed_healed_rms_1p0x (42%, +5 and +7 items, p = 0.332 and 0.189). Finally, on the paired ASAN-120 vulnerability and patched-benign twin benchmark (7,560 evaluations across 9 models ×\times 7 arms), patched twins expose one-sided rubber-stamping in non-reasoning models (BA = 0.475..0.533), while on <think> reasoning models composed_rms_1p0x beats random_rms_1p0x 4/4 on balanced accuracy and lifts strict root-cause recall by +6.7 to +10.0 percentage points over base on DeepSeek-R1-Distill-Llama-8B and Qwen3-14B.

Keywords:weight-space programmingmechanistic interpretabilityactivation steeringLoRAGGUFSafeTensors

Author: Nathan Keys (m00dy, @professor-moody)
Version: v0.3.0 (2026-11-09 — Horizon 1 Edition; body text frozen upon v0.3.0 release tag; subsequent Horizon 2 studies append to dated addenda)


Reading Guide and Terminology

A writer is a weight matrix that contributes to a layer’s output. A direction is a vector in that output space; several directions span a subspace. A projection removes or retains the component along that subspace. Leakage measures how much of an adapter or weight update remains along protected directions. It is a numerical measurement, not a direct measure of model behavior.

Throughout the derivations, D stores protected directions as rows, W is a weight matrix, and Delta W is its change. The equations use column-vector activations unless stated otherwise. “B” in a model size means billion parameters; the experiment labels B1, B2, and B3 instead identify loop, refusal, and root-cause directions.

SectionQuestionMain point
1. Choosing and sizing editsHow can several edits coexist, and how large should each be?Make their output directions perpendicular, then size each edit for a measured reference input.
2. Editing compressed checkpointsWhich stored blocks must change?Whole 128-column panels contain complete Q8_0 blocks, but split Q4_K superblocks. Editing and quantizing can still give different numerical results.
3. Constraining LoRAHow can fine-tuning respect protected directions?Apply the projection inside the adapter’s forward pass and measure rounding error after export.
4. ExperimentsWhat was measured?Separate reference-input checks, adapter tests, and response benchmarks. They support different claims.
5. Static weight auditingCan the same reader find a planted edit or a hostile quantized scale?A rank-1 edit hides until its singular value reaches σ₁; Rule B3-2A catches NaN/Inf quantized scales while permitting legitimate Q8_0/Q4_K subnormals (0 false positives).
6. Related work and limitsWhich ideas come from prior work?Projection and constrained adapters are established methods; this paper evaluates their use in Secant’s file-editing workflow.

Four-stage Secant diagram showing contrastive activation distributions and a per-layer SNR curve, two-pass Gram-Schmidt and sparse column support, Q8_0 versus Q4_K block alignment under the 128-column panel permutation, and the ProjectThenHealLinear plane versus AdamW drift

Figure 1:The paper’s four parts in one picture. Stage 1 and the Stage 2 support strip are drawn from the SmolLM2-1.7B demo inputs and the real secant analyze and secant compose outputs. Stage 3 uses the exact ggml block layouts (34 bytes per 32 Q8_0 weights, 144 bytes per 256 Q4_K weights). Stage 4 is a geometric sketch whose bars show the measured step-60 ranges from Section 4.1. Section 1 covers Stages 1 and 2, Section 2 covers Stage 3, and Section 3 covers Stage 4.

1. Choose Independent Directions and Size Each Edit

Several candidate behavior directions can overlap. Removing that overlap lets the linear edits act independently along the resulting directions, up to numerical error. It does not make the behaviors themselves independent. Secant then sizes each edit using the activation measured at the chosen layer.

1.1 Make the Directions Perpendicular

Gram-Schmidt subtracts each direction’s overlap with the directions already selected, then scales it to unit length. Secant uses two passes in 64-bit floating point to reduce rounding error.

Let D=[q1,…,qk]⊤∈Rk×doutD = [q_1, \dots, q_k]^\top \in \mathbb{R}^{k \times d_{\text{out}}} hold the resulting unit directions as rows. The Python API checks both unit length and perpendicularity through

max⁡i,j∣(DD⊤−Ik)ij∣<10−12.\max_{i,j} \big|(D D^\top - I_k)_{ij}\big| < 10^{-12}.

It rejects dependent directions or a failed tolerance check. Rust compose uses an absolute residual-norm floor and checks pairwise cosines; its acceptance rule differs for unnormalized inputs. The theory guide specifies both contracts. Across 120 seeded Gaussian test bases, the reported maximum Gram-matrix error was 9.99×10−169.99 \times 10^{-16}.

1.2 Remove a Component or Add a Measured Shift

The first operation removes part of a writer’s output along a chosen direction. The second adds a change along that direction using only selected input columns. Both are direct matrix calculations.

For a linear writer matrix W∈Rdout×dinW \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}} mapping input activations x∈Rdinx \in \mathbb{R}^{d_{\text{in}}} to output activations y=Wx∈Rdouty = W x \in \mathbb{R}^{d_{\text{out}}}, Secant implements two closed-form operators:

  1. Projector subtraction (projector-subtract):

    W′=(Idout−γqbqb⊤)W=W−γqb(qb⊤W)W' = (I_{d_{\text{out}}} - \gamma q_b q_b^\top) W = W - \gamma q_b (q_b^\top W)

    At γ=1\gamma = 1, the edited matrix satisfies qb⊤W′=0q_b^\top W' = 0 in exact arithmetic for every input xx.

  2. Target-Shift Calibrated sparse rank-1 column edit (rank1-columns): Given a sparse support S⊂{0,…,din−1}S \subset \{0, \dots, d_{\text{in}}-1\} of ∣S∣=K|S| = K input columns selected by descending reference activation magnitude ∣href,j∣|h_{\text{ref},j}|, let hS∈Rdinh_S \in \mathbb{R}^{d_{\text{in}}} denote the vector equal to hrefh_{\text{ref}} on SS and 0 outside SS (with ∥hS∥2>0\|h_S\|_2 > 0). We define the rank-1 update:

    ΔW=sign(Δtarget)⋅β qb hS⊤\Delta W = \mathrm{sign}(\Delta_{\text{target}}) \cdot \beta \, q_b \, h_S^\top

    where the calibrated step size β\beta is solved analytically as:

    β=∣Δtarget∣∥hS∥22\beta = \frac{|\Delta_{\text{target}}|}{\|h_S\|_2^2}

Substituting x=hrefx = h_{\text{ref}} yields a scale-invariant directional shift along qbq_b regardless of layer width dind_{\text{in}} or activation scale ∥hS∥2\|h_S\|_2:

⟨qb,ΔW href⟩=sign(Δtarget)⋅∣Δtarget∣∥hS∥22⟨hS,href⟩=Δtarget\begin{aligned} \langle q_b, \Delta W \, h_{\text{ref}} \rangle &= \mathrm{sign}(\Delta_{\text{target}}) \cdot \frac{|\Delta_{\text{target}}|}{\|h_S\|_2^2} \langle h_S, h_{\text{ref}} \rangle \\ &= \Delta_{\text{target}} \end{aligned}

And the Frobenius norm of the perturbation is inversely proportional to the active column energy:

∥ΔW∥F=∣Δtarget∣∥hS∥2\|\Delta W\|_{\mathrm{F}} = \frac{|\Delta_{\text{target}}|}{\|h_S\|_2}

Scope: The target equality holds at the reference input in exact arithmetic, with small numerical error in float64. For other inputs, the exact-arithmetic shift is multiplied by ⟨hS,x⟩/∥hS∥22\langle h_S,x\rangle / \|h_S\|_2^2. Storage in BF16, F16, or Q8_0 adds rounding error. Neither result guarantees a behavioral change; evaluate held-out prompts separately.

Relation to prior associative-memory and abliteration estimators: Algebraically, the step size β=∣Δtarget∣/∥hS∥22\beta = |\Delta_{\text{target}}| / \|h_S\|_2^2 is the isotropic (C=IC = I, minimum-Frobenius-norm Moore-Penrose pseudoinverse) special case of the rank-1 ROME update v=(C−1k∗)/(k∗⊤C−1k∗)v = (C^{-1} k_*) / (k_*^\top C^{-1} k_*) (Meng et al., NeurIPS 2022; extended to multi-edit MEMIT, Meng et al., ICLR 2023) restricted to the sparse top-KK column support SS. Covariance-whitened concept erasure was formalized in LEACE (Belrose et al., NeurIPS 2023), while multi-vector Gram-Schmidt orthogonalization and ridge-regularized multi-direction projection are used in G-Abliteration (Gülmez, Dec 2025), Norm-Preserving Biprojected Abliteration (Lai, Nov 2025), Obliteratus, llm-abliteration, apostate KCRN, and weightless. Secant’s specific contributions in this stage are (1) using activation-calibrated target shifts (β(dmodel,ℓ)=∣Δtarget(ℓ)∣/∥hS(ℓ)∥22\beta(d_{\text{model}}, \ell) = |\Delta_{\text{target}}(\ell)| / \|h_S(\ell)\|_2^2 and RMS-relative dosing Δtarget=α σwriter\Delta_{\text{target}} = \alpha\,\sigma_{\text{writer}}) for cross-model-size edit transfer (0.8B to 32.8B across 15 full models, plus 70.6B and 72.7B single-shard evaluations), and (2) coupling two-pass float64 Gram-Schmidt orthonormalization with the upper-triangular R−1R^{-1} cross-projection compensation system (Q⊤ΔW=R−⊤ΔtargetQ^\top \Delta W = R^{-\top} \Delta_{\text{target}}) so heterogeneous non-orthogonal edits each realize their exact reference shift simultaneously.

Section 1 takeaway: Make the directions perpendicular first, solve the upper-triangular R−1R^{-1} compensation system when composing non-orthogonal directions, and size each edit from the measured reference activation. The requested shift is exact at that reference input, up to float64 rounding. Behavior on other prompts has to be measured separately.


2. File Layout and Quantized Block Boundaries

A model file has two relevant layouts: the logical rows and columns of a matrix, and the groups of values stored together on disk. Some converters also reorder groups of columns. To edit the intended weights, the plan and checkpoint must agree on that order. To preserve neighboring bytes, the edit must respect the compressed format’s block boundaries.

2.1 Rows and Columns in the Two File Formats

The formats list dimensions in different orders, but the linear matrices considered here store each output row contiguously. The following offset is an element index; compressed formats need an additional mapping to block bytes.

In HuggingFace .safetensors, a 2-D linear weight matrix has shape = [d_out, d_in] with input axis shape[1] = d_in contiguous in memory. In ggml / .gguf, ne = [d_in, d_out] lists the contiguous axis first (ne[0] = d_in). Consequently, both formats share the identical row-major element offset for output row out∈{0,…,dout−1}\text{out} \in \{0, \dots, d_{\text{out}}-1\} and input column in∈{0,…,din−1}\text{in} \in \{0, \dots, d_{\text{in}}-1\}:

offset(out,in)=out⋅din+in\mathrm{offset}(\text{out}, \text{in}) = \text{out} \cdot d_{\text{in}} + \text{in}

2.2 Track Reordered Groups of 128 Columns

A panel is a group of 128 adjacent columns. The conversion described below moves whole panels and preserves the order within each one. The symbol Π128\Pi_{128} denotes that reordering. Undoing it requires the inverse mapping, not necessarily a second application of the same mapping.

On Qwen3.5 Gated DeltaNet layers, llama.cpp’s convert_hf_to_gguf.py reorders the input columns (din=nv⋅dvd_{\text{in}} = n_v \cdot d_v, with head width dv=128d_v = 128 and group ratio r=nv/nkr = n_v / n_k) of blk.N.ssm_out.weight from key-head-major to value-head-major order. Writing a HuggingFace 128-column panel index as h=k⋅r+jh = k \cdot r + j for k∈{0,…,nk−1}k \in \{0,\dots,n_k-1\} and j∈{0,…,r−1}j \in \{0,\dots,r-1\}, its GGUF panel index is:

π(k⋅r+j)=j⋅nk+k\pi(k \cdot r + j) = j \cdot n_k + k

Within each 128-column panel w∈{0,…,127}w \in \{0,\dots,127\}, the intra-panel offset is preserved:

colGGUF(h⋅128+w)=π(h)⋅128+w\text{col}_{\text{GGUF}}(h \cdot 128 + w) = \pi(h) \cdot 128 + w

When r=1r = 1 (Qwen3.5-0.8B, nk=nv=16n_k = n_v = 16), π\pi is the identity permutation. When r=2r = 2 (Qwen3.5-4B, nk=16,nv=32n_k = 16, n_v = 32), Π128\Pi_{128} is a non-trivial bijection on the 32 panels of width 128 corresponding to the transpose of a (16,2)(16, 2) grid into a (2,16)(2, 16) grid. Because r≠nkr \neq n_k, π\pi is not an involution (for example, π(1)=16\pi(1) = 16 whereas π(16)=8\pi(16) = 8); its inverse is:

π−1(g)=(g mod nk)⋅r+⌊g/nk⌋\pi^{-1}(g) = (g \bmod n_k) \cdot r + \lfloor g / n_k \rfloor

2.3 When Reordering Preserves Blocks, and When Editing Adds Error

There are two different questions here. Reordering complete blocks can preserve their bytes exactly. Changing their weights usually requires encoding them again, which introduces rounding error.

Proposition 1: complete Q8_0 blocks move without re-encoding. Let QBQ_B be a deterministic, position-independent encoder that quantizes aligned blocks of BB weights independently, and let DBD_B decode them. Assume rows contain complete blocks. If BB divides 128, every panel contains whole blocks. For Q8_0, four 32-weight blocks make one panel, so

Q32(Π128(W))=Π128block(Q32(W)).Q_{32}(\Pi_{128}(W)) = \Pi_{128}^{\text{block}}(Q_{32}(W)).

Here the right-hand permutation moves encoded blocks as units. The corresponding decoded arrays are identical. This equality concerns panel reordering, not an arbitrary weight edit.

Proposition 2: Q4_K can couple neighboring panels. A 256-weight superblock shares top-level scale and minimum parameters across two 128-column panels. A permutation that splits those pairs need not preserve the encoded result. Pair-preserving permutations, including the identity, are exceptions. Editing one panel can also change its neighbor’s reconstructed values. The standalone secant quant patch therefore accepts Q8_0 only.

Proposition 3: editing before and after quantization can differ. Fix the same additive update ΔW\Delta W in both paths and write Q^B=DB∘QB\hat Q_B = D_B \circ Q_B. Path 1 edits the original float weights, then quantizes. Path 2 starts from decoded quantized weights, edits them, then re-encodes the touched blocks. Define

e0=Q^B(W)−W,e1=Q^B(W+ΔW)−(W+ΔW),e2=Q^B(Q^B(W)+ΔW)−(Q^B(W)+ΔW).\begin{aligned} e_0 &= \hat Q_B(W)-W, \\ e_1 &= \hat Q_B(W+\Delta W)-(W+\Delta W), \\ e_2 &= \hat Q_B(\hat Q_B(W)+\Delta W)-(\hat Q_B(W)+\Delta W). \end{aligned}

Subtracting the two reconstructed results gives

Q^B(W+ΔW)−Q^B(Q^B(W)+ΔW)=e1−e0−e2.\begin{aligned} &\hat Q_B(W+\Delta W)-\hat Q_B(\hat Q_B(W)+\Delta W) \\ &\quad=e_1-e_0-e_2. \end{aligned}

The implementation copies untouched blocks byte-for-byte, so no assumption that repeated encoding is idempotent is needed there. On touched Q8_0 blocks, an ideal-arithmetic bound including FP16 scale rounding is

∣e1−e0−e2∣≤κ((3+κ)∥Wb∥∞+2∥ΔWb∥∞),|e_1-e_0-e_2|\le\kappa\big((3+\kappa)\|W_b\|_\infty+2\|\Delta W_b\|_\infty\big),

where

κ=1254+2−11.\kappa=\frac1{254}+2^{-11}.

This bound requires normal-range FP16 scales in all three encodings and excludes the encoder’s float32 arithmetic error. A projector edit recomputes its update from the current weights, so it need not use the same additive delta in both paths. See the quantized-weight guide for these assumptions and the full derivation.

The retained Qwen3.5-0.8B ssm_out experiment reported a target weight component decreasing from 0.5172 to 0.0079 with direct Q8_0 editing (about 98.5% removed). This measures a weight component, not a percentage of prompts. A separate whole-file experiment checked byte preservation outside the selected edits.

Relation to prior in-place GGUF and SafeTensors editing tools: In October 2026, Kiwimaker (apply_abliteration.py and apply_abliteration_v2.py) demonstrated in-place r+ memory-mapped (np.memmap via gguf.GGUFReader) editing of Q8_0 tensors inside .gguf shards with SHA-256 byte-identity verification of untouched offsets, while empirically skipping Q4_K tensors and dequantizing/re-quantizing full 2-D Q8_0 matrices in float64 via gguf-py. Also in October 2026, SC117 demonstrated byte-level in-place GGUF tensor transplantation (leaving 1,079 of 1,223 tensors byte-identical) and scale-preserving Q2_0 re-encoding against learned GSQ block scales. Existing .safetensors abliteration tools (jim-plus/llm-abliteration, NousResearch sharded_ablate.py, and abliterix) load tensors via safe_open and re-serialize modified shards from scratch via save_file(). Secant’s specific contributions in this stage are (1) in-place zero-copy mmap byte-slice surgery inside .safetensors files at [8 + N + BEGIN, 8 + N + END) without save_file() shard re-serialization, (2) sub-tensor compressed-domain Q8_0 block surgery directly on touched 34-byte block_q8_0 records (crates/secant-core/src/quant.rs) without full-tensor float64 matrix materialization, and (3) Propositions 1 to 3, which formally prove why 32-weight Q8_0 blocks commute with the Π128\Pi_{128} 128-column head-panel permutation (128=4×32128 = 4 \times 32) while 256-weight Q4_K superblocks straddle two 128-column heads and suffer cross-head scale leakage.

Section 2 takeaway: Both file formats use the same element offset, the ssm_out panel reordering has an exact inverse, and Q8_0 blocks fit wholly inside 128-column panels while Q4_K superblocks span two. Editing still re-encodes the touched blocks, so the Proposition 3 bound is the error to expect.


3. Project-Then-Heal: Keep Adapter Updates Out of Protected Directions

LoRA fine-tunes a model by adding a small trainable matrix product to a frozen weight matrix. Ordinary LoRA can add back a component that an earlier edit removed. Project-Then-Heal removes protected components from the adapter each time the model computes an output. This is a constraint on selected writers, not a guarantee about all later model behavior.

3.1 Why Projecting the Gradient Is Not Enough

A gradient gives a proposed update direction. AdamW rescales its coordinates using past gradients, so the final update can point somewhere else. A direction that was perpendicular before rescaling need not remain perpendicular afterward.

Suppose a writer matrix W0∈Rdout×dinW_0 \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}} has had an orthonormal row basis D∈Rk×doutD \in \mathbb{R}^{k \times d_{\text{out}}} (DD⊤=IkD D^\top = I_k) surgically excised, and we attach a rank-rr LoRA adapter ΔW=sBA\Delta W = s B A (s=αlora/rs = \alpha_{\text{lora}} / r, B∈Rdout×rB \in \mathbb{R}^{d_{\text{out}} \times r}, A∈Rr×dinA \in \mathbb{R}^{r \times d_{\text{in}}}).

If one projects only the gradient gt=P⊥∇BLtg_t = P_\perp \nabla_B \mathcal{L}_t using the orthogonal complement projector P⊥=Idout−D⊤DP_\perp = I_{d_{\text{out}}} - D^\top D and passes gtg_t into AdamW, the first moment mt=β1mt−1+(1−β1)gtm_t = \beta_1 m_{t-1} + (1 - \beta_1) g_t remains in col(P⊥)=ker⁡(D)\mathrm{col}(P_\perp) = \ker(D). However, AdamW’s parameter update multiplies m^t\hat{m}_t by a non-isotropic diagonal preconditioner Λt=diag((v^t+ϵ)−1)\Lambda_t = \mathrm{diag}\big((\sqrt{\hat{v}_t} + \epsilon)^{-1}\big):

ΔBt=−η(Λtm^t+λBt−1)\Delta B_t = -\eta \big( \Lambda_t \hat{m}_t + \lambda B_{t-1} \big)

For a general projector and unequal coordinate scales, the update can have a component in the protected directions:

DΛtP⊥≠0.D \Lambda_t P_\perp \neq 0.

This is a possible failure of invariance, not a claim that every AdamW step must leak. Compatible scalings and axis-aligned protected directions are exceptions. The first-moment statement above also assumes its initial state lies in the allowed subspace. For a matrix-valued adapter, the diagonal-rescaling argument applies to each column, whose AdamW scales may differ.

This non-commutativity between Euclidean orthogonal gradient projection and AdamW’s diagonal second-moment preconditioner was independently formalized in October 2026 by Chen et al. (GOAL, Appendix M and Table 7), who defined the gradient-step quantity Li,tAdam\mathcal{L}_{i,t}^{\text{Adam}} (“residual refusal-subspace leakage after AdamW preconditioning”) and reported Li,tAdam=3.6%–4.7%\mathcal{L}_{i,t}^{\text{Adam}} = 3.6\%\text{--}4.7\% across three backbone models (Gemma-7B-it, Llama-2-7B-Chat, Llama-2-13B-Chat), averaged over five runs at the end of training with zero weight decay when projecting gradients before AdamW.step(); Yu et al. (CORD, October 2026) likewise noted that subsequent optimizer transformations can disturb gradient-space orthogonalization, while Ghosh et al. (PoLoRA, July 2026) proposed a preconditioned orthogonalized LoRA optimizer. In our reported three-model comparison (measuring relative adapter weight-update leakage ∥DΔW∥F/∥ΔW∥F\lVert D \Delta W\rVert_{\mathrm{F}} / \lVert\Delta W\rVert_{\mathrm{F}} rather than GOAL’s gradient-step metric), gradient-projected AdamW had 1.56% to 2.98% relative weight-update leakage on the orthogonal target at step 60, and the 15-model H100 comparison (0.8B to 32.8B) reported 0.33% to 1.67%. The training guide gives the tasks, metrics, and learning-rate caveat.

3.2 Apply the Constraint Whenever the Adapter Runs

The optimizer can change the adapter’s stored parameters freely. Before those parameters contribute to an output, the layer removes their protected components. Applying the projection twice is a numerical refinement; in exact arithmetic, the second pass changes nothing.

ProjectThenHealLinear instead reparameterizes the LoRA output factor inside the forward computation graph via a twice-applied float64 orthogonal projection:

Blocked(B~)=P⊥(P⊥(B~))B_{\text{locked}}(\tilde{B}) = P_\perp\big(P_\perp(\tilde{B})\big)

where each application of P⊥P_\perp is evaluated in O(k⋅dout⋅r)\mathcal{O}(k \cdot d_{\text{out}} \cdot r) time without allocating a dense dout×doutd_{\text{out}} \times d_{\text{out}} matrix:

P⊥(X)=X−D⊤(DX)P_\perp(X) = X - D^\top (D X)

The layer’s forward pass is then:

y=W0x+s Blocked(B~)(Ax)y = W_0 x + s \, B_{\text{locked}}(\tilde{B}) (A x)

By associativity, for any parameter state (B~t,At)(\tilde{B}_t, A_t) produced by any optimizer (SGD, AdamW, Lion, Muon):

DΔWt=s (DP⊥) P⊥(B~t) At=s (D−(DD⊤)D) P⊥(B~t) At=0\begin{aligned} D \Delta W_t &= s \, (D P_\perp) \, P_\perp(\tilde{B}_t) \, A_t \\ &= s \, \big(D - (D D^\top) D\big) \, P_\perp(\tilde{B}_t) \, A_t \\ &= 0 \end{aligned}

In exact arithmetic P⊥2=P⊥P_\perp^2 = P_\perp, but in finite-precision IEEE-754 float64, a single pass P⊥(B~)P_\perp(\tilde{B}) can leave O(εmach∥B~∥)\mathcal{O}(\varepsilon_{\text{mach}} \|\tilde{B}\|) residual components along DD when columns of B~\tilde{B} are nearly parallel to span(D⊤)\mathrm{span}(D^\top) (analogous to single-pass vs. two-pass Gram-Schmidt). Applying P⊥P_\perp twice reduces max⁡∣DBlocked∣\max |D B_{\text{locked}}| by 1.8×1.8\times to 17.7×17.7\times (median 5.6×5.6\times across 120 seeded Gaussian bases). Separately, the live-run diagnostic that recomputes an unrounded projected weight update reported 5.21×10−185.21 \times 10^{-18} to 9.87×10−189.87 \times 10^{-18}.

3.3 Where the Guarantee Stops

Later layers can turn a perpendicular change back toward a protected direction. Saving or merging weights at lower precision can also introduce a component that was absent in the calculation. Check both the stored weights and model responses after those steps.

The exact-arithmetic guarantee DΔWt=0D \Delta W_t = 0 holds at every protected writer’s output. In a multi-layer transformer, an orthogonal perturbation δhℓ∈ker⁡(D)\delta h_\ell \in \ker(D) emitted at layer ℓ\ell subsequently passes through downstream RMSNorm, attention, and MLP matrices Wℓ′W_{\ell'} (ℓ′>ℓ\ell' > \ell) for which DWℓ′P⊥≠0D W_{\ell'} P_\perp \neq 0 in general. Empirically on Qwen3.5-0.8B (Step 60), locking L15..L17 reduces direct merged-F32 writer leakage by 4.2×107×4.2 \times 10^7\times (2.49×10−102.49 \times 10^{-10} vs. 1.05×10−21.05 \times 10^{-2}) and cuts downstream pull-back along the B1 loop direction at resid L19 by more than half (+0.276 vs. +0.635 unconstrained).

Relation to prior subspace-projected LoRA and post-abliteration healing: Forward-pass orthogonal projection of LoRA adapters (ΔW=PLBAPR\Delta W = P_L B A P_R) against top singular directions of frozen weights was introduced for continual learning in OPLoRA (Xiong & Xie, AAAI 2026), while SaLoRA (Li et al., ICLR 2025) and Safe LoRA (Hsu et al., NeurIPS 2024) project LoRA updates to preserve safety alignment during downstream fine-tuning. Conversely, existing post-abliteration LoRA capability-healing pipelines (Labonne, June 2024; Obliteratus --auto-finetune; model-unfetter recovery.py) attach unconstrained LoRA adapters that can write back into the excised subspace. Secant’s specific contributions in this stage are (1) bypassing AdamW preconditioner leakage on the effective adapter weight update via forward-pass subspace-locked parameterization, reducing step-60 relative weight-update leakage ∥DΔW∥F/∥ΔW∥F\lVert D \Delta W\rVert_{\mathrm{F}} / \lVert\Delta W\rVert_{\mathrm{F}} from 0.33%-1.67% under gradient-projected AdamW to the float32 working-dtype floor (1.78e-10 to 8.67e-10) across 15 models (0.8B to 32.8B), (2) inverting safety-projected LoRA for post-surgery capability healing (Project-Then-Heal, locking LoRA out of an excised behavioral subspace span(D⊤)\mathrm{span}(D^\top)), and (3) twice-iterated float64 idempotent projection P⊥(P⊥(B~))P_\perp(P_\perp(\tilde{B})) inside the autograd forward pass (5.6×5.6\times median error reduction over single-pass projection).

Section 3 takeaway: Projecting only the gradient can leak once AdamW rescales coordinates. Projecting inside the forward pass makes DΔW=0D \Delta W = 0 hold in exact arithmetic for any optimizer at the locked writer. Rounding, merging, and later layers still have to be measured.


4. Experiments and What They Measure

The following studies answer three separate questions: whether the edit produces the intended local numerical change, whether the adapter respects protected directions, and whether model answers improve. A pass on one question is not a pass on the others. B1, B2, and B3 label the loop, refusal, and root-cause directions. An arm is one configuration being compared. Leakage metrics are named in each table because maximum absolute entries and norm ratios are not interchangeable.

The numerical results below are retained experimental reports, not fresh runs made for this documentation review. Some raw runners and receipts remain in the lab evidence bank rather than this repository; the guides identify those limits. Results on the two largest checkpoints use one shard each, not full-model fine-tuning.

Summary of Experimental Studies & Model Breadth

StudyCoverageModel rangeMeasurementsDetail
H100 Stage-1 calibration and 3-arm adapter sweep15 models0.8B to 32.8BReference shifts; 60-step adapter leakage4.1
H100 Stage-2 public benchmarks14 models0.8B to 32.8BGSM8K, MATH-500, MMLU-Pro, HumanEval, ASan-304.2
H100 Regime C adversarial subspace pull14 checkpoints7.2B to 72.7B12 full-model loads; 2 shard-only writer tests4.3
H100 paired ASAN-120 vulnerability and patched-benign twins9 models × 7 arms0.8B to 32.8B7,560 item evaluations; sensitivity and specificity4.5
Live causal-LM ProjectThenHealLinear healing (Regime A + RMS-relative)8 models0.8B to 14B2 early runs + 6 H100 models; 24,000 benchmark rows in the six-model study4.4
Static spectral and Boundary-3 payload atlas46-file local inventory (2,619 analyzed weight matrices: 2,574 across 14 full-model reads and 45 across 16 scoped variants)Atlas plus 10-checkpoint GGUF/SafeTensors scale sweep186,870,528 quantized blocks across 912 quantized tensors (2,194 total tensors)5

Cohorts overlap, so these model counts must not be added. The live-healing range uses model-name sizes; the larger H100 tables retain reported parameter counts. The focused Qwen3.5-4B dose-response case study follows the multi-model results in Section 4.6.

4.1 H100 Stage-1: Calibration and Three Adapter Arms Across 15 Models

This sweep checks the shift at a reference input and compares three adapter methods on one selected writer per model. It uses one seed per model and a synthetic target plus a real-token cross-entropy term. Public behavioral benchmarks were NOT_RUN in this sweep; the local numerical results do not establish generation quality.

Across 15 full models on H100 (0.8B to 32.8B, receipt irrefutable-15models-stage1-receipt.json), we applied full Target-Shift Calibration (∣Δtarget∣=7.382|\Delta_{\text{target}}| = 7.382, K=128K = 128 columns) to B2 and B3 and ran a 60-step 3-arm comparison on the surgically edited writer:

All 30 calibrated edits realize Δtarget\Delta_{\text{target}} at hrefh_{\text{ref}} to within <= 7.99e-15 in float64. On the 3-arm healing test (measured by relative leakage ∥DΔW∥F/∥ΔW∥F\|D \Delta W\|_{\mathrm{F}} / \|\Delta W\|_{\mathrm{F}} at step 60), Gradient-Projected AdamW (Arm B) leaks on 15 of 15 models (0.33% to 1.67%), whereas ProjectThenHealLinear (Arm C) stays at the float32 working-dtype floor (1.78e-10 to 8.67e-10; model by model, 6.5×1066.5 \times 10^6 to 3.8×1073.8 \times 10^7 times lower than Arm B):

Stage-1 calibration

ModelSizeB2 / B3 layersB2 / B3 βMax shift error
Qwen3.5-0.8B0.8BL17 / L140.5801 / 0.35958.9e-16
SmolLM2-1.7B1.7BL17 / L120.0369 / 0.27271.8e-15
Qwen3.5-4B4BL23 / L160.0484 / 0.38053.6e-15
Mistral-7B-v0.37.2BL12 / L190.9352 / 0.05103.6e-15
Qwen2.5-7B7.6BL8 / L140.1224 / 0.14842.7e-15
Llama-3.1-8B8BL23 / L160.4556 / 0.50701.8e-15
R1-Llama-8B8BL23 / L160.4343 / 0.47015.3e-15
Qwen3-8B8.2BL14 / L210.3931 / 0.07665.3e-15
Gemma-2-9B9.2BL16 / L253.7192 / 1.15081.8e-15
OLMo-2-13B13.7BL16 / L200.1130 / 0.03253.6e-15
Phi-414.7BL12 / L291.1436 / 0.01744.4e-15
Qwen3-14B14.8BL16 / L230.2994 / 0.05471.8e-15
R1-Qwen-14B14.8BL28 / L350.0343 / 0.01773.6e-15
Gemma-2-27B27.2BL14 / L270.0845 / 0.00988.0e-15
Qwen3-32B32.8BL47 / L250.0292 / 0.07383.6e-15

Stage-1 relative leakage at step 60

ModelA: unconstrainedB: gradient-projectedC: PTH
Qwen3.5-0.8B7.60%0.61%8.67e-10
SmolLM2-1.7B2.95%1.62%5.41e-10
Qwen3.5-4B2.22%1.67%5.81e-10
Mistral-7B-v0.32.17%0.92%3.38e-10
Qwen2.5-7B2.04%0.49%4.71e-10
Llama-3.1-8B0.82%0.80%4.36e-10
R1-Llama-8B1.59%0.60%4.50e-10
Qwen3-8B2.02%0.58%3.14e-10
Gemma-2-9B8.51%0.35%5.46e-10
OLMo-2-13B1.70%0.44%1.78e-10
Phi-40.86%0.33%3.26e-10
Qwen3-14B2.13%0.60%2.69e-10
R1-Qwen-14B1.23%0.77%3.53e-10
Gemma-2-27B1.98%1.31%3.49e-10
Qwen3-32B2.04%0.75%3.07e-10
Log-scale relative leakage at step 60 for unconstrained LoRA, gradient-projected AdamW and ProjectThenHealLinear on 15 models, with the B over C ratio per model, and trajectories over 60 AdamW steps

Figure 2:The three adapter arms in the leakage table, on a log scale. Left: step-60 relative leakage for each model, with the Arm B to Arm C ratio printed above each row. Right: all 15 trajectories over 60 AdamW steps, with the median drawn thick. Arms A and B jump to their plateau in the first 10 steps and stay there. Arm C stays near 1e-10 from step 0 to step 60.

4.2 H100 Stage-2: Public Benchmarks Across 14 Models

Section 4.1 checks the local arithmetic of each edit. This section asks a different question: what the same B2 + B3 edits do to a model’s answers on public benchmarks. The receipt is public-benchmarks/irrefutable-receipt.json (SHA-256 9859ef3e0603318e09b0366e6dae6994b47f7d7cc4456cfff1fff7ddb2253132, status: PASS, completed 2026-11-06T20:41:59Z), with per-item rows in predictions.jsonl (SHA-256 0c2d65e1...86fe). It covers 14 of the 15 Stage-1 models (14 x 1,970 = 27,580 completed five-arm rows). Gemma-2-27B is marked HOLD in the summary receipt because its gated repository returned HTTP 401 on the edited arms (300 base-only records for MATH-500, GSM8K, and MMLU-Pro remain in predictions.jsonl, bringing the file total to 27,880 rows, while Gemma-2-27B has no completed paired benchmark cohort). The aligned edits (layers, column support SS, β\beta), model revisions, and seed (20261105) are those of Section 4.1, and the healing results in this receipt are identical to the Stage-1 receipt for all 14 shared models.

Five variants of each model answer the same items: the unedited base; the calibrated edits at 1.0x and 1.5x; and two norm-matched random controls at 1.0x and 1.5x. A random control replaces each aligned direction qq with a random unit vector orthogonal to qq, keeping the same β\beta, the same input-column support SS, and therefore the same ∥ΔW∥F\lVert \Delta W\rVert_{\mathrm{F}}. If a calibrated edit and its random control move a score by similar amounts, the movement comes from the size of the edit, not its direction.

Each model answers the first 100 items of GSM8K, MATH-500 and MMLU-Pro, the first 64 of HumanEval, and the 30 retained sanitizer traces (ASan-30). Decoding is greedy. ASan-30 counts a root cause as correct when the answer names both the bug class and the culprit function, matched by keyword. Every comparison is paired by item: an exact two-sided McNemar test on the discordant pairs, then a Holm correction across the 70 model-by-benchmark cells of each variant. The pooled rows add the discordant pairs over all 14 models. Their 95% intervals use the paired normal approximation, and they treat items from different models as independent, which they are not.

Small multiples of paired change from base for 14 models on GSM8K, MATH-500, MMLU-Pro, HumanEval and ASan-30, comparing calibrated 1.0x edits with norm-matched random 1.0x edits, with pooled diamonds and 95% intervals

Figure 3:Paired change from base, in percentage points, for every model and benchmark. Blue dots are calibrated 1.0x; orange rings are the norm-matched random 1.0x control. A white halo marks a cell that survives Holm correction. Only one does at 1.0x, and it is a random control: Gemma-2-9B HumanEval, 42.2% to 75.0%. The diamonds pool all 14 models.

Pooled calibrated edits

BenchmarkPaired itemsCalibrated 1.0xCalibrated 1.5x
GSM8K1400-0.9 (-2.9 to +1.0), p = 0.39-2.0 (-4.1 to +0.1), p = 0.079
MATH-5001400-0.5 (-2.4 to +1.4), p = 0.65-0.4 (-2.2 to +1.5), p = 0.76
MMLU-Pro1400-2.0 (-3.5 to -0.5), p = 0.013-2.4 (-3.9 to -1.0), p = 0.0015
HumanEval pass@1896+0.6 (-1.7 to +2.9), p = 0.70+0.3 (-2.0 to +2.7), p = 0.85
ASan-30 root cause420+2.1 (-0.8 to +5.0), p = 0.20+1.2 (-1.8 to +4.2), p = 0.53

Pooled norm-matched random controls

BenchmarkPaired itemsRandom 1.0xRandom 1.5x
GSM8K1400-0.8 (-2.6 to +1.0), p = 0.43-0.9 (-3.0 to +1.1), p = 0.41
MATH-5001400-1.4 (-3.2 to +0.4), p = 0.14-0.1 (-2.0 to +1.7), p = 0.94
MMLU-Pro1400-0.5 (-2.0 to +1.0), p = 0.57-2.0 (-3.6 to -0.4), p = 0.017
HumanEval pass@1896+0.4 (-1.8 to +2.7), p = 0.77+0.3 (-1.8 to +2.5), p = 0.84
ASan-30 root cause420+0.2 (-3.2 to +3.6), p = 1.0-2.9 (-5.6 to -0.1), p = 0.065

What this shows:

Per-model ASan-30 scores out of 30 for root cause, culprit frame and bug class, comparing base, calibrated 1.0x and norm-matched random 1.0x, with paired root-cause changes and exact p-values

Figure 4:ASan-30 counts out of 30 for each model: base (gray ring), calibrated 1.0x (blue), and random 1.0x (orange). The right column lists the paired root-cause change and its unadjusted exact McNemar p. The largest single gains are +4 (Llama-3.1-8B, p = 0.12) and +3 (Mistral-7B-v0.3, p = 0.25).

Scope. These are first-N items, not random samples, from one seed, decoded greedily, on a set of checkpoints weighted toward Qwen. The receipt’s standalone secant CLI cross-check is HOLD for 7 of the 14 models; that check is separate from these benchmark results.

Per-model counts, all 14 completed models. Each cell is base / calibrated 1.0x / norm-matched random 1.0x, as correct items out of 100 (GSM8K, MATH-500, MMLU-Pro), passed items out of 64 (HumanEval), and correct root causes out of 30 (ASan-30). The rows are generated from the receipt with jq, not typed. Two rows that are easy to over-read: OLMo-2-13B MATH-500 goes from 33 to 37 under the calibrated edit and also to 37 under the random control. Qwen3-32B MATH-500 goes from 31 to 38 (exact McNemar p = 0.19, Holm p = 1), while GSM8K moves from 53 to 55 calibrated and to 56 random. No cell in this table is a demonstrated uplift.

Per-model mathematics and knowledge

ModelSizeGSM8K /100MATH-500 /100MMLU-Pro /100
Qwen3.5-0.8B0.8B48 / 44 / 4730 / 26 / 2322 / 20 / 17
SmolLM2-1.7B1.7B23 / 23 / 2125 / 26 / 234 / 5 / 4
Qwen3.5-4B4.0B14 / 21 / 2020 / 12 / 204 / 4 / 3
Mistral-7B-v0.37.2B55 / 46 / 4913 / 16 / 725 / 25 / 28
Qwen2.5-7B7.6B89 / 89 / 8959 / 60 / 5856 / 58 / 54
Llama-3.1-8B8.0B78 / 83 / 8244 / 38 / 4148 / 46 / 51
R1-Llama-8B8.0B66 / 67 / 6541 / 43 / 427 / 3 / 4
Qwen3-8B8.2B39 / 37 / 3431 / 33 / 339 / 9 / 9
Gemma-2-9B9.2B87 / 78 / 7748 / 36 / 3955 / 45 / 52
OLMo-2-13B13.7B90 / 90 / 8933 / 37 / 3732 / 28 / 31
Phi-414.7B95 / 96 / 9565 / 65 / 6768 / 67 / 66
Qwen3-14B14.8B59 / 58 / 5936 / 40 / 3615 / 10 / 16
R1-Qwen-14B14.8B50 / 46 / 5240 / 39 / 396 / 3 / 3
Qwen3-32B32.8B53 / 55 / 5631 / 38 / 317 / 7 / 13

Per-model code and crash triage

ModelHumanEval /64ASan-30 root cause /30
Qwen3.5-0.8B5 / 5 / 15 / 7 / 12
SmolLM2-1.7B7 / 6 / 75 / 6 / 6
Qwen3.5-4B21 / 20 / 196 / 5 / 6
Mistral-7B-v0.32 / 0 / 012 / 15 / 10
Qwen2.5-7B9 / 11 / 817 / 16 / 18
Llama-3.1-8B22 / 18 / 2317 / 21 / 18
R1-Llama-8B6 / 7 / 718 / 20 / 16
Qwen3-8B25 / 21 / 2317 / 16 / 17
Gemma-2-9B27 / 39 / 4813 / 13 / 13
OLMo-2-13B8 / 8 / 622 / 22 / 20
Phi-44 / 7 / 423 / 23 / 23
Qwen3-14B13 / 9 / 1015 / 15 / 13
R1-Qwen-14B26 / 27 / 2016 / 16 / 15
Qwen3-32B14 / 16 / 1715 / 15 / 15

4.3 H100 Regime C: Adversarial Subspace Pull Across 14 Checkpoints

This stress test deliberately asks the adapter to learn a change inside the protected subspace. A successful lock must leave that part of the task unfitted, so low leakage comes with a loss floor. The unconstrained and locked numbers below use different metrics and must not be read as a direct ratio.

In a separate adversarial stress test across 12 full models (7.2B to 32.8B) and 2 single-shard runs (70.6B, 72.7B), we trained LoRA for 60 AdamW steps toward a synthetic target Ytarget=Y+1.5 vB2Y_{\text{target}} = Y + 1.5\,v_{B2} that deliberately lies inside the protected subspace span(D⊤)\mathrm{span}(D^\top). Under this adversarial pull, unconstrained LoRA placed 8.42% to 52.55% of its output factor norm ∥B∥F\|B\|_{\mathrm{F}} into span(D⊤)\mathrm{span}(D^\top), whereas ProjectThenHealLinear held max⁡∣DBlocked∣\max |D B_{\text{locked}}| (evaluated in float64 on the F32 working factor) to 4.82e-10 to 1.08e-9 at step 60 across all 14 checkpoints.

CheckpointSizeCoverageUNC rel. BPTH max abs B
Mistral-7B-v0.37.2BFull model46.79%7.73e-10
Qwen2.5-7B7.6BFull model31.34%7.55e-10
Llama-3.1-8B8BFull model48.03%7.62e-10
R1-Llama-8B8BFull model52.55%6.39e-10
Qwen3-8B8.2BFull model39.53%7.14e-10
Gemma-2-9B9.2BFull model41.05%6.53e-10
OLMo-2-13B13.7BFull model30.73%1.08e-9
Phi-414.7BFull model8.42%9.51e-10
Qwen3-14B14.8BFull model41.33%5.77e-10
R1-Qwen-14B14.8BFull model32.57%6.11e-10
Gemma-2-27B27.2BFull model11.54%7.16e-10
Qwen3-32B32.8BFull model30.75%4.82e-10
R1-Llama-70B70.6BShard only20.24%5.66e-10
Qwen2.5-72B72.7BShard only36.94%9.85e-10

The retained Regime C sources are h100_scaleup_6models_complete_receipt.json, h100_r1_olmo_receipt.json, and h100_gated_and_70b_receipt.json in the H100 evidence bank. The table uses the first Phi-4 run under experiments and the successful top-level Qwen3-32B rerun. The 70B row is DeepSeek-R1-Distill-Llama-70B, as named in the receipt; the attempted Llama-3.3-70B-Instruct download returned HTTP 403 and is not a completed result. Both large-model rows remain shard-only retained evidence with incomplete producing-run provenance.

Verification & Diagnostic Notes on Regime C:

  • Non-linear dose saturation at extreme shifts: On 20 of 24 full-model edits in Regime C, raising the dose from 1.0×1.0\times to 1.5×1.5\times scaled the realized shift linearly (1.49x to 1.50x). Four edits (Phi-4 B2, OLMo-2-13B B3, Gemma-2-9B B3, Gemma-2-27B B3) showed sub-linear scaling (1.04x to 1.18x) due to downstream RMSNorm normalization.

  • Outlier-dimension diagnostic (Phi-4): In Regime C’s uncalibrated capture on Phi-4 (L32), peak SNRproj\mathrm{SNR}_{\text{proj}} reached 27,362.3 with SNRtrace=60.4\mathrm{SNR}_{\text{trace}} = 60.4, and the uncalibrated edit inverted sign (-3.399). Always pair SNRproj\mathrm{SNR}_{\text{proj}} with SNRtrace\mathrm{SNR}_{\text{trace}} and verify the signed shift on held-out prompts (as done in Stage-1 L12 calibration, where Phi-4 achieves 4.4e-15 shift error).

4.4 Live Causal-LM Healing Across Eight Models: Regime A and RMS-Relative Dosing

The two early Regime A runs and six H100 RMS-relative runs all train ProjectThenHealLinear on real causal-LM text. They cover eight models from 0.8B to 14B by model-name size. The 24,000 benchmark rows belong to the six-model RMS-relative study, across all of its evaluated arms; they are not 24,000 healed-arm rows or an eight-model common benchmark.

ModelRunStepsLeakage metricPTH float64
Qwen3.5-0.8BEarly Regime A (CPU)60Max abs9.87e-18
SmolLM2-1.7BEarly Regime A (ROCm)20Max abs5.21e-18
Qwen3-4BH100 RMS-relative60Relative3.18e-17
Qwen2.5-Math-7BH100 RMS-relative60Relative5.07e-17
Qwen2.5-Coder-7BH100 RMS-relative60Relative3.34e-17
R1-Llama-8BH100 RMS-relative60Relative3.43e-17
Qwen3-8BH100 RMS-relative60Relative3.75e-17
Qwen3-14BH100 RMS-relative60Relative4.80e-17

4.4.1 Early Live Runs: Perplexity and Storage Precision

The two early short runs compare a constrained adapter with ordinary LoRA after a weight edit. Perplexity measures prediction quality on held-out text; lower is better. The Qwen run reached its best held-out value at step 20, then both arms overfit the small training batch. The float64 leakage column recomputes an unrounded projected delta; it is not a claim that the whole model ran in float64.

Both arms train on real causal-LM completions after a byte-verified surgical edit, evaluated on the identical writer-level metric max⁡∣DΔW∣\max |D \Delta W|:

Early live runs: training and edit

ModelSteps / deviceVerified surgical edit
Qwen/Qwen3.5-0.8B60 (CPU)Composed B1+B2+B3 GGUF (verify-patch exit 0)
HuggingFaceTB/SmolLM2-1.7B-Instruct20 (ROCm GPU)B2 projector at L14 o_proj (67.9x vs. random) + B3 calibrated at L15 down_proj (22.1x vs. random)

Early live runs: leakage and held-out quality

ModelPTH max: float64 / F32UNC maxPPL: PTH vs. UNC
Qwen/Qwen3.5-0.8B9.87e-18 / 2.49e-101.05e-02Step 20: 5.435 vs. 5.423; Step 60: 12.106 vs. 12.357
HuggingFaceTB/SmolLM2-1.7B-Instruct5.21e-18 / 1.46e-104.64e-03Step 20: 21.260 vs. 21.255

Storage Precision Boundary (F32/F64 vs. BF16): When merged weights are quantized down to 16-bit BF16 (7 stored fraction bits, 8-bit significand precision, ulp≈7.8×10−3\mathrm{ulp} \approx 7.8 \times 10^{-3}, unit roundoff ≈3.9×10−3\approx 3.9 \times 10^{-3}), rounding error alone introduces ∼10−4\sim 10^{-4} to 10-3 subspace leakage. secant heal therefore stores healed LoRA adapters in F32 or F64.

4.4.2 Six-Model H100 Sweep: RMS-Relative Dosing and Live Healing

A fixed shift such as ∣Δtarget∣=1.0\lvert\Delta_{\text{target}}\rvert = 1.0 means different things in different layers, because writer outputs differ in scale. RMS-relative dosing measures that scale first and sizes the shift against it:

σwriter=1N∑i=1N∥Whi∥22,Δtarget=α σwriter,βk=Δtarget∥hS,k∥22\sigma_{\text{writer}} = \sqrt{\tfrac{1}{N}\textstyle\sum_{i=1}^{N} \lVert W h_i\rVert_2^2}, \qquad \Delta_{\text{target}} = \alpha\,\sigma_{\text{writer}}, \qquad \beta_k = \frac{\Delta_{\text{target}}}{\lVert h_{S,k}\rVert_2^2}

over N=24N = 24 positive reference activations (4 domains times 6). Across 6 models spanning 4B to 14B parameters (24,000 benchmark rows total, archived experiment receipt identifier h100-scaleup-20261105/domain-uplift-rms, per-model manifest SHA-256 digests listed below), σwriter\sigma_{\text{writer}} varies by 13.4x, from 5.847 on layer 21 of DeepSeek-R1-Distill-Llama-8B to 78.148 on layer 24 of Qwen3-8B. An unscaled unit shift of 1.0 therefore represents 17.10% of the writer norm on DeepSeek-R1-Distill-Llama-8B, 2.48% on Qwen2.5-Coder-7B-Instruct (40.355), 1.45% on Qwen3-14B (68.757), 1.34% on Qwen2.5-Math-7B-Instruct (74.607), and 1.28% on Qwen3-8B (78.148). That explains why the earlier unscaled unit shift left greedy accuracy unchanged on Qwen2.5-Math-7B-Instruct (GSM8K 87%, MATH-500 43%, largest change in any complete cell 1 point, with mean normalized shift at most 0.19%).

Each of the 6 models was evaluated on one H100 (torch 2.8.0+cu128, greedy left-padded batches of 16, max_new_tokens = 512, 100 items each of MATH-500, GSM8K, MMLU-Pro, and HumanEval). Every model ran at least 8 arms at α=1.0\alpha = 1.0: base, four single-domain edits (security, math, science, code), their 4-domain Gram-Schmidt orthogonal union (composed), a seeded norm-matched random control orthogonal to span(D)\mathrm{span}(D) on the identical column support, and composed_healed (the 4-domain composition followed by a rank-4, 60-step float64 ProjectThenHealLinear healing pass). Qwen2.5-Math-7B-Instruct and Qwen3-4B additionally ran a 14-arm dose sweep over α∈{0.25,0.5,1.0,2.0}\alpha \in \{0.25, 0.5, 1.0, 2.0\}.

RMS calibration and live healing

ModelLayerσManifest SHA-256Rel. leakage
Qwen2.5-Math-7B-InstructL1974.6149181d79...7cc15.07e-17
Qwen2.5-Coder-7B-InstructL1940.3516c9808e...ad6b3.34e-17
DeepSeek-R1-Distill-Llama-8BL215.855bae03b9...43893.43e-17
Qwen3-4BL2437.81bcc4e37e...8ba63.18e-17
Qwen3-8BL2478.1580583fe0...f7d73.75e-17
Qwen3-14BL2668.7642de8edd...8f1a4.80e-17

RMS sweep: held-out benchmark counts

ModelGSM8K /100MATH-500 /100MMLU-Pro /100HumanEval /100
Qwen2.5-Math-7B-Instruct87 / 87 / 88 / 9343 / 43 / 44 / 4417 / 16 / 16 / 171 / 0 / 1 / 0
Qwen2.5-Coder-7B-Instruct82 / 81 / 82 / 8044 / 44 / 46 / 4535 / 29 / 27 / 3136 / 36 / 37 / 42
DeepSeek-R1-Distill-Llama-8B62 / 63 / 64 / 6327 / 26 / 29 / 272 / 3 / 2 / 25 / 9 / 4 / 12
Qwen3-4B30 / 30 / 26 / 2921 / 22 / 19 / 228 / 7 / 12 / 819 / 23 / 18 / 21
Qwen3-8B18 / 30 / 30 / 2221 / 20 / 16 / 181 / 3 / 2 / 319 / 16 / 20 / 15
Qwen3-14B46 / 42 / 38 / 3717 / 20 / 21 / 179 / 12 / 9 / 1510 / 10 / 10 / 8

On Qwen2.5-Math-7B-Instruct (manifest.json SHA-256 49181d79...7cc1, 14 arms, predictions.jsonl SHA-256 f5036530...b90c), the full dose sweep across α∈{0.25,0.5,1.0,2.0}\alpha \in \{0.25, 0.5, 1.0, 2.0\} realized every reference target to within 1e-4 relative error:

Qwen2.5-Math-7B dose sweep: mathematics

ArmαGSM8K /100MATH-500 /100
base8743
security / math / science / code1.087 / 87 / 87 / 8842 / 44 / 43 / 43
composed0.25 / 0.5 / 1.0 / 2.088 / 89 / 87 / 8942 / 43 / 43 / 42
random (norm-matched)0.25 / 0.5 / 1.0 / 2.087 / 87 / 88 / 8742 / 43 / 44 / 43
composed_healed (Project-Then-Heal, D_domain locked)1.09344
base_lora_1p0x (heal-the-base: unconstrained LoRA on base)1.09346
random_healed_rms_1p0x (healed-random: PTH on random_1.0, D_rand locked)1.09346

Qwen2.5-Math-7B dose sweep: knowledge and code

ArmαMMLU-Pro /100HumanEval /100
base171
security / math / science / code1.014 / 16 / 17 / 152 / 1 / 0 / 1
composed0.25 / 0.5 / 1.0 / 2.016 / 17 / 16 / 150 / 0 / 0 / 0
random (norm-matched)0.25 / 0.5 / 1.0 / 2.015 / 15 / 16 / 142 / 0 / 1 / 0
composed_healed (Project-Then-Heal, D_domain locked)1.0170
base_lora_1p0x (heal-the-base: unconstrained LoRA on base)1.0200
random_healed_rms_1p0x (healed-random: PTH on random_1.0, D_rand locked)1.0180

What the 6-model sweep shows, and what it does not:

4.5 H100 ASAN-120: Paired Vulnerability and Patched-Benign Twins, 9 Models × 7 Arms

Vulnerable-only benchmarks such as ASan-30 cannot distinguish a genuine C/C++ vulnerability detector from a rubber-stamping model that labels every snippet VULNERABLE. To measure both sensitivity (TPR) and patched-twin specificity (TNR), we constructed ASAN-120 (archived benchmark artifact h100-scaleup-20261105/asan120/asan120_paired_benchmark.json, SHA-256 4276cbd2...20eb): 60 vulnerable C/C++ functions paired with 60 minimally patched benign twins across 12 CWE bug classes (5 matched pairs per class: CWE-122 heap overflow, CWE-121 stack overflow, CWE-416 use-after-free including std::vector reallocation, CWE-190 integer overflow, CWE-195 sign conversion, CWE-193 off-by-one, CWE-476 null dereference, CWE-415 double free, CWE-908 uninitialized read under MSan, CWE-617 assert-only check elided under -DNDEBUG, CWE-843 type confusion, and CWE-674 unbounded recursion). Every pair was compiled and executed across a 4-way compiler matrix (gcc -O0, gcc -O2, clang -O0, clang -O2 with ASan+UBSan and -DNDEBUG, plus clang MSan for CWE-908; validation.json SHA-256 adfe3d82...c9ca, 60/60 PASS): each vulnerable twin is silent on a legitimate driver and triggers the expected sanitizer fault on a crafted driver, while each patched twin is silent on both.

Across 9 models (0.8B to 32.8B) and 7 steering arms (base, calibrated_1p0x, random_1p0x, composed_rms_0p5x, random_rms_0p5x, composed_rms_1p0x, random_rms_1p0x; 63 arms, 7,560 completions on H100, greedy batch 16, max_new_tokens = 1536, restored = True bit-exact after every arm, receipt asan120-receipt.json / asan120_results.json SHA-256 cc5a7d40...bb9b, 0 re-score mismatches), each item is scored for binary verdict (TPR on the 60 vulnerable snippets, TNR on the 60 patched twins, balanced accuracy BA=(TPR+TNR)/2\mathrm{BA} = (\mathrm{TPR}+\mathrm{TNR})/2, Matthews correlation MCC\mathrm{MCC}, and pair where both twins in a pair are classified correctly) and strict root-cause recall (RC), which credits a vulnerable item only when the model outputs VULNERABLE, names the gold CWE bug class (class), and names the faulting sink symbol (sink). Unclosed <think> chains (cap) are scored as errors (0 credit on RC).

ASAN-120 paired vulnerability and benign control benchmark across 9 models and 7 steering arms, showing root-cause recall, balanced accuracy, TPR vs TNR specificity breakdown, and paired deltas

Figure 5:ASAN-120 paired evaluation across 9 models (7,560 completions). Top 5 rows: non-reasoning models (0.8B to 8B) cluster on the BA = 0.50 chance line (0.475 to 0.533), either defaulting to SAFE (Qwen3.5-0.8B TNR = 1.000, Qwen2.5-7B TNR = 0.850) or rubber-stamping VULNERABLE (SmolLM2-1.7B TPR = 0.983, TNR = 0.000; Llama-3.1-8B TPR = 0.933, TNR = 0.067), with near-zero root-cause recall (RC <= 0.067). Bottom 4 rows: <think> reasoning models (8B to 32.8B) achieve genuine root-cause attribution (RC up to 0.550 on Qwen3-14B and 0.683 on Qwen3-32B), and composed_rms_1p0x beats random_rms_1p0x on BA across 6 of 9 models (6W / 1L / 2T, including 4/4 reasoning models).

ASAN-120: verdict quality and specificity

ModelTPRTNRBAMCC
Qwen3.5-0.8B.00 / .00 / .00 / .00 / .001.0 / 1.0 / 1.0 / 1.0 / 1.0.500 / .500 / .500 / .500 / .500.00 / .00 / .00 / .00 / .00
SmolLM2-1.7B.95 / .97 / .98 / .98 / .98.00 / .00 / .00 / .00 / .00.475 / .483 / .492 / .492 / .492-.16 / -.13 / -.09 / -.09 / -.09
Mistral-7B-v0.3.33 / .35 / .33 / .35 / .30.72 / .72 / .72 / .72 / .72.525 / .533 / .525 / .533 / .508+.05 / +.07 / +.05 / +.07 / +.02
Qwen2.5-7B.12 / .12 / .10 / .12 / .12.87 / .85 / .87 / .85 / .87.492 / .483 / .483 / .483 / .492-.03 / -.05 / -.05 / -.05 / -.03
Llama-3.1-8B.93 / .93 / .93 / .93 / .93.05 / .05 / .05 / .07 / .05.492 / .492 / .492 / .500 / .492-.04 / -.04 / -.04 / .00 / -.04
R1-Llama-8B.60 / .72 / .68 / .65 / .63.23 / .25 / .27 / .23 / .20.417 / .483 / .475 / .442 / .417-.18 / -.04 / -.06 / -.13 / -.18
Qwen3-8B.43 / .38 / .40 / .45 / .43.28 / .32 / .43 / .28 / .25.358 / .350 / .417 / .367 / .342-.29 / -.30 / -.17 / -.27 / -.32
Qwen3-14B.63 / .65 / .65 / .70 / .63.50 / .47 / .38 / .40 / .42.567 / .558 / .517 / .550 / .525+.13 / +.12 / +.03 / +.10 / +.05
Qwen3-32B.78 / .73 / .82 / .73 / .77.50 / .40 / .52 / .55 / .42.642 / .567 / .667 / .642 / .592+.30 / +.14 / +.35 / +.29 / +.20

ASAN-120: root cause and paired controls

ModelRCPair accuracyParsed (cap)
Qwen3.5-0.8B.000 / .000 / .000 / .000 / .000.000 (all)1.00 (.00)
SmolLM2-1.7B.017 / .000 / .017 / .000 / .017.000 (all).97-.99 (.00)
Mistral-7B-v0.3.033 / .033 / .033 / .033 / .017.050 / .067 / .050 / .067 / .0331.00 (.00)
Qwen2.5-7B.017 / .017 / .017 / .017 / .017.033 / .017 / .017 / .017 / .0331.00 (.00)
Llama-3.1-8B.033 / .050 / .033 / .033 / .033.033 (all).97 (.01)
R1-Llama-8B.183 / .217 / .133 / .250 / .133.067 / .117 / .167 / .167 / .083.68 (.32) / .72 (.28) / .69 (.32) / .68 (.36) / .67 (.35)
Qwen3-8B.350 / .267 / .300 / .317 / .283.117 / .150 / .167 / .150 / .100.39 / .44 / .48 / .46 / .40
Qwen3-14B.450 / .500 / .500 / .550 / .467.250 / .267 / .217 / .267 / .217.68 / .67 / .62 / .67 / .62
Qwen3-32B.650 / .633 / .683 / .633 / .633.367 / .333 / .433 / .383 / .333.72 (.31) / .67 (.33) / .72 (.32) / .74 (.29) / .68 (.35)

What the paired ASAN-120 evaluation establishes:

Table 4C: ASAN-120 Descriptive Breakdown Across All 12 CWE Families (Vulnerable Detections / Patched-Benign Clearances Out of 45 = 9 Models ×\times 5 Pairs per Family)

CWE FamilyBase (Vuln / Safe)Composed 1.0x (Vuln / Safe)Random 1.0x (Vuln / Safe)
F01: Heap buffer overflow30 / 2230 / 2029 / 20
F02: Stack buffer overflow31 / 1729 / 1828 / 22
F03: Use after free22 / 1921 / 1922 / 18
F04: Integer overflow -> allocation24 / 2227 / 2326 / 20
F05: Signed/unsigned conversion26 / 1527 / 1723 / 15
F06: Off-by-one boundary24 / 2325 / 2621 / 22
F07: Null pointer dereference22 / 2521 / 2025 / 21
F08: Double free19 / 2223 / 2022 / 18
F09: Uninitialized memory read16 / 2117 / 2018 / 20
F10: Release-elided assert check25 / 2225 / 2426 / 23
F11: Type confusion / bad cast21 / 2421 / 2319 / 23
F12: Unbounded recursion27 / 1729 / 1629 / 13

4.5.1 Real-World Upstream C/C++ Vulnerability Twin Suite (ASAN-RealWorld-60 / ASAN-180)

To verify that the paired-twin findings on ASAN-120 hold on production C/C++ parser and runtime functions rather than only standalone constructed templates, we built ASAN-RealWorld-60 (data/asan_realworld_60/asan_realworld_60_paired_benchmark.json, SHA-256 7aaf5593da3f9f84a5df8d77102966ce223a753f7d4d647a1292df1b5f33a151; combined 180-item suite asan180_combined_benchmark.json, SHA-256 526db767cb21a8df4315377c2f7089f79f2d31a103df8bcc71fc5f938630e7cb): 30 sanitizer-reproduced upstream C/C++ vulnerabilities (RW01..RW30) paired with their 30 exact upstream patches (60 functions, mean pre/post twin similarity 89.4%) drawn from 16 production open-source repositories (freetype/freetype, protocolbuffers/protobuf, pnggroup/libpng, openxla/xla, harfbuzz/harfbuzz, AOMediaCodec/libavif, lz4/lz4, google/flatbuffers, libjxl/libjxl, google/XNNPACK, vllm-project/vllm, mlc-ai/xgrammar, onnx/onnx, opencv/opencv, openvinotoolkit/openvino, apache/arrow, and tensorflow/tensorflow; sealed provenance manifest asan_realworld_60_manifest.json, SHA-256 d4ac48b0d9ed9414d4bd06a46322a76b083576fd97a071db969e0c263dc21d08). Every pair was compiled and verified across 360 binary runs (clang++ -O0, -O1, and -O2 with -fsanitize=address,undefined -fno-sanitize-recover=all; validation_receipt.json SHA-256 f64ea55205fb8c36e42e1b46a2c071a21e3a2c7fc4dacc526fcdb0d6b9c7577a, 30 / 30 pairs PASS): every unpatched function (RW*-V) faults at its @SINK / @ROOT line on --trigger and exits 0 on --control, while every patched twin (RW*-S) exits 0 on both.

Evaluating four 0.8B–4B checkpoints across 18 arms (1,080 completions, asan_realworld_60_results.json SHA-256 59402d8fb6627ba08c3a399d97e57a5ac75ecf229ccd727019979536cd138ba8, 0 re-score mismatches, bit-exact weight restoration verified after every arm) reproduces both ASAN-120 behaviors on real upstream code:

Model (ASAN-RealWorld-60, N = 60)ArmTPR (Vuln)TNR (Patched)BAMCCRC (Strict Root Cause)Class AccSink AccPair BA
Qwen3.5-0.8Bbase / calibrated_1p0x / random_1p0x / composed_rms_1p0x / random_rms_1p0x0.0%100.0%50.0%+0.0000.0%0.0%3.3%–13.3%50.0%
Qwen2.5-1.5B-Instructbase / calibrated_1p0x / random_1p0x / composed_rms_1p0x / random_rms_1p0x6.7%–20.0%70.0%–86.7%45.0%–46.7%-0.140..-0.0790.0%0.0%–3.3%13.3%–16.7%35.0%–43.3%
SmolLM2-1.7B-Instructbase / calibrated_1p0x / random_1p0x / composed_rms_1p0x / random_rms_1p0x96.7%–100.0%0.0%48.3%–50.0%-0.130..+0.0000.0%16.7%6.7%–13.3%0.0%
Qwen3.5-4Bbase63.3%40.0%51.7%+0.03410.0%16.7%43.3%25.0%
Qwen3.5-4Bcalibrated_1p0x60.0%40.0%50.0%+0.00010.0%16.7%36.7%25.0%
Qwen3.5-4Brandom_1p0x63.3%43.3%53.3%+0.06810.0%16.7%43.3%26.7%
  1. Sub-2B checkpoints collapse to one-sided priors on real upstream C/C++ code: Qwen3.5-0.8B labels 100% of upstream functions SAFE (TPR = 0.0%, TNR = 100.0%, RC = 0.0%), while SmolLM2-1.7B-Instruct labels 96.7%–100.0% VULNERABLE (TNR = 0.0%, FPR = 100.0%, RC = 0.0%).

  2. Qwen3.5-4B achieves non-zero strict root-cause recall (RC = 10.0%) and 43.3% sink localization on real upstream bugs: Only the 4B reasoning model achieves non-zero 3-criterion root-cause attribution (RC = 10.0%, Class Acc = 16.7%, Sink Acc = 43.3%), while neither calibrated_1p0x nor composed_rms_1p0x significantly outperforms base or norm-matched random controls (all exact two-sided McNemar p >= 0.125), matching the ASAN-120 null result for small models.

4.6 Focused Dose-Response Case Study: Qwen3.5-4B (Regime B)

Alongside the multi-model sweeps, this single-model case study isolates how changing the loop-edit dose affects completion and attribution. This test gives the same 30 crash traces to each edited model with a 1,536-token limit. “Closed” means the model emitted </think> within that limit. The other columns score the final answer’s bug class, culprit frame, and root cause separately. A completed answer can still be wrong. The dose changes only B1 in the a05 and a15 arms. Strict scoring requires a committed answer after </think>. In the reported copy-the-input control, a whole-output keyword matcher scored the raw prompt 28/30, while strict scoring gave it 0/30; merely repeating a function name is not correct attribution.

Dose and completion

ArmB1 shiftClosed /30Mean tokens
base / rand1 / rand2 / rand3n/a0/301,536
g030n/a0/301,536
a05 (0.50x)-3.6910/30 (0.0%)1,536
a06 (0.60x)-4.4292/30 (6.7%)1,491
a07 (0.70x)-5.1685/30 (16.7%)1,430
a08 (0.80x)-5.90612/30 (40.0%)1,318
a09 (0.90x)-6.64414/30 (46.7%)1,210
b1only (1.00x, B1 only)-7.38217/30 (56.7%)1,044
cal738 (1.00x, B1+B2+B3)-7.38221/30 (70.0%)954
a15 (1.50x, B1 at 1.5x)-11.07330/30 (100.0%)789

Strict attribution

ArmBug class /30Culprit frame /30Root cause /30
base / rand1 / rand2 / rand30/300/300/30
g0300/300/300/30
a05 (0.50x)0/30 (0.0%)0/30 (0.0%)0/30 (0.0%)
a06 (0.60x)2/30 (6.7%)1/30 (3.3%)1/30 (3.3%)
a07 (0.70x)5/30 (16.7%)3/30 (10.0%)3/30 (10.0%)
a08 (0.80x)8/30 (26.7%)9/30 (30.0%)8/30 (26.7%)
a09 (0.90x)10/30 (33.3%)10/30 (33.3%)8/30 (26.7%)
b1only (1.00x, B1 only)15/30 (50.0%)13/30 (43.3%)11/30 (36.7%)
cal738 (1.00x, B1+B2+B3)18/30 (60.0%)15/30 (50.0%)14/30 (46.7%)
a15 (1.50x, B1 at 1.5x)23/30 (76.7%)23/30 (76.7%)19/30 (63.3%)

Sampling the interior 0.60x..0.90x interval (a06, a07, a08, a09) shows that loop closure rises as a monotonic ramp across [0.50x, 1.50x] rather than a discontinuous step (0/30 at 0.50x -> 2/30 at 0.60x -> 5/30 at 0.70x -> 12/30 at 0.80x -> 14/30 at 0.90x -> 21/30 at 1.00x -> 30/30 at 1.50x), while mean generated tokens fall monotonically (1,536 -> 1,491 -> 1,430 -> 1,318 -> 1,210 -> 954 -> 789) and strict attribution tracks closure (0/30 -> 1/30 -> 3/30 -> 8/30 -> 8/30 [10/30 class and frame] -> 14/30 -> 19/30). Exact two-sided McNemar tests against base: a08 loop closure p=4.88×10−4p = 4.88 \times 10^{-4} (12 vs. 0 discordant pairs); a09 loop closure p=1.22×10−4p = 1.22 \times 10^{-4} (14 vs. 0 discordant pairs); cal738 loop closure p=9.54×10−7p = 9.54 \times 10^{-7} (21 vs. 0 discordant pairs); a15 loop closure p=1.86×10−9p = 1.86 \times 10^{-9} (30 vs. 0 discordant pairs). Comparing a15 vs. cal738: loop closure p=0.0039p = 0.0039, culprit frame p=0.0078p = 0.0078.

Direct 4-Arm MATH-500 Attribution on Qwen3.5-0.8B: What the Test Tells Us in Plain Words

To compare template-level <think> bypassing (enable_thinking=False) against weight-space loop suppression (secant_b1_edit) and an orthogonal norm-matched random control (random_norm_matched) on the exact Qwen/Qwen3.5-0.8B (revision 2fc06364..., sha256 04b1c301...) and HuggingFaceH4/MATH-500 (revision 6e4ed1a2...) model-dataset pair studied by Takehi et al., we ran a controlled 4-arm evaluation (n = 100, max_new_tokens = 4,096, BF16, greedy decoding, seed 20261108, lm_eval 0.4.13 minerva_math math_verify, receipt qwen35_08b_thinking_off_vs_edit_receipt.json, sha256 bc3c982e...c13b):

Arm (Qwen/Qwen3.5-0.8B, MATH-500, n = 100)<think> Mode</think> ClosurePost-</think> math_verifyWhole-Response math_verifyMean Tokens
base_thinking_onenable_thinking=True1 / 100 (1.0%)1.0%12.0%4,072.2
base_thinking_offenable_thinking=False(prefilled)48.0%48.0%1,899.3
secant_b1_edit (L15 & L19 top-64 cols, 0.016%)enable_thinking=True64 / 100 (64.0%)24.0%31.0%3,598.4
random_norm_matched (Seed 1 20261108, orthogonal random, 64 cols)enable_thinking=True2 / 100 (2.0%)0.0%18.0%4,096.0
random_norm_matched_seed2 (Seed 2 20261109, orthogonal random, 64 cols)enable_thinking=True6 / 100 (6.0%)2.0%16.0%4,065.3
random_norm_matched_seed3 (Seed 3 20261110, orthogonal random, 64 cols)enable_thinking=True1 / 100 (1.0%)1.0%19.0%4,073.7
random_norm_matched (3-seed mean ± SD)enable_thinking=True3.0% ± 2.6%1.0% ± 1.0%17.7% ± 1.5%4,078.3 ± 15.8

In plain words, this 4-arm comparison establishes three points:

  1. A weight edit does not teach a model new math (base_thinking_off vs. base_thinking_on): Qwen3.5-0.8B already knew how to solve 48.0% of MATH-500. With <think> enabled, 99 / 100 baseline runs get stuck repeating themselves inside <think> and fail to emit </think> within 4,096 new tokens (1.0% post-</think> accuracy; 12.0% whole-response). Setting enable_thinking=False lifts accuracy to 48.0% (47 vs. 0 discordant pairs, exact two-sided McNemar p=1.42×10−14p = 1.42 \times 10^{-14}, Holm-adjusted p=7.11×10−14p = 7.11 \times 10^{-14}), matching Takehi et al.'s 32,768-token edited score (48.1%) consistent with single-shot weight subtraction unblocking pre-existing capability rather than injecting new math skill.

  2. Our B1 loop edit is a real mechanism across 3 random direction seeds (secant_b1_edit vs. random_norm_matched seed_1..seed_3, receipt SHA-256 f7da8318...6dc2): Because the B1 edit direction is a deterministic mean difference over the fixed calibration set and evaluation uses greedy decoding (temperature = 0), secant_b1_edit is a single deterministic run while the 3-seed ensemble varies the random control direction (seed_1..seed_3). Unlike Qwen3-8B on GSM8K (where <think> loops are mild enough that a norm-matched random edit matches the targeted edit at 30/100), on Qwen3.5-0.8B MATH-500 three independent orthogonal random direction seeds (seed_1 = 20261108, seed_2 = 20261109, seed_3 = 20261110, each orthogonal to B1 with matched Frobenius norms 1.7489 and 1.3988 on the exact same 64 columns of layers 15 and 19) close only 2 / 100, 6 / 100, and 1 / 100 <think> traces (mean 3.0% ± 2.6%, 0 / 100 closed by ≥2/3\ge 2/3 majority vote across random seeds) and score 0.0%, 2.0%, and 1.0% post-</think> (mean 1.0% ± 1.0%, 0 / 100 solved by ≥2/3\ge 2/3 majority vote; whole-response 18.0%, 16.0%, and 19.0%, mean 17.7% ± 1.5%). By contrast, secant_b1_edit lifts </think> closure to 64 / 100 (64.0%) (exact two-sided McNemar p≤4.74×10−15p \le 4.74 \times 10^{-15}, Holm-adjusted p≤3.32×10−14p \le 3.32 \times 10^{-14} against every random seed) and post-</think> accuracy to 24.0% (24/0, 24/2, and 24/1 discordant pairs against seed_1..seed_3, exact two-sided McNemar p=1.19×10−7p = 1.19 \times 10^{-7}, 1.05×10−51.05 \times 10^{-5}, and 1.55×10−61.55 \times 10^{-6}, Holm-adjusted p≤8.39×10−5p \le 8.39 \times 10^{-5} across all 3 seeds; whole-response 31.0% vs. 12.0% base, p=6.60×10−5p = 6.60 \times 10^{-5}). Under the 4,096-token budget, 36 / 100 secant_b1_edit traces did not emit </think> within the budget (31 at the text cap, 4 ended early without closing, 1 re-tokenized over the cap), explaining the gap between 24.0% at 4,096 tokens and 48.1% at 32,768 tokens. Across the 100 paired items, 5 of the 24 problems solved by secant_b1_edit were problems that base_thinking_off (48.0%) missed (19 solved by both, 29 only by base_thinking_off, 5 only by secant_b1_edit).

  3. Why not just turn <think> off everywhere? As Section 4.5 (ASAN-120) shows below, models without <think> collapse to one-sided guessing on paired C/C++ vulnerability auditing (BA = 0.475 to 0.533, 93% to 100% false-positive rate on patched code for Llama-3.1-8B and SmolLM2-1.7B, <= 6.7% root-cause recall across all 5 non-reasoning models), whereas keeping <think> enabled with calibrated B1 + B2 + B3 surgery beats random controls on 4 / 4 reasoning models and lifts Qwen3-14B strict root-cause recall from 45.0% to 55.0%. Furthermore, distilled reasoning models (DeepSeek-R1-Distill-Qwen-7B, DeepSeek-R1-Distill-Llama-8B) and raw .gguf files have no enable_thinking=False template switch.

Section 4 takeaway: Each study supports its own claim. Calibration matched the requested shift on all 15 Stage-1 models. Project-Then-Heal kept local leakage at the float32 floor (float64 floor 3.18e-17 to 5.07e-17 in the RMS sweep) on every model where gradient projection did not. On 14 models, the calibrated 1.0x edits left public-benchmark scores within about 2 pooled points of base, as equal-size random edits did, with a pooled MMLU-Pro cost of 2.0 points and no significant crash-triage gain. Across 6 models in the RMS-relative dosing sweep (24,000 evaluations), sizing edits by σwriter\sigma_{\text{writer}} (5.85 to 78.15) showed that unhealed composed edits match norm-matched random controls. Direct 60-step heal-the-base (base_lora_1p0x) and healed-random (random_healed_rms_1p0x) controls show that on Qwen2.5-Math-7B-Instruct the 87 -> 93 GSM8K gain comes from the 60-step LoRA adaptation pass (93/100 on both controls, p = 1.000, consistent with the LoRA pass driving the accuracy lift), while ProjectThenHealLinear (composed_healed_rms_1p0x) reduces domain-subspace leakage from 4.75% to 5.08e-17 at zero accuracy cost; on Qwen2.5-Coder-7B-Instruct HumanEval, composed_healed_rms_1p0x (42/100) vs. base_lora_1p0x (37/100, p = 0.332) and random_healed_rms_1p0x (35/100, p = 0.189) is within sample noise at n = 100, while the lock reduces domain leakage from 3.69% to 3.34e-17. Finally, on the paired ASAN-120 vulnerability and patched-benign twin benchmark (9 models ×\times 7 arms, 7,560 evaluations), benign controls expose trivial one-sided predictions (BA ≈ 0.50) across all 5 non-reasoning models, whereas on the 4 <think> reasoning models composed_rms_1p0x beats random_rms_1p0x 4/4 on balanced accuracy (6W / 1L / 2T overall, sign-test p = 0.125) and lifts strict root-cause recall (RC) by +6.7 to +10.0 percentage points over base on DeepSeek-R1-Distill-Llama-8B (0.183 -> 0.250) and Qwen3-14B (0.450 -> 0.550).


5. Static Weight Auditing

Sections 1 to 4 edit weights. This section uses the same readers to inspect weights someone else may have edited, without running the model. Every number below comes from a receipt whose inputs were hashed before and after each run (pre_sha256 == post_sha256). That is a non-adversarial host-filesystem bracket, not descriptor-bound execution.

5.1 Spectral Trojan Auditing and the Vocabulary Phase Transition

secant audit-trojan (secant read --detect-anomalies --marchenko-pastur) implements a two-stage static spectral detector:

  1. Stage 1 (Iterated Outlier Singular-Value Peeling & Row/Column Spike Detection): Iteratively peels outlier singular values (σi>σMP\sigma_i > \sigma_{MP}) from the total Frobenius energy (∥W∥F2−∑i=1kσi2\lVert W\rVert_F^2 - \sum_{i=1}^k \sigma_i^2, the exact Frobenius energy of the rank-kk ablated matrix W−∑i=1kσiuivi⊤W - \sum_{i=1}^k \sigma_i u_i v_i^\top) until the residual Marchenko-Pastur bulk edge σMP=σentrydout(1+din/dout)\sigma_{MP} = \sigma_{\text{entry}}\sqrt{d_{\text{out}}}(1 + \sqrt{d_{\text{in}}/d_{\text{out}}}) reaches a fixed point (mp.rs), and checks row/column norm spikes (zero_rows, collapsed_rows, spike_cols).

  2. Stage 2 (Cross-Layer Sibling Modified Z-Score & Vocabulary Token Projection): Because natural trained weight matrices are heavy-tailed and first/last transformer blocks (layers.0 and the final block) interface directly with token embeddings, Stage 2 compares each tensor’s peeled σ1/σMP\sigma_1/\sigma_{MP} ratio against its architectural layer family (blk.*.ffn_down.weight, model.layers.*.mlp.down_proj.weight) via the Iglewicz-Hoaglin modified z-score (sibling_outlier when z>3.5z > 3.5 in a family of ≥4\ge 4 layers), while --vocab-tensor projects the leading left singular vector u1u_1 onto the unembedding matrix (E⋅u1E \cdot u_1) to surface its top promoted vocabulary tokens.

Trained weight matrices are non-i.i.d. and already sit well above the Marchenko-Pastur bulk edge on unedited checkpoints, so σ1/σMP\sigma_1/\sigma_{MP} serves as a relative ranking feature paired with the cross-layer sibling modified-Z test and --vocab-tensor projection rather than a standalone i.i.d. threshold. To measure when these signals fire, a rank-1 edit ΔW=θ e^T c⊤\Delta W = \theta\,\hat e_T\, c^\top was planted in the layer-12 MLP down projection of SmolLM2-1.7B-Instruct (SafeTensors, family_size = 24) and Qwen3.5-4B (BF16 GGUF, where blk.*.ffn_down.weight has family_size = 33 because llama.cpp exports the 32 decoder blocks blk.0..31 plus blk.32, the Multi-Token Prediction / MTP blk.32.nextn.* head block). Here e^T\hat e_T is the unit embedding row of a trigger token, and cc spreads equal weight over 16 evenly spaced input columns. The edit was planted at 12 relative Frobenius doses g=∥ΔW∥F/∥W∥Fg = \lVert\Delta W\rVert_F/\lVert W\rVert_F from 0 to 16%.

A rank-1 edit’s only singular value is σtrojan=∥ΔW∥2=∥ΔW∥F=g∥W∥F\sigma_{\text{trojan}} = \lVert\Delta W\rVert_2 = \lVert\Delta W\rVert_F = g\lVert W\rVert_F. The standalone singular-value equality reference (nominal crossover) where the planted perturbation’s spectral norm equals the unedited matrix’s leading singular value σ1(W)\sigma_1(W) is:

g∗=σ1(W)∥W∥F,g^* = \frac{\sigma_1(W)}{\lVert W\rVert_F},

which is 8.65% for SmolLM2 and 6.57% for Qwen. Because ΔW\Delta W and WW are not orthogonal in general, the exact dose at which the top singular vector of W+ΔWW + \Delta W aligns with the trigger direction depends on the overlap between ΔW\Delta W and the leading singular triplets of WW; empirically, the discrete post-hoc dose sweep (4%, 6%, 8%, 10%, 12%) brackets g∗g^* on both models.

Planted rank-1 trojan detection against relative Frobenius dose on SmolLM2-1.7B and Qwen3.5-4B, showing family statistics, sigma_2, vocabulary alignment and trigger-token rank

Figure 6:Detection signals against dose for both models. Doses 0 to 4% were pre-specified, and 6 to 16% were added after the pre-specified range showed nothing, so each threshold is post-hoc and an upper bound. The dashed verticals mark the nominal singular-value equality reference g∗=σ1(W)/∥W∥Fg^* = \sigma_1(W)/\lVert W\rVert_F.

SignalFirst tested dose, SmolLM2First tested dose, Qwen3.5-4BNeeds the base checkpoint?
Any automatic signal, pre-specified 0.10 to 4.00%nonenone
σ₂ rises (25.31 to 30.10; 2.112 to 2.678)6%6%yes: audit-trojan ranks σ₁ / σMP only
Trigger token in the promoted top 16 of u₁8% (rank 2, cos(u, u₁) = 0.569)8% (rank 1, cos(u, u₁) = 0.991)no, but a person has to read the column
Edited layer is family rank 1 by σ₁ / σMP10%10%no
Automatic sibling_outlier (z > 3.5)12% (z = 5.01)12% (z = 3.58)no
Sibling outliers on the unedited base0 of 240 of 33

The vocabulary jump happens across the sampled doses bracketing g∗g^*: cos⁡(u,u1)\cos(u, u_1) goes from 0.168 to 0.991 between 6% and 8% on Qwen (g∗=6.57%g^* = 6.57\%), and from 0.569 to 0.984 between 8% and 10% on SmolLM2 (g∗=8.65%g^* = 8.65\%). Well below g∗g^* the planted direction is nearly absent from u1u_1 (cos⁡<0.17\cos < 0.17 at 6% on both models). Close to g∗g^* the two directions mix (SmolLM2 at 8%: σtrojan/σ1=0.92\sigma_{\text{trojan}}/\sigma_1 = 0.92, cos⁡=0.569\cos = 0.569). Above g∗g^*, u1u_1 aligns with the planted direction (cos⁡>0.98\cos > 0.98). The automatic sibling test needs a further 39% to 83% of σ1\sigma_1 beyond that (σtrojan/σ1\sigma_{\text{trojan}}/\sigma_1 = 1.39 and 1.83 at the first flag). Excluding the MTP head block blk.32 (32-tensor decoder family blk.0..31) on Qwen3.5-4B leaves the 12% sibling-outlier crossover dose unchanged while raising blk.12’s modified z-score from 2.43 to 2.85 at 10%, from 3.58 to 4.21 at 12%, and from 5.92 to 6.94 at 16% (0 / 32 false positives on the unedited base). Full 12-dose tables: payload checks, Section 5.1.

Scope of the initial 12-dose single-layer study (w61e): one layer (layers.12.mlp.down_proj.weight), one token, and one 16-column placement per model, static weights only, with doses 0.00% to 4.00% pre-specified and 6.00% to 16.00% added post-hoc.

Fixed-Grid 17-Cell Multi-Layer, Multi-Placement, and Forward-Pass Behavioral Study

To replace the post-hoc single-layer boundary with a fixed-grid multi-layer and behavioral test, we executed a second, 11-dose, 17-cell campaign (w61j-trojan-multilayer-behavioral-20261109; receipt data/trojan_multilayer_20261109/trojan-multilayer-behavioral-receipt.json, SHA-256 0aad7ae7eb0a1d5f5b6e4bd85f31b6307e3317635c8af8e6a277a93d5fffc978). Prior to executing the first model, layer, or dose cell, the fixed dose grid g∈{0.0%,1.0%,2.0%,4.0%,6.0%,7.0%,8.0%,9.0%,10.0%,12.0%,16.0%}g \in \{0.0\%, 1.0\%, 2.0\%, 4.0\%, 6.0\%, 7.0\%, 8.0\%, 9.0\%, 10.0\%, 12.0\%, 16.0\%\} of ∥Wbase∥F\lVert W_{\text{base}}\rVert_F, the 17 (model, layer, placement) cells across SmolLM2-1.7B-Instruct (layers.4, 10, 12, 20 ×\times mlp.down_proj, self_attn.o_proj) and Qwen3.5-0.8B (layers.4, 12, 20 mlp.down_proj, layers.3, 11, 19 self_attn.o_proj, and layers.4, 12, 20 linear_attn.out_proj), the 16 calibration prompt pairs, the 12 strictly held-out evaluation prompt pairs (TRIGGER = " ZEBRA_OVERRIDE_991"), and the static and behavioral endpoints were written to data/trojan_multilayer_20261109/preregistration_spec.json (preregistration_sha256: f979471c41a4ec88933d7951ef4edd4aa052fd0f9efa6245be2c382d44f55b70, written to disk inside the campaign directory at preregistration_created_at_utc: 2026-11-09T17:11:22Z and hash-verified at script startup at execution_started_at_utc: 2026-11-09T17:17:35Z; because the specification file was written inside the campaign workspace prior to cell execution rather than committed to git before campaign launch, we report it as a fixed-grid study rather than an externally pre-committed preregistration). For each cell, utrojan=eτ∗/∥eτ∗∥2u_{\text{trojan}} = e_{\tau^*} / \lVert e_{\tau^*}\rVert_2 is the unit unembedding row of τ∗\tau^* (41401 " giraffe" on SmolLM2-1.7B-Instruct; 16657 " cheese" on Qwen3.5-0.8B), and vtriggerv_{\text{trigger}} (K=128K = 128 active columns via secant.wsp.plan.v1 rank1-columns, ∥vtrigger∥2=1\lVert v_{\text{trigger}}\rVert_2 = 1) is the mean calibration trigger writer-input activation orthogonalized against the top-24 SVD directions of calibration clean token activations. At every dose, we recorded both the static two-stage secant audit (including exact full-vocabulary static rank of τ∗\tau^* in Eu1E u_1) and a real PyTorch forward pass on the 12 held-out trigger and clean prompt pairs (delta_logit_target, median vocabulary rank of τ∗\tau^*, greedy top-1 and top-5 flip rates on triggered prompts, and false-flip / top-1 preservation rates on clean prompts):

| Model | Layer & Placement | Depth | Base ||W||_F | Base sigma_1 | Base sigma_1/MP | Theoretical g* = sigma_1/||W||_F | Static Stage-2 g_vocab16 (tau* in top-16) | Static Stage-1 g_Z3.5 (Z > 3.5) | Behavioral g_behav_top5 (>=50%) | Behavioral g_behav_top1 (>=50%) | |---|---|---|---:|---:|---:|---:|---:|---:|---:|---:| | SmolLM2-1.7B | layers.4.mlp.down_proj | early | 448.65 | 32.873 | 2.223 | 7.33% | 7.0% (#1) | 12.0% | 16.0% | >16.0% | | SmolLM2-1.7B | layers.10.mlp.down_proj | mid_a | 458.97 | 42.113 | 2.791 | 9.18% | 9.0% (#1) | 12.0% | 12.0% | 12.0% (100%) | | SmolLM2-1.7B | layers.12.mlp.down_proj | mid_b | 458.67 | 39.697 | 2.632 | 8.65% | 8.0% (#2) | 12.0% | 12.0% | 12.0% (100%) | | SmolLM2-1.7B | layers.20.mlp.down_proj | late | 484.08 | 18.985 | 1.187 | 3.92% | 4.0% (#1) | 12.0% | 4.0% | 6.0% (100%) | | SmolLM2-1.7B | layers.4.self_attn.o_proj | early | 175.61 | 23.072 | 3.018 | 13.14% | 16.0% (#1) | >16.0% | >16.0% | >16.0% | | SmolLM2-1.7B | layers.10.self_attn.o_proj | mid_a | 189.90 | 17.196 | 2.071 | 9.06% | 8.0% (#3) | >16.0% | >16.0% | >16.0% | | SmolLM2-1.7B | layers.12.self_attn.o_proj | mid_b | 200.39 | 18.584 | 2.121 | 9.27% | 8.0% (#8) | >16.0% | >16.0% | >16.0% | | SmolLM2-1.7B | layers.20.self_attn.o_proj | late | 283.20 | 39.015 | 3.163 | 13.78% | 16.0% (#1) | >16.0% | 16.0% | >16.0% | | Qwen3.5-0.8B | layers.4.mlp.down_proj | early | 15.58 | 1.426 | 1.927 | 9.15% | 9.0% (#1) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.12.mlp.down_proj | mid | 15.22 | 1.433 | 1.991 | 9.42% | 9.0% (#1) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.20.mlp.down_proj | late | 17.51 | 1.230 | 1.476 | 7.03% | 6.0% (#1) | >16.0% | 4.0% | 4.0% (91.7%) | | Qwen3.5-0.8B | layers.3.self_attn.o_proj | early | 17.63 | 2.022 | 2.187 | 11.47% | 12.0% (#1) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.11.self_attn.o_proj | mid | 16.86 | 2.171 | 2.478 | 12.87% | 12.0% (#1) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.19.self_attn.o_proj | late | 24.21 | 2.071 | 1.623 | 8.55% | 7.0% (#2) | >16.0% | 6.0% | 6.0% (58.3%) | | Qwen3.5-0.8B | layers.4.linear_attn.out_proj | early | 16.96 | 2.118 | 2.392 | 12.49% | 10.0% (#5) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.12.linear_attn.out_proj | mid | 16.22 | 2.229 | 2.656 | 13.75% | 16.0% (#1) | >16.0% | >16.0% | >16.0% | | Qwen3.5-0.8B | layers.20.linear_attn.out_proj | late | 15.25 | 1.464 | 1.827 | 9.60% | 9.0% (#1) | >16.0% | 4.0% | 4.0% (91.7%) |

Across all 17 cells (187 dose points), three conclusions hold:

  1. Static Stage-2 vocabulary projection tracks g∗=σ1(Wbase)/∥Wbase∥Fg^* = \sigma_1(W_{\text{base}})/\lVert W_{\text{base}}\rVert_F across depths and writer families: In all 17 cells, the dose gvocab16g_{\text{vocab16}} at which τ∗\tau^* enters the top-16 of Eu1E u_1 matches g∗g^* within a single grid interval (mean ∣gvocab16−g∗∣=0.87\text{mean } |g_{\text{vocab16}} - g^*| = 0.87 percentage points), including SmolLM2-1.7B-Instruct layers.20.mlp.down_proj where a low baseline ratio (σ1/σMP=1.187\sigma_1/\sigma_{MP} = 1.187, g∗=3.92%g^* = 3.92\%) moves static detection down to 4.0% (stRank = 1, ∣cos⁡(utrojan,u1)∣=0.9449|\cos(u_{\text{trojan}}, u_1)| = 0.9449).

  2. The automatic scalar flag (sibling Z > 3.5) is weak (13 / 17 cells missed up to 16%); the human-read Stage-2 vocabulary projection (E * u_1) is where the signal is: While the automatic scalar sibling outlier (Z > 3.5) fires at 12.0% across all four SmolLM2 mlp.down_proj layers, it never crosses 3.5 up to 16.0% in any of the four SmolLM2 self_attn.o_proj cells or the nine Qwen3.5-0.8B cells (13 / 17 cells blind in scalar ZZ up to 16%), whereas the human-read Stage-2 vocabulary projection (E * u_1, a ranked top-16 token list that requires a reader inspecting the promoted tokens) places the planted target token in the top 16 in all 17 / 17 cells once g≥g∗g \ge g^*.

  3. Layer depth governs whether static signals precede forward-pass behavioral hijacking—and in three late-layer cells the edit changed model output below any single-file signal: In early and middle layers (L3/L4, L10, L11/L12), downstream residual writes across the remaining 12 to 20 blocks dilute the unembedding-aligned perturbation before final RMSNorm and lm_head, so the top-16 vocabulary projection fires strictly below the behavioral hijack floor (gvocab16<gbehav_top1g_{\text{vocab16}} < g_{\text{behav\_top1}}: 9.0% and 8.0% vs. 12.0% on SmolLM2 L10 and L12 mlp.down_proj, and 7.0%-16.0% vs. >16.0% across all early layers and middle attention writers, with 0.0% false-trigger rate on held-out clean prompts). Conversely, at late layers (L19/L20, only 3 to 4 blocks before lm_head), residual dilution is minimal: on SmolLM2 L20.mlp.down_proj (g∗=3.92%g^* = 3.92\%), the top-16 vocabulary signal (g_vocab16 = 4.0%) coincides with top-5 behavioral promotion (4.0%) and precedes top-1 greedy flipping (6.0%), whereas in the three Qwen3.5-0.8B late-layer cells (L20.mlp.down_proj, L19.self_attn.o_proj, and L20.linear_attn.out_proj, where baseline g∗=7.03%–9.60%g^* = 7.03\%\text{--}9.60\%), the edit changed model output (58.3% to 91.7% greedy top-1 flips at 4.0%-6.0%, delta_logit = +12.69 to +16.60 nats) at a dose 1.0 to 5.0 percentage points below where any single-file signal appeared (gvocab16=6.0%–9.0%g_{\text{vocab16}} = 6.0\%\text{--}9.0\%). Full dose-by-dose tables: payload checks, Section 5.1.

5.2 Quantized Scale-Header Sanitization and Why Naive Subnormal Rejection Fails

In GGUF quantized blocks (Q4_0, Q4_1, Q5_0, Q5_1, Q8_0, Q2_K, Q3_K, Q4_K, Q5_K, Q6_K), one or two f16 header fields (d, dmin, or m) scale 32 or 256 weights. By default, secant sanitize checks every f16 scale header across all 10 standard GGUF quantized formats for NaN and Inf. --clamp-extreme and --flush-subnormal add stricter, opt-in diagnostics. Across our 10-checkpoint production GGUF and SafeTensors verification suite (186,870,528 quantized blocks across 912 quantized tensors and 3,258,570,112 float elements across the 10 files, including mixed Q4_K_M shards containing Q4_K + Q6_K, TinyLlama-Q2_K containing Q2_K + Q3_K + Q6_K, stories15M-Q4_0, and Qwen3.5-4B Q8_0/Q4_K), planted NaN and Inf scales across all 15 f16 header slots were found with 100% recall at the exact block, field, and file offset, and --clamp-nonfinite produced copies that rescanned with 0 findings. The diagnostic sweep also measured the benign background: 272,730 subnormal scales in Q8_0 (0.20% of 135,168,000 blocks) and 8,992,791 of 33,792,000 header scale fields (d, dmin) across 16,896,000 Q4_K superblocks (0.53 per super-block), with 0 observed false positives across the 10 tested production GGUF and SafeTensors checkpoints (10 / 10 status: "clean").

A naive security filter that rejects any floating-point scale where fpclassify(d) != FP_NORMAL (or abs(d) < 1e-4) therefore false-positives on every real production .gguf checkpoint. In Q4_K 256-weight super-blocks, eight sub-blocks of 32 weights carry 6-bit integer scales sj∈[0,63]s_j \in [0, 63] and mins mj∈[0,63]m_j \in [0, 63], while the super-block header stores d and dmin as IEEE-754 binary16 (ggml_half, where the smallest positive normal number is 2−14≈6.1035×10−52^{-14} \approx 6.1035 \times 10^{-5} at bit pattern 0x0400, and positive subnormals span 0x0001 to 0x03FF). Because the sub-block scale is divided by 63 to form the super-block scale d (scaling a 4-bit weight’s maximum magnitude max⁡∣xi∣\max |x_i| by 15×63=94515 \times 63 = 945), any sub-block whose maximum weight magnitude sits below 945×6.1035×10−5≈0.0577945 \times 6.1035 \times 10^{-5} \approx 0.0577 (or a sub-block scale near 2.8e-03 before dividing by 63) produces a legitimate FP16 subnormal d value (for example, across dense blk.*.ffn_down.weight and token_embd.weight in Qwen3.5-4B Q4_K, or d = 4.55e-05 < 6.1035e-05 in blk.0.ffn_down_exps row 0 of llama.cpp’s MoE test fixture), while zero-padded blocks carry d = 0.0 (0x0000). Because GGUF weight dequantization multiplies by d and dmin (w=d⋅sj⋅q−dmin⁡⋅mjw = d \cdot s_j \cdot q - d_{\min} \cdot m_j) and never divides by them at inference time, zero and subnormal FP16 block scales cannot trigger division by zero or float-to-integer overflow.

Under secant sanitize’s default Rule B3-2A policy, legitimate zero (0x0000) and FP16 subnormal (0x0001..0x03FF) block scales are permitted across all 10 supported GGUF quantized formats (Q4_0, Q4_1, Q5_0, Q5_1, Q8_0, Q2_K, Q3_K, Q4_K, Q5_K, Q6_K). Only NaN (quant_scale_nan) and ±Inf (quant_scale_inf) fail the default check. --clamp-nonfinite zeroes the complete affected block, while --flush-subnormal and --clamp-extreme are opt-in stricter policies. Across the receipted 10-checkpoint verification corpus (summary.json SHA-256 399143323a1784f2b0b5f0e3ac99a55df18bb43cb843d20d921d2eaf358a3ccd, covering 2,194 total tensors, 912 quantized tensors, 186,870,528 quantized blocks, 272,730 subnormal Q8_0 scales, and 8,992,791 subnormal Q4_K header scales), default Rule B3-2A passed all 10 / 10 checkpoints with 0 false positives; an earlier unreceipted dogfood run on Qwen2.5-1.5B and Llama-3.2-3B Q4_K_M and Q8_0 files similarly reported 2,723/2,723 tensors clean across 16,139 subnormal scales (4.55e-05). Files containing unreviewed quantized types (Q8_K, IQ*, TQ*) fail closed with exit 2 (status: "unknown"). Details: payload checks, quantized scale headers.

5.3 A Spectral and Vocabulary Atlas Over a 46-File Local Inventory (2,619 Analyzed Weight Matrices: 14 Full Reads and 16 Scoped Variants)

secant read was run with singular values, column statistics, anomaly detection and vocabulary projection over a 46-file local inventory (2,619 analyzed weight matrices in total: 2,574 across 14 checkpoints read in full and 45 across 16 edited variants read only where they differ from base, plus 16 vocab-only files that read refuses). That gave 429 receipts covering 2,619 tensors, 0 of them non-finite. 323 of 5,101 singular triplets (6.3%) hit the iteration cap. The SafeTensors and GGUF copies of Qwen3.5-4B agree bit-for-bit on σ1..σ3\sigma_1..\sigma_3 for all 32 MLP down projections. The unedited layer-12 σ1\sigma_1 values in Section 5.1 match this atlas exactly. Separately, the native secant scan-sinks port was checked byte-for-byte against its Go oracle across the synthetic fixture (13 hits) and clean git archive HEAD exports of seven pinned external inference and ML codebases (14,512 pattern hits across 13,675 files in total: llama.cpp ggml/src @ 223373742b 2,498, whisper.cpp @ 95ea8f9 2,725, vLLM csrc @ ee0da84ab9e 692, XNNPACK @ 0d17d45 8,070, tract @ 5b7ef4f8c 239, sentencepiece @ bcd4d8c 15 with 1 file skipped > 4 MiB and incomplete: true, and OpenCV modules/dnn @ 51ba88b 273; or 14,734 hits when local working checkouts retain gitignored build/ directories in XNNPACK [8,171] and sentencepiece [136], with both CLIs producing byte-identical masked receipts in both settings). Those hits are untriaged hypotheses for oracle parity, not bugs. See payload checks, Sections 6 and 7.

5.4 Boundary-3 Numerical-Domain Vulnerabilities, Scanner Blind Spots, and Pre-Load Sanitization

While safetensors eliminates arbitrary code execution during deserialization (unlike pickle), memory-safe container parsing does not guarantee that raw floating-point, quantized scale, or integer routing payloads are safe for downstream C, C++, or CUDA inference consumers. Secant organizes checkpoint auditing into three distinct trust boundaries:

The 10-checkpoint production verification corpus (summary.json SHA-256 399143323a1784f2b0b5f0e3ac99a55df18bb43cb843d20d921d2eaf358a3ccd) measured the false-positive side of this policy across 2,194 total tensors (912 quantized tensors, 186,870,528 quantized blocks, 272,730 subnormal Q8_0 scales, and 8,992,791 subnormal Q4_K header scales; an earlier unreceipted dogfood run on Qwen2.5-1.5B and Llama-3.2-3B Q4_K_M and Q8_0 files also reported 16,139 legitimate FP16 subnormal scale fields across 2,723 tensors down to 4.55e-05 < 6.1035e-05). Default Rule B3-2A accepted every checkpoint (10 / 10 clean) and every subnormal scale. Planted controls gave 100% detection recall for non-finite block headers, divisor scales below --divisor-floor (1e-12f), zero rope_freqs, and negative or upper-bound values in g_idx, expert_map, full_row_indices, hash_indices_table, expert_ids, selected_experts, topk_ids, and router_indices. --clamp-nonfinite repaired the non-finite block headers and non-finite divisor scales; finite non-positive/below-floor divisor scales, zero rope_freqs, and invalid routing or index IDs were refused (and unbounded index tensors failed closed with UNKNOWN, exit 2) because no format-independent replacement is safe.

A separate source audit shows why the pre-load rules matter to consumers. Across inference source trees, secant scan-sinks produced 185 review leads across B3-SINK-01..06 in vLLM, covering unchecked CUDA comparison-sentinel (COMPARE_SENTINEL_COLLAPSE) and routing/permutation index (UNVALIDATED_ROUTING_OR_INDEX_TENSOR) patterns, alongside historical g_idx gather indexing in csrc/quantization/gptq/q_gemm.cu (later removed in upstream commit 2c9d68f80). Across our broader Boundary-3 audit of inference stacks, three general post-deserialization failure classes illustrate how structurally valid containers and companion configs cross Boundary 3 into runtime or native indexing sinks:

  1. Companion-config control token ID -> out-of-bounds logits indexing (Rule S-0, since v0.3.0): When a companion configuration file (config.json or generation_config.json) specifies a stop or control token ID (eos_token_id, bos_token_id, pad_token_id, decoder_start_token_id) outside [0, vocab_size) while config.json and the .safetensors weights remain structurally valid, an unguarded stop-token suppression path can index a [batch_size, vocab_size] logits buffer without bounds validation. Since v0.3.0, secant sanitize blocks out-of-range control token IDs and vocabulary-row mismatches pre-load via Rule S-0 (s0_companion_token_id_oob and s0_companion_vocab_size_mismatch).

  2. Container header layer-count relation -> unsigned integer wrap (Rule S-0, since v0.3.0): When a container header or companion config.json specifies a dense-prefix block count (leading_dense_block or first_k_dense_replace) larger than the total block count (num_hidden_layers), an unguarded 32-bit unsigned subtraction wraps around to UINT32_MAX (0xFFFFFFFF). Since v0.3.0, secant sanitize blocks invalid companion layer-count relations pre-load via Rule S-0 (s0_companion_leading_dense_block).

  3. Integer MoE routing table -> out-of-bounds host or device array indexing (Rule B3-3): When a structurally valid checkpoint stores an integer token-to-expert routing or permutation tensor containing an expert ID outside [-1, num_experts), an unguarded loader or MoE dispatch loop that uses the stored integer directly as a table or buffer offset reads or writes out of bounds on the host or device heap. secant sanitize --num-experts <E> blocks out-of-range and negative routing IDs pre-load via Rule B3-3 (routing_id_out_of_range / routing_id_negative), and secant probe --class all --format both --out-dir <dir> --receipt <json> --attempt-id <id> deterministically generates self-verified synthetic witness bundles across all four Boundary-3 failure classes (class1..class4) out of the box.

Core TensorFlow provides a related scalar and Eigen conversion target. At commit 0e2be16cc08c226b65af3ff7a8ba560b953b60b4, FloatToQuantizedUnclamped<T> in tensorflow/core/kernels/quantization_utils.h:46-61 divides by range_max - range_min before converting rounded values to int64_t; the same file has explicit equal-range cases at lines 50-52 and 215-220. The active Boundary-3 harness targets NaN and infinity conversions and checks that range_min == range_max remains safe across both paths. Runtime results from that campaign are outside this paper’s retained Secant test set and are NOT_RUN here.

Proof of the safetensors Parser Boundary and Static Scanner Blind Spot

In huggingface/safetensors (safetensors/src/tensor.rs), calling SafeTensors::deserialize(buffer) invokes SafeTensors::read_metadata(buffer) followed by Metadata::validate(&self). Metadata::validate() checks only five structural invariants:

  1. Offset contiguity: Each tensor’s data_offsets (s, e) must start at the previous tensor’s end (s == start) and satisfy e >= s (SafeTensorError::InvalidOffset).

  2. Shape-product overflow: Multiplying non-zero dimensions in info.shape by info.dtype.bitsize() via try_fold must not overflow usize (SafeTensorError::ValidationOverflow).

  3. Bit-count byte alignment: The total bit count nbits must be byte-aligned (nbits % 8 == 0, raising SafeTensorError::MisalignedSlice otherwise).

  4. Byte-span equality: The byte count nbits / 8 must equal the offset span e - s (SafeTensorError::TensorInvalidInfo).

  5. Final buffer length: The final offset buffer_end + 8 + n must equal the buffer length.

Once validate() returns Ok, deserialize() returns a borrowed slice &buffer[8 + n..] without inspecting a single byte of payload data. Existing static model scanners share the same blind spot because they inspect only Boundary-1 callables or Boundary-2 headers: ModelScan 0.8.6 (Protect AI) scans Pickle, H5, Keras, and SavedModel archives for unsafe opcodes (REDUCE, GLOBAL) and skips .gguf files and .safetensors numerical payloads entirely (arXiv:2608.27424); Fickling 0.1.6+ (Trail of Bits) and ModelAudit 0.2 analyze Python pickle ASTs and explicitly recommend .safetensors as an inherently safe format without parsing .safetensors or .gguf tensor values; and on the Hugging Face Hub, picklescan scans Python pickle opcodes, ClamAV scans for known malware signatures, and the Hub’s model-viewer metadata parser reads .safetensors and .gguf headers to render tensor shapes and chat templates without scanning binary tensor payloads.

Four Boundary-3 Failure Classes and Cross-ISA Hardware Divergence (x86-64 vs. ARM64 vs. CUDA PTX)

At Boundary 3, valid container payloads trigger native memory corruption or process aborts through four failure classes whose behavior diverges sharply across x86-64, ARM64, and NVIDIA CUDA PTX:

  1. Class I: IEEE-754 Comparison-Sentinel Exhaustion (Prior Art: Fornaro, Aug 2026). On August 5, 2026, Vincenzo Fornaro (JustVugg/colibri, GHSA-5xpg-vw35-2687, “NaN router logits leave MoE top-k selection at best=-1, causing negative-index heap OOB read/write and negative-offset pread”) disclosed that injecting NaN weights into an MoE router/gate tensor in .safetensors (inkling, kimi_k3, and olmoe) causes if (val > best_val) inside an argmax loop initialized to best = -1, best_val = -FLT_MAX to evaluate false on every iteration, returning best = -1 and indexing expert_offsets[-1] out of bounds on the heap (and passing a negative offset to pread). Similarly, when top-k selection initializes the winning expert ID per pass to 0 (as in vllm#39288 / #39077 / #39244), NaN > max_val is always false, emitting duplicate expert 0 assignments ([0, 0, ...]) that crash downstream MoE kernels on uninitialized row pointers.

  2. Class II: Hardware ISA-Divergent Float-to-Signed-Integer Cast Memory Corruption (CVTTSS2SI/VCVTTPS2DQ vs. FCVTZS vs. cvt.rzi.s32.f32). In C/C++ inference kernels that cast floating-point scores, coordinate offsets, or quantized values directly to signed integers via static_cast<int32_t>(val) before array indexing, C++ ([conv.fpint]) leaves out-of-range and NaN conversions undefined, and hardware ISAs diverge:

    • Sub-Primitive 2A (qNaN 0x7FC00000): On x86-64, scalar CVTTSS2SI and vector VCVTTPS2DQ emit the Integer Indefinite value 0x80000000 (INT32_MIN = -2147483648), causing table[idx] to dereference base - 8 GiB and fault immediately if unguarded or guarded only by an upper bound (idx >= N). On ARM64 (AArch64 FCVTZS, used on Apple Silicon and AWS Graviton) and NVIDIA CUDA PTX (cvt.rzi.s32.f32 / cvt.rni.s32.f32), hardware converts NaN -> 0, passing two-sided 0 <= idx && idx < N checks and benignly reading table[0].

    • Sub-Primitive 2B (Positive Overflow +1.0e38 0x7E967699 / +Inf): On ARM64 (FCVTZS) and CUDA PTX (cvt.rzi.s32.f32), positive overflow saturates to +2147483647 (INT32_MAX), which is caught by a one-sided upper clamp if (idx >= N) idx = N - 1;. On production x86-64 servers, CVTTSS2SI / VCVTTPS2DQ instead emits 0x80000000 (INT32_MIN = -2147483648) for all out-of-range floats outside [-2147483648.0f, 2147483520.0f], flipping the sign from positive to negative, bypassing upper-only clamps, and indexing at -2147483648. Even on CUDA PTX, narrowing a saturated 32-bit INT32_MAX (0x7FFFFFFF) directly to int8_t before clamping ((int8_t)__float2int_rn(x / scale)) extracts the low byte 0xFF (-1).

  3. Class III: Strict Weak Ordering, GPU Radix Twiddle, and Cumulative-Sum Collapse. In CPU std::sort, a comparator that violates irreflexivity on NaN (!(a < b) or <= on N≥17N \ge 17 elements, as in openxla/xla#52412) causes GNU libstdc++ __unguarded_partition to increment its pointer past the end of the buffer with zero bounds checks, while in cumulative-sum token samplers (llama_sampler_dist_apply, llama.cpp#29686), a single NaN probability makes sum_run >= sum_tgt evaluate to false on every token and triggers assert(found). On the GPU, NVIDIA CUB cub::BlockRadixSort::SortDescending (Traits<float>::TwiddleIn) does not execute floating-point comparisons: it reinterprets each float as uint32_t and flips the sign bit (u ^ 0x80000000) when the sign bit is 0 or all 32 bits (u ^ 0xFFFFFFFF) when the sign bit is 1. That bitwise twiddle maps positive qNaN (0x7FC00000 -> 0xFFC00000) strictly above +Inf (0x7F800000 -> 0xFF800000), placing +qNaN at index 0 as the #1 highest-scoring winner in GPU top-k sampling and MoE routing.

  4. Class IV: Unchecked Integer Routing, Permutation, and Dispatch Tables. Integer tensors (I32, I16, U8) stored inside structurally valid checkpoints act directly as gather/scatter array indices or function-pointer selectors, including GPTQ group-index permutation arrays g_idx (CVE-2026-86288 in GPTQModel, vllm#48470, exllamav2#817), ExLlamaV3 function-pointer table dispatch (CVE-2026-84286 / GHSA-mw4q-pwhm-35f7), SqueezeLLM full_row_indices (#77), and LiteRT negative subgraph output indices (LiteRT#8609).

We verified both Class-II sub-primitives empirically by compiling and running the identical C++ harness (archived experiment receipt identifier cross-isa-fpint-conformance-20261106/fpint_harness.cpp, clang++ -O2) on a local Apple M-series ARM64 workstation (fcvtzs w0, s0) and a Linux x86-64 workstation (AMD Ryzen AI Max+ 395, cvttss2si %xmm0, %eax) against the same 824-byte class2-scale-bias-nan-extreme.safetensors fixture (archived receipt identifier cross-isa-fpint-conformance-20261106/evidence/class2-scale-bias-nan-extreme.safetensors, SHA-256: f0797fa931211b0a2be82df14bdd1876c4e11c5a16f37076b50afc9b7364448a) and its secant sanitize --clamp-nonfinite --max-abs 10000-remediated counterpart (archived receipt identifier cross-isa-fpint-conformance-20261106/evidence/clean.safetensors, SHA-256: 48104b2749e36d45e94a9bf85bbabea1d21f231d287fd6dd8efc2a1a38ee7d10):

Fixture Cell (scale tensor)Raw Float32 Bits & ValueARM64 (Apple Silicon, fcvtzs) int32_t Indexx86-64 (AMD Zen 5, cvttss2si) int32_t IndexPost-secant sanitize (clean.safetensors, Both ISAs)
cell=0 (Sub-Primitive 2A)0x7fc00000 (qNaN)0-21474836480
cell=1 (Sub-Primitive 2B)0x7e967699 (+1.0e38)+2147483647-214748364810000
cell=2 (Negative overflow)0xfe967699 (-1.0e38)-2147483648-2147483648-10000

While Hanzo AI HIP-0113 (Section 4.5, 2026) documented that FCVTZS (0) vs. CVTTSD2SI (INT_MIN) causes cross-architecture consensus divergence when quantizing non-finite floats into int8 vectors, Secant connects both the qNaN (0 vs. INT_MIN) and positive-overflow (INT_MAX vs. INT_MIN) hardware cast asymmetries directly to architecture-divergent C/C++ memory-corruption exploit primitives and pairs static payload sanitization (secant sanitize) with C/C++ source sink scanning (secant scan-sinks).

Pre-Load Sanitization Rules (Rule S-0 through Rule B3-3; 0 observed false positives on 10 checkpoints)

To block Boundary-3 Classes I through IV prior to model load while achieving 0 observed false positives across the 10 tested production GGUF and SafeTensors checkpoints (with rule-level B3-2B and B3-3 support for GPTQ, AWQ, and FP8 validated on synthetic fixtures), pre-load sanitization separates multiplicative weight-block scales from divisor activation scales and integer routing indices:

Rule IDTarget Tensor / Block ScopeExact Mathematical & Bitwise InvariantFailure Classes BlockedWhy Legitimate Checkpoints Pass
Rule S-0All .safetensors and .gguf headers plus sibling config.json / generation_config.json (companion-config checks since v0.3.0)Checked 64-bit span arithmetic; numel == 1 on scalar loads; GGUF MoE metadata expert_count > 0 and 1 <= expert_used_count <= expert_count; and (since v0.3.0) SafeTensors sibling config.json / generation_config.json vocab_size <= embed_rows, 0 <= eos/bos/pad/decoder_start_token_id < vocab_size, 1 <= num_experts_per_tok <= num_local_experts, and 0 <= leading_dense_block <= num_hidden_layersBoundary-2 Overflows, Companion-Config OOB & Class III/IV partial_sort OOBWell-formed checkpoints have non-wrapping spans and consistent MoE and companion-config metadata
Rule B3-1Unquantized float weights, norms, and router biases (F32, BF16, F16, FP8)Bitwise finiteness check rejecting NaN and ±Inf: F32 (u32 & 0x7F800000) != 0x7F800000, BF16 (u16 & 0x7F80) != 0x7F80, F16 (u16 & 0x7C00) != 0x7C00Classes I, II, & IIITrained weights, norms, and e_score_correction_bias are always finite
Rule B3-2AMultiplicative GGUF block headers (ggml_half d, dmin) and W4A16/W8A16 scalesPermit 0.0 (0x0000) and subnormals (0x0001..0x03FF); reject only FP16 exponent 0x1F: (d_u16 & 0x7C00) != 0x7C00 and (dmin_u16 & 0x7C00) != 0x7C00 in a strided pass by ggml_type_size(type)Classes I, II, & IIILegitimate Q4_K subnormals (such as across dense blk.*.ffn_down.weight in Qwen3.5-4B Q4_K, or 4.55e-05 < 6.1035e-05 in blk.0.ffn_down_exps row 0 of llama.cpp’s MoE fixture) and zero-padded blocks have exponent 0, not 0x1F
Rule B3-2BDivisor activation and KV-cache scales (input_scale, k_scale, v_scale, q_scale, y_scale, prob_scale, *scale_inv) plus rope_freqsStrictly positive normal floor: isfinite(s) && s >= --divisor-floor (default 1e-12f) and rope_freqs != 0; --clamp-nonfinite clamps only non-finite divisor scales while leaving finite non-positive/below-floor scales as findingsClass II (x / 0.0f and subnormal divisor overflow to 0x80000000 on x86-64)Calibrated macroscopic activation ranges are never zero or subnormal
Rule B3-3Routing tensors (tid2eid, expert_id*) and integer index tensors (g_idx, expert_map, full_row_indices, hash_indices_table)Strict two-sided bounds ([0, bound), or [-1, bound) for expert_map, with sibling-inferred bounds for g_idx and full_row_indices and fail-closed UNKNOWN exit 2 when an index tensor is unbounded)Class IV (CVE-2026-86288, CVE-2026-84286, vllm#48470)Every valid quantized group or MoE routing index lies strictly inside its declared range

Section 5 takeaway: The spectral reader sees a planted rank-1 edit once its relative Frobenius dose reaches the neighborhood of the nominal singular-value equality reference g∗=σ1(W)/∥W∥Fg^* = \sigma_1(W)/\lVert W\rVert_F. The vocabulary projection shows it first, and the automatic sibling test shows it later. Below that region, a single-file audit sees nothing in these tests. At Boundary 3, SafeTensors::deserialize() (Metadata::validate()) and existing static scanners (ModelScan, Fickling, ModelAudit, and Hugging Face Hub picklescan / ClamAV / header parsers) never inspect numerical payloads, whereas secant sanitize applies the pre-load rules with 0 observed false positives on the 10 tested checkpoints (Rule B3-1, Rule B3-2A vs. Rule B3-2B, and Rule B3-3, with 0 observed false positives across the 10 tested production GGUF and SafeTensors checkpoints), neutralizing ISA-portable best = -1 argmax bypasses, NVIDIA CUB +qNaN radix-sort promotion, x86-64 CVTTSS2SI (INT32_MIN) vs. ARM64 FCVTZS (0 / INT32_MAX) cast-divergent memory corruption, and out-of-range Class IV index tables.


Orthogonal projection, quantized file editing, subspace-constrained LoRA, and static tensor auditing build upon rapid developments across mechanistic interpretability, parameter-efficient fine-tuning, and ML systems security between 2022 and November 2026:

6.1 Summary Matrix of Prior Art vs. Secant Contributions

Before mapping the broader literature, the table below compares the scope of Takehi, Teoh, Zhang, and Khattab (Sparks of Weight-Space Programming, MIT CSAIL, November 2, 2026) with the multi-domain evaluation in this paper:

DimensionTakehi et al. (MIT CSAIL, Nov 2, 2026)Secant (This Paper)
Models & ScaleQwen3.5-0.8B (0.8B) for the quantitative reasoning-loop edit, plus exploratory behavioral probes on small MLP policies and denoisers, character-level transformers, and two Gemma 3 270M fine-tunes17 completed benchmark model identities in the Stage-2 + RMS suites (0.8B to 32.8B) (14 five-arm Stage-2 models + 3 additional RMS models Qwen2.5-Math-7B, Qwen2.5-Coder-7B, Qwen3-4B, plus Gemma-2-27B 300-row partial baseline), 17 checkpoints in the PTH study (2 Regime A + 1 Regime B + 14 Regime C, 0.8B to 72.7B, including 70.6B / 72.7B single-shard checks), and a 15-model Stage-1 calibration/adapter suite
Benchmarks & Domains8 benchmarks on Qwen3.5-0.8B (MATH-500 7.9% -> 48.1%, GSM8K 13.8% -> 67.1%, IFEval 21.0% -> 62.3%, plus AMC23, Minerva Math, OlympiadBench, GPQA Diamond, and MMLU-Pro) under 32,768-token stochastic sampling6 benchmark suites (59,440 H100 rows = 59,140 completed-cohort rows + 300 partial baseline rows, plus 4-arm Qwen3.5-0.8B MATH-500 attribution): MATH-500 (13,100, plus 400 in the separate 4-arm test), GSM8K (13,100), MMLU-Pro (13,100), HumanEval code generation (10,480), ASan-30 (2,100), and paired ASAN-120 (7,560: 60 vulnerable C/C++ functions + 60 patched benign twins across 12 CWE families)
Multi-Subspace, Calibration & ControlsAutonomous agent (gpt-6-astra, Astra) under a 10/25/50 forward-pass budget subtracting one loop direction (B1, layers 15 & 19, 64 down_proj output columns/layer, 0.016% of weights; relative_change 0.106 and 0.081 in p50c, while an earlier 30-matrix p10c run published explicit scalar 1.5)3 orthogonalized subspaces (B1 loop + B2 refusal + B3 root-cause) with R−1R^{-1} cross-projection compensation, sized via Target-Shift ($\beta =
Math, Code & Reasoning OutcomesQwen3.5-0.8B loop suppression lifts MATH-500 7.9% -> 48.1%, GSM8K 13.8% -> 67.1%, and IFEval 21.0% -> 62.3% by preventing <think> timeoutsQwen3.5-0.8B MATH-500 (4,096 tokens): thinking_off 48.0% vs. thinking_on 1.0% (p=1.42×10−14p = 1.42 \times 10^{-14}), and with <think> on secant_b1_edit (24.0%, 64% closed) beats 3 orthogonal random_norm_matched seeds (0.0%, 2.0%, 1.0% final, mean 1.0% ± 1.0%; 2%, 6%, 1% closed, mean 3.0% ± 2.6%; Holm p≤8.39×10−5p \le 8.39 \times 10^{-5}); Qwen3.5-4B <think> closure 0/30 -> 21/30 at 1.0x and 30/30 at a 1.5x loop dose (p=1.86×10−9p = 1.86 \times 10^{-9} vs. base; random controls 0/30); Qwen3-8B GSM8K 18% -> 30% on both composed (p=0.017p = 0.017) and random (p=0.029p = 0.029); Qwen2.5-Math-7B GSM8K 87% -> 93% (p=0.031p = 0.031 unadjusted, also reached by base_lora_1p0x 93% and random_healed_rms_1p0x 93% while ProjectThenHealLinear reduces domain leakage from 4.75% to 5.08e-17); Qwen2.5-Coder-7B HumanEval 36% -> 42% (vs. 37% base_lora_1p0x and 35% random_healed_rms_1p0x, p=0.332p = 0.332 and 0.189); Qwen3-14B ASAN-120 root-cause recall 0.450 -> 0.550 (+10.0 pp, 95% CI [0.0, +21.67])
Quantization, LoRA & Pre-Load AuditingDiscussed future weight-space tooling and direct weight auditing as open research directionsQ8_0 (98.5% removal) vs. Q4_K superblock geometry; ProjectThenHealLinear (3.18e-17..5.07e-17 float64 subspace lock under AdamW); and secant sanitize / audit-trojan across 186.8M GGUF blocks and 3.26B float elements (0 observed false positives across the 10 tested production GGUF and SafeTensors checkpoints)

The table below separates primitives established in prior or concurrent work from the specific technical contributions evaluated in Secant:

Technical AreaEstablished Prior or Concurrent Art (Cited)Secant’s Specific Technical Contribution
1. In-Place mmap & Quantized Q8_0/Q4_K Block SurgeryIn-place r+ np.memmap GGUF Q8_0 editing with SHA-256 verification of untouched bytes (Kiwimaker, Oct 2026); byte-level GGUF tensor transplant & Q2_0 scale-preserving re-encoding (SC117, Oct 2026).(a) In-place zero-copy mmap byte-slice surgery inside .safetensors files ([8+N+BEGIN, 8+N+END)) without save_file() shard re-serialization; (b) sub-tensor compressed-domain surgery directly on touched 34-byte block_q8_0 structs without full-matrix float64 materialization; (c) Propositions 1-3 proving why 32-weight Q8_0 blocks commute with Π₁₂₈ (128 = 4 × 32) while 256-weight Q4_K superblocks suffer cross-head scale leakage across neighboring 128-column heads.
2. ProjectThenHealLinear & Subspace-Locked LoRAForward-pass LoRA projection ΔW = P⊥ B A for continual learning (OPLoRA, Xiong & Xie, AAAI 2026) and safety preservation (SaLoRA, Li et al., ICLR 2025); diagnosis of AdamW preconditioner gradient leakage of 3.6% to 4.7% (GOAL, Chen et al., Oct 2026; CORD, Yu et al., Oct 2026); unconstrained LoRA post-abliteration healing (Labonne 2024; OBLITERATUS; model-unfetter).(a) Bypassing AdamW preconditioner leakage on the effective adapter weight update via forward-pass subspace-locked parameterization, reducing step-60 relative weight-update leakage ‖D ΔW‖F / ‖ΔW‖F from 0.33%-1.67% to the float32 floor (1.78e-10 to 8.67e-10) across 15 models (0.8B to 32.8B); (b) inverting safety-projected LoRA into the coupled two-stage Project-Then-Heal post-surgery workflow (locking LoRA out of an excised behavioral subspace span(Dᵀ)); (c) twice-iterated float64 idempotent projection P⊥(P⊥(B̃)) inside the autograd forward pass (5.6× median error reduction over single-pass projection).
3. Target-Shift Calibration & Gram-Schmidt CompensationAlgebraic step size β = abs(Δtarget) / ‖hS‖₂² as the isotropic (C = I) special case of ROME (Meng et al., NeurIPS 2022) and MEMIT (ICLR 2023); multi-vector Gram-Schmidt orthogonalization in OBLITERATUS, llm-abliteration, and G-Abliteration (Gülmez, Dec 2025).(a) Cross-scale activation-shift transfer calibration (β(dmodel, ℓ) = abs(Δtarget(ℓ)) / ‖hS(ℓ)‖₂² and RMS-relative dosing Δtarget = α σwriter) across 0.8B to 32.8B full models (plus 70.6B and 72.7B single-shard evaluations); (b) coupling two-pass float64 Gram-Schmidt orthonormalization with the upper-triangular R⁻¹ cross-projection compensation system (Qᵀ ΔW = R⁻ᵀ Δtarget) for heterogeneous non-orthogonal multi-direction edits.
4. Boundary-3 Static Tensor Auditing & Hardware Cast DivergenceNaN MoE router weights in .safetensors causing best = -1 negative-index heap OOB corruption and negative-offset pread (Fornaro, JustVugg/colibri, GHSA-5xpg-vw35-2687, Aug 2026); ARM64 FCVTZS (0) vs. x86-64 CVTTSD2SI (INT_MIN) int8 embedding consensus split (Hanzo AI HIP-0113, Section 4.5, 2026); out-of-range g_idx (CVE-2026-86288) and kernel-dispatch indexing (CVE-2026-84286).(a) Connecting both the qNaN (FCVTZS = 0 vs. CVTTSS2SI = INT32_MIN) and positive-overflow (+1.0e38: FCVTZS = INT32_MAX vs. CVTTSS2SI = INT32_MIN, bypassing idx >= N) hardware cast asymmetries and NVIDIA CUB TwiddleIn (+qNaN 0x7FC00000 -> 0xFFC00000 sorting above +Inf at index 0) to architecture-divergent C/C++ and CUDA memory-corruption exploit primitives, with the cast divergence verified empirically on ARM64 (Apple Silicon) and x86-64 (AMD Zen 5) and the CUB ordering derived from its source, not run; (b) the unified Boundary-1 / Boundary-2 / Boundary-3 static checkpoint security taxonomy and pre-load sanitization rules (0 observed false positives on 10 checkpoints; Rule B3-2A permitting multiplicative GGUF 0.0/subnormals and rejecting only exponent 0x1F, Rule B3-2B enforcing s >= 1e-12 on divisor scales, and Rule B3-3 enforcing two-sided bounds on g_idx/expert_map), paired with secant audit-trojan and secant scan-sinks.

Scope of this paper. Secant does not claim to introduce orthogonal projection, rank-1 associative weight updates, or null-space LoRA. It evaluates reference-based edit sizing with R−1R^{-1} Gram-Schmidt compensation, block-aware Q8_0 and .safetensors in-place mmap surgery, forward-pass twice-iterated float64 adapter locking, and Boundary-3 static payload auditing inside one reproducible Rust + PyTorch toolkit.

Section 6 takeaway: The projection primitives have rich prior and concurrent art across 2022 to November 2026. Secant contributes in-place .safetensors and sub-tensor 34-byte Q8_0 block surgery with the Π128\Pi_{128} vs. Q4_K alignment theorems, bypasses AdamW preconditioner leakage on the effective adapter weight update via twice-iterated float64 forward-pass locking in ProjectThenHealLinear, solves upper-triangular R−1R^{-1} multi-direction shift compensation, and unifies Boundary-3 static tensor auditing against both best = -1 and CVTTSS2SI (INT_MIN) vs. FCVTZS (0 / INT_MAX) C/C++ inference sinks.


References

  1. Rikiya Takehi, Jayden Teoh, Alex Zhang, and Omar Khattab. Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights. MIT CSAIL, November 2, 2026. https://rikiyat.github.io/blog/weight-space-programming/

  2. Andy Arditi, Oscar Obeso, Aaquib Syed, Daniel Paleka, Nina Panickssery, Wes Gurnee, and Neel Nanda. Refusal in Language Models Is Mediated by a Single Direction. NeurIPS 2024 (arXiv:2406.11717).

  3. Junfeng Fang et al. AlphaEdit: Null-Space Constrained Knowledge Editing for Language Models. ICLR 2025 (arXiv:2410.02355).

  4. Pengwei Tang et al. Put the Space of LoRA Initialization to the Extreme to Preserve Pre-trained Knowledge (LoRA-Null). AAAI 2026 (arXiv:2503.02659).

  5. Yifeng Xiong and Xiaohui Xie. OPLoRA: Orthogonal Projection LoRA Prevents Catastrophic Forgetting during Parameter-Efficient Fine-Tuning. AAAI 2026, Vol. 40, No. 40, pp. 34088-34096 (arXiv:2510.13003, doi:10.1609/aaai.v40i40.40703).

  6. Mingjie Li et al. SaLoRA: Safety-Alignment Preserved Low-Rank Adaptation. ICLR 2025 (arXiv:2501.01765).

  7. Chia-Yi Hsu et al. Safe LoRA: The Silver Lining of Reducing Safety Risks when Fine-Tuning Large Language Models. NeurIPS 2024 (arXiv:2405.16833).

  8. Guanglong Sun et al. Safety Alignment as Continual Learning: Mitigating the Alignment Tax via Orthogonal Gradient Projection (OGPSA). arXiv:2602.07892, 2026.

  9. Kevin Meng, David Bau, Alex Andonian, and Yonatan Belinkov. Locating and Editing Factual Associations in GPT (ROME). NeurIPS 2022 (arXiv:2202.05262).

  10. Kevin Meng, Arnab Sen Sharma, Alex Andonian, Yonatan Belinkov, and David Bau. Mass-Editing Memory in a Transformer (MEMIT). ICLR 2023 (arXiv:2210.07229).

  11. Nora Belrose, David Schneider-Joseph, Shauli Ravfogel, Ryan Cotterell, Edward Raff, and Stella Biderman. LEACE: Perfect Linear Concept Erasure in Closed Form. NeurIPS 2023 (arXiv:2306.03819).

  12. Chao Chen, Pengyang Shao, Wei Qin, Shijie Hao, Fei Shen, and Richang Hong. Revisiting Over-refusal in Safety-aligned Large Language Models: A Representation and Optimization Perspective (GOAL). arXiv:2610.39802, October 29, 2026 (Appendix M and Table 7).

  13. Wenhao Yu et al. Conflict-Aware Optimization for Joint RL and Distillation in Agents (CORD). arXiv:2610.29965, October 21, 2026.

  14. Nikhil Ghosh, Tetiana Parshakova, and Robert M. Gower. PoLoRA: A Preconditioned Orthogonalized LoRA Optimizer. arXiv:2607.17620, July 20, 2026.

  15. Gökdeniz Gülmez. Gabliteration: Adaptive Multi-Directional Neural Weight Modification for Selective Behavioral Alteration in Large Language Models. arXiv:2512.18901v3, December 2025 / January 2026.

  16. Jim Lai (grimjim). Norm-Preserving Biprojected Abliteration. Hugging Face Blog, November 2025. https://huggingface.co/blog/grimjim/norm-preserving-biprojected-abliteration

  17. Maxime Labonne. Uncensor any LLM with abliteration (DARE-TIES + post-abliteration LoRA healing). Hugging Face Blog, June 10, 2024. https://huggingface.co/blog/mlabonne/abliteration

  18. Kiwimaker. In-place r+ memory-mapped GGUF Q8_0 abliteration with SHA-256 byte-preservation verification (apply_abliteration.py and apply_abliteration_v2.py). Hugging Face (Kiwimaker/DeepSeek-V4.1-Flash-1017-Maya-S-abliterated-GGUF), October 20-21, 2026. https://huggingface.co/Kiwimaker/DeepSeek-V4.1-Flash-1017-Maya-S-abliterated-GGUF

  19. SC117. Byte-level in-place GGUF tensor transplantation and scale-preserving Q2_0 re-encoding (Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF). Hugging Face, October 3, 2026. https://huggingface.co/SC117/Qwen3.8-Flash-Next-GSQ-RCO-abliterated-GGUF

  20. Vincenzo Fornaro. NaN router logits leave MoE top-k selection at best=-1, causing negative-index heap OOB read/write and negative-offset pread (GHSA-5xpg-vw35-2687), plus .safetensors loader advisories (GHSA-pmq2-6f2p-hjvf, GHSA-4gw4-j89j-4c8r, GHSA-wc4x-3786-cxh7). GitHub Security Advisories (JustVugg/colibri), August 5, 2026. https://github.com/JustVugg/colibri/security/advisories/GHSA-5xpg-vw35-2687

  21. Hanzo AI Standards Track. HIP-0113: Cognitive Sidecar & Hanzo Engine Provider Runtime for Thinking Chains (Section 4.5: FCVTZS vs. CVTTSD2SI non-finite cast divergence). Hanzo Improvement Proposals, 2026. HIPs/hip-0113-cognitive-sidecar-and-hanzo-engine-provider-runtime.md

  22. Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. LoRA: Low-Rank Adaptation of Large Language Models. ICLR 2022 (arXiv:2106.09685).


Appendix A: Dated Addendum (2026-11-09) — Reference-Checkpoint Diffing (--reference) Closes the Late-Layer Sub-g∗g^* Visibility Gap

Per the version-stability policy adopted at the close of Horizon 1 (v0.3.0), Sections 1 through 6 above remain frozen as the Horizon 1 edition, and subsequent Horizon 2 results are appended here as dated addenda backed by cryptographic manifests under data/.

A.1 Motivation: The Three Sub-g∗g^* Late-Layer Cells from Section 5.1

In the 17-cell, 187-point fixed-grid multi-layer Trojan study (Section 5.1, data/trojan_multilayer_20261109/trojan-multilayer-behavioral-receipt.json, SHA-256 0aad7ae7eb0a1d5f5b6e4bd85f31b6307e3317635c8af8e6a277a93d5fffc978), single-file Stage-2 vocabulary projection (Eu1(W)E u_1(W)) surfaced the planted target token in the top 16 in all 17 / 17 cells once the relative Frobenius dose g=∥ΔW∥F/∥Wbase∥Fg = \lVert\Delta W\rVert_F/\lVert W_{\text{base}}\rVert_F reached the single-matrix singular-value crossover g∗=σ1(Wbase)/∥Wbase∥Fg^* = \sigma_1(W_{\text{base}})/\lVert W_{\text{base}}\rVert_F. While that single-file signal preceded forward-pass behavioral hijacking in all 12 / 12 early and middle cells (L3/L4, L10, L11/L12), in the three Qwen3.5-0.8B late-layer cells (L20.mlp.down_proj, L19.self_attn.o_proj, and L20.linear_attn.out_proj, where baseline g∗=7.03%–9.60%g^* = 7.03\%\text{--}9.60\%), forward-pass greedy top-1 behavioral flips occurred at g=4.0%–6.0%g = 4.0\%\text{--}6.0\% (1.0 to 5.0 percentage points below gvocab16=6.0%–9.0%g_{\text{vocab16}} = 6.0\%\text{--}9.0\%).

A.2 Streaming Reference-Checkpoint Diffing (ΔW=W−Wref\Delta W = W - W_{\text{ref}})

To close that sub-g∗g^* visibility gap whenever a trusted base checkpoint WrefW_{\text{ref}} is available (for example, auditing a community fine-tune, adapter merge, or quantized derivative against its upstream release), secant read --reference <base_model> and secant audit-trojan --reference <base_model> compute the spectrum, row/column anomalies, Marchenko-Pastur bulk ratio, and vocabulary projection directly on the difference matrix:

ΔW=W−Wref\Delta W = W - W_{\text{ref}}

streamed row-by-row in float64 across .safetensors and .gguf containers (requiring identical 2-D shapes while permitting storage-dtype differences and extra unreferenced tensors in a full base checkpoint), with pre/post SHA-256 brackets verified on both --model and --reference (input_unchanged == true and reference_unchanged == true). Because the unedited weight matrix WrefW_{\text{ref}} is subtracted prior to power-iteration SVD, the base singular spectrum σ1(Wref)≥σ2(Wref)≥…\sigma_1(W_{\text{ref}}) \ge \sigma_2(W_{\text{ref}}) \ge \dots vanishes from the audit; for a rank-1 implant ΔW=θ utrojanvtrigger⊤\Delta W = \theta\, u_{\text{trojan}} v_{\text{trigger}}^\top stored in BF16, the leading singular value of ΔW\Delta W is σ1(ΔW)≈∥ΔW∥F\sigma_1(\Delta W) \approx \lVert\Delta W\rVert_F at every non-zero dose down to the BF16 quantization floor.

A.3 Acceptance Test on the Three Qwen3.5-0.8B Sub-g∗g^* Late-Layer Cells (9 / 9 Rank #1)

We executed the Horizon 2 Priority 1 acceptance test on the three Qwen3.5-0.8B late-layer cells (data/reference_diff_late_layers_20261109/reference_diff_late_layer_receipt.json, SHA-256 6c361f3ce150271ec46414f0be6db60cbe318be2cdcd4a4f6f0fe3d6e3b3c08a; MANIFEST.sha256 verified), regenerating all 12 patched submodels (1.0%, 2.0%, 4.0%, 6.0%) from Qwen3.5-0.8B (model.safetensors-00001-of-00001.safetensors, SHA-256 04b1c301231dd422b8860db31311ab2721511346a32cb1e079c4c4e5f1fe4696) with 100% byte-for-byte SHA-256 identity to the Horizon 1 receipt, and running secant read --reference across all 9 sub-g∗g^* cells (1.0%, 2.0%, 4.0% on L20.mlp.down_proj and L20.linear_attn.out_proj, and 1.0%, 2.0%, 6.0% on L19.self_attn.o_proj, target token 16657 " cheese"):

Tensor (Qwen3.5-0.8B)Single-File g∗g^*Single-File gvocab16g_{\text{vocab16}}Behavioral Top-1 Flip DoseTested Dose ggPatched Submodel SHA-256Realized ∥ΔW∥F/∥Wref∥F\lVert\Delta W\rVert_F / \lVert W_{\text{ref}}\rVert_F∥ΔW∥F\lVert\Delta W\rVert_Fσ1(ΔW)\sigma_1(\Delta W)Rank-1 Energy σ12/∥ΔW∥F2\sigma_1^2 / \lVert\Delta W\rVert_F^2" cheese" (16657) Rank in Eu1(ΔW)E u_1(\Delta W)
layers.20.mlp.down_proj.weight7.03%6.0%4.0% (91.7%)1.0%a7052f31...747d90.0100040.1751340.17506399.92% (0.999195)Rank #1 (suppressed)
layers.20.mlp.down_proj.weight7.03%6.0%4.0% (91.7%)2.0%b67f7b48...c46de0.0200030.3501770.35014099.98% (0.999790)Rank #1 (suppressed)
layers.20.mlp.down_proj.weight7.03%6.0%4.0% (91.7%)4.0%ca89fe99...a153e0.0400010.7002760.70025899.995% (0.999949)Rank #1 (suppressed)
layers.19.self_attn.o_proj.weight8.55%7.0%6.0% (58.3%)1.0%ac838ef7...d8f0f0.0100070.2422690.24211299.87% (0.998705)Rank #1 (promoted)
layers.19.self_attn.o_proj.weight8.55%7.0%6.0% (58.3%)2.0%ec3ad5ed...894a40.0200040.4843060.48422799.97% (0.999675)Rank #1 (promoted)
layers.19.self_attn.o_proj.weight8.55%7.0%6.0% (58.3%)6.0%9e4b699c...6d4090.0600021.4527031.45267599.996% (0.999962)Rank #1 (promoted)
layers.20.linear_attn.out_proj.weight9.60%9.0%4.0% (91.7%)1.0%619b762c...c68df0.0100060.1525470.15246199.89% (0.998866)Rank #1 (promoted)
layers.20.linear_attn.out_proj.weight9.60%9.0%4.0% (91.7%)2.0%b080de45...6d03d0.0200030.3049530.30490899.97% (0.999708)Rank #1 (promoted)
layers.20.linear_attn.out_proj.weight9.60%9.0%4.0% (91.7%)4.0%d032d95d...e917f0.0400010.6098440.60982199.993% (0.999926)Rank #1 (promoted)

Across all 9 / 9 sub-g∗g^* cells—including at 1.0% and 2.0% (2 to 5 percentage points below the 4.0%..6.0% behavioral flip floor)—secant read --reference recovered 99.87% to 99.996% of ∥ΔW∥F2\lVert\Delta W\rVert_F^2 in σ12(ΔW)\sigma_1^2(\Delta W) and ranked the planted token (16657 " cheese") #1 out of the full Qwen3.5-0.8B vocabulary (suppressed rank 1 on L20.mlp.down_proj due to the SVD sign convention fixing the largest-magnitude coordinate of v1v_1 positive, and promoted rank 1 on L19.self_attn.o_proj and L20.linear_attn.out_proj). When no reference checkpoint WrefW_{\text{ref}} exists, the single-file g∗g^* crossover documented in Section 5.1 remains the governing detection boundary.