A Linear Nudge, a Nonlinear Wake

Activation steering, in the form tested here, adds a vector to a transformer’s hidden state partway through the network. Do the remaining layers carry that edit forward the way a linear map predicts, or bend it? On Llama 3.3 70B, under rules frozen before the run, the delivered edit scaled linearly with dose in 24 of 24 test cells over a prespecified 2–4% dose panel; the model’s final hidden state did in 0 of 24.
Key result
On Llama 3.3 70B, under rules frozen before outcomes, 24 of 24 delivered edits stayed dose-linear over the 2%/3%/4% panel and 0 of 24 final hidden-state responses did. The released Jacobian lens beat five random-map controls but did not clear the frozen added-value-over-identity margin at the primary layer-50 comparison (logit advantage 0.011 against 0.02). Generic directions only; no SAE, behavioral, or consciousness claim.
On this page 21 sections
AI-use disclosure. AI agents designed the protocol and decision rules, implemented and executed the scan, ran the automated audits, analyzed and visualized the results, and reviewed and drafted this text; the author selected the research question, authorized the compute, inspected the artifacts, and is responsible for the final text and claims. Automated audit and recomputation checks establish internal consistency, not independent human validation; this is an independent, non-peer-reviewed Research Note, and its numbers should be verified against the released receipts before being relied on.

Abstract. Activation steering, as tested here, adds a controlled vector to a model’s residual stream partway through the network. A Jacobian lens is a corpus-average linear map from that mid-network state toward later residuals and vocabulary dispositions. When a steered model changes downstream, three things could be responsible: the edit did not land as requested in low-precision arithmetic, it propagated as the linear map predicts, or the remaining layers reshaped it. This note keeps the three apart and measures each.

(1) In Llama 3.3 70B Instruct, we applied three unselected Gaussian directions after block 50 across eight prompts, varied dose from 0.5% to 30% of residual RMS, and followed the signed response (the half-difference of paired \(\pm\)dose runs) through the remaining 29 blocks. Protocol, plan, and decision rules were frozen before outcomes (a084caa).

(2) On the frozen 2%/3%/4% panel, all 24 prompt × direction cells kept a dose-linear source edit, and all 24 final hidden-state responses failed both linearity gates: direction drifted (minimum cosine 0.778–0.848 against a 0.95 floor) and per-unit-dose size mismatched (0.572–0.703 against a 0.15 ceiling). The same realized edits pushed through the fixed Jacobian also passed both gates; that is an algebraic consistency check, not evidence that J predicted the model.

(3) Requested-versus-realized edit fidelity under BF16 casting failed the frozen rule below 2% and passed from 2% through 30% (the protocol’s short name for this check is “delivery”). Median final-state RMS gain was 1.82x at 2% and tapered to 1.48x at 30% over this fixed census.

(4) At the primary layer-50 comparison, released J beat five random-J maps but did not clear added-value-over-identity (logit advantage 0.011 against a 0.02 margin; residual advantage slightly negative).

Takeaway. Linear edit in, nonlinear hidden-state wake out, for these generic directions on this model. Two working assumptions were checked here and neither held under the frozen rules: that a corpus-average Jacobian predicts where a generic residual edit lands better than carrying it forward unchanged, and that the final-state response scales in proportion to the dose. The result motivates an SAE-specific dose scan; it does not establish an SAE, behavioral, or consciousness claim.

Quantity scored on the 2%/3%/4% panel Minimum cosine to the 3% anchor (floor 0.95) Largest per-unit-dose discrepancy (ceiling 0.15) Cells passing both gates
Realized source edit 0.995–0.996 0.089–0.101 24 / 24
Fixed J of that edit 0.993–0.996 0.090–0.117 24 / 24
Actual final state 0.778–0.848 0.572–0.703 0 / 24

Table: the frozen-panel linearity census, as ranges across the 24 prompt × direction cells. How each statistic is built and why these thresholds were chosen is in How we scored pass versus fail; Figure 1 plots every cell. Provenance: fig-1-linearity-census.receipt.json.

Study status: complete. Audited result release fde24e9; experiment package experiments/consciousness_sae_signed_dose_scan; shipping table, sample records, and hashes in the release inventory. Corrected 4 September 2026 and reorganized 2 October 2026 with no change to any result; both entries are in Appendix D.

The Question

Activation steering changes a model from the inside. In the additive form studied here, the researcher adds a controlled vector to the hidden state carried between Transformer blocks instead of changing the prompt; contrastive activation addition is the canonical modern example (Rimsky et al., 2024). The field also includes adaptive, feature-targeted, and geometry-preserving variants, which this note does not test. The added vector can encode a proposed semantic direction, such as a sparse-autoencoder feature, or it can be deliberately generic, as in the experiment reported here.

A Jacobian is a local derivative: the high-dimensional analogue of a tangent line. A Jacobian lens (Gurnee et al., 2026) turns that idea into a reusable reference by averaging input-output Jacobians over many prompts and token positions. The result is one fixed linear map for each source layer: a corpus-average first-order approximation, not the exact Jacobian of the prompt under study. Gurnee et al. built the lens to surface verbalizable, vocabulary-oriented content; this note repurposes it as a transport benchmark for arbitrary residual perturbations, a different job from the one it was fit for. Whether averaged first-order maps carry useful structure is itself setting-dependent: relation-decoding work finds that mean Jacobian-based affine maps decode some relations well and others poorly (Hernandez et al., 2024).

A downstream change therefore has at least three candidate causes: an edit that did not land as requested in low-precision arithmetic, propagation as the linear map predicts, or reshaping by the remaining nonlinear blocks. The design below records each separately, so that none is attributed to the meaning of a steering direction by default.

Prior work, contribution, and non-claims

Prior work. Gurnee et al. introduce the Jacobian lens and connect mid-layer directions to later residual and vocabulary geometry (2026). Public fitting tooling and Llama maps come from Anthropic’s reference implementation (2026) and Neuronpedia’s Llama release (2026). Recent dose and steering work reports that intervention strength need not grow effects monotonically (Taimeskhanov, Vaiter, and Garreau, 2026) and that stronger SAE refusal steering can coincide with collateral over-refusal (O’Brien et al., 2025). An earlier Praxagent note asks whether SAE steering leaves a detectable J-space fingerprint under matched access models (Jones, 2026). This note does not invent the lens or the general fact that neural networks are nonlinear; its contribution is the point-by-point separation below. The dose and collateral-effect papers cited here motivate a dose scan; they are study-specific reports, not evidence for the result in this note.

This note’s contribution.

  • a prospectively frozen, target-masked signed dose scan on Llama 3.3 70B that retains requested edit, BF16-realized edit, fixed-J reference, and actual state separately at every dose and depth;
  • a complete 24-cell census on the frozen 2%/3%/4% linearity panel, with identity and five random-J controls on the primary predictive comparison;
  • a public ledger in tdj28/llm_selfref_pre with freeze and audited-release commits separated.

Not claimed.

  • that SAE decoder directions, as a class, are nonlinear downstream; neither this scan nor the pilot in Appendix B measured downstream dose response for an SAE decoder direction (the vector associated with one learned sparse-autoencoder feature);
  • that any specific SAE feature has its published semantic interpretation;
  • that generated behavior, deception, or consciousness-related vocabulary changed;
  • that the corpus-average J outperforms simply carrying the residual change forward (it did not clear that frozen margin here).

Design in Brief

We tested this in Llama 3.3 70B Instruct. Immediately after transformer block 50, we applied three stress-test directions to eight prompts, varied their magnitude from 0.5% to 30% of residual RMS, and followed the response through the remaining 29 blocks. The directions were unselected: independent Gaussian vectors normalized to unit RMS, generated from predeclared seeds and frozen before the experiment, with no step that picked them for meaning, expected effect, or resemblance to any SAE feature. They test the mechanics of perturbation transport rather than any concept.

What one measurement is

A “run” in this study is one deterministic forward pass, not a generation. The same network with the same weights reads the same fixed prompt; no tokens are sampled, so no temperature is involved anywhere. We record the hidden state the model computes at one fixed position (the continuation token, the final rendered prompt token) after each block.

For each prompt there is one clean run with no intervention. For each direction and dose there are two edited runs, identical to the clean run in every respect except one: immediately after block 50, the direction vector, scaled to the requested dose, is added to (\(+b\) run) or subtracted from (\(-b\) run) the residual state at that position before block 51 continues. The model is therefore its own control. Any difference between runs at any later block can only have come from that one injected vector, because nothing else differs: weights, prompt, position, and arithmetic path are identical. The clean run also sets the dose scale: a dose of 2% means the injected vector’s RMS is 2% of the clean run’s layer-50 residual RMS for that prompt. The frozen grid comes to 2,896 forward passes in total.

The paired edited runs act like pushing and then pulling the same knob. Any downstream change genuinely driven by the edit should flip sign between the two runs; anything that shows up either way (noise, or the model reacting to being disturbed at all) should not. Half the difference between the two runs keeps the flipping part and cancels the rest; we call that the signed response (the implementation’s name for it is the central contrast). The non-flipping part, measured as the midpoint of the two runs relative to an unedited run, is kept as a separate common-mode diagnostic. Because each \(+\)/\(-\) pair collapses into one curve, the census has 24 prompt × direction curves rather than 48 independent observations. Exact construction, provenance, dose grid, and pairing equations are in Appendix A.

Schematic of one measurement. Three horizontal timelines show three deterministic forward passes of the same network on the same prompt, with vertical ticks marking blocks 0, 50, and 79. The clean run has no edit and ends at hidden state h clean. The plus-b run has a circled plus at block 50 labeled b times v added to the residual here, and ends at h plus. The minus-b run has a circled minus at block 50 labeled b times v subtracted from the residual here, and ends at h minus. Below the timelines, two equations: signed response equals h plus minus h minus, over two, which keeps only what flips when the edit’s sign flips; and common mode equals the average of h plus and h minus, minus h clean, which keeps what appears either way and is retained as a disturbance diagnostic. Source: this research note.

Diagram: how one measurement is built from three forward passes. Hand-drawn conceptual schematic, not a receipt-backed data figure; the exact pairing equations are in Appendix A.

At every dose, the analysis retained four quantities: the edit requested in high precision; the edit realized after casting into BF16 activations (see requested-versus-realized fidelity); the downstream change from the fixed Jacobian map; and the downstream change the model actually produced. Separating requested from realized keeps low-precision rounding from being mistaken for nonlinear model dynamics. The full decomposition is drawn as a schematic in Appendix A.

Every decision rule (which doses count, which quantities are compared, and the numeric thresholds for passing) was written down and committed to git before any results were computed (a084caa). The ordering matters: thresholds chosen after seeing the data can make a “pass” or “fail” an artifact of where the goalposts were placed, whereas rules frozen first let the experiment come out either way. Concretely, the frozen rule says: once a small edit demonstrably landed intact, the model’s final response counts as linear only if scaling the dose across 2%/3%/4% scales the response by the same factor while keeping nearly the same direction, within the two numeric bounds defined below. Failing that rule means the local-linear description broke by a prespecified margin on this panel; it does not mean “networks are nonlinear” in general, and it is not an estimate of how often this happens across other models or directions.

The Linear Edit and the Nonlinear Wake

What “linear” means in this note

Imagine a dimmer switch. If the response is dose-linear, turning the dose from 2% to 4% should roughly double the size of the change while leaving its direction alone. In vector language: the hidden-state response at dose \(b\) should look like \(b\cdot v\) for one fixed direction \(v\).

Nonlinear, here, means that rule fails in a measured way: as dose changes, the response rotates (direction drifts) or its size stops tracking the dose (amplification or compression). We are not using “nonlinear” as a vibe word for “the network has nonlinear layers.” Transformers are nonlinear by construction. The question is whether this dose–response curve stayed close enough to a straight line through the origin on a small, prechosen panel.

A cell is one prompt paired with one generic direction: 8 prompts × 3 directions = 24 cells. Each cell is one signed-response curve across dose, so the census has 24 curves, not 48 independent signed runs.

We apply the same linearity test to three quantities in each cell:

  1. Source: the edit that actually landed after block 50.
  2. Fixed J: that same realized edit pushed through the corpus-average Jacobian map (an algebraic straight-line reference).
  3. Actual final: the model’s real residual change after block 79.

How we scored pass versus fail

The frozen panel is \(B=\{0.02,0.03,0.04\}\) (2%, 3%, 4%), with 3% as the anchor. That panel is the first three-dose window where every source edit already cleared the requested-versus-realized fidelity checks; Figure 2 shows that boundary.

Every response vector \(x_b\) below is the signed response from the design section, read at a different point: right after block 50 for the source, after block 79 for the actual final, and after pushing the source vector through the released linear map for fixed J. No new runs, prompts, or sampling are involved; the three quantities are three readouts of the same 2,896 deterministic forward passes.

For a response vector \(x_b\) at dose \(b\), form the dose-normalized vector

\[ q_b = \frac{x_b}{s_b}. \]

The divisor \(s_b\) is the size of the input being scaled. For the source edit, \(s_b\) is the requested dose fraction (0.02, 0.03, 0.04). For J and the actual final state, \(s_b\) is instead the measured RMS size of the edit that actually landed at block 50, expressed as the same kind of fraction. The reason for the switch: those two quantities are downstream of the realized edit, so the fair question is “per unit of edit that landed, what came out?”, not “per unit of edit we asked for.” Dividing by \(s_b\) puts every dose on that per-unit scale. If doubling the landed edit exactly doubled the downstream response without turning it, the normalized vectors \(q_b\) at 2%, 3%, and 4% would all be the same vector; without the division, even a perfectly linear response \(x_b=b\,v\) would change length across the panel. How far the \(q_b\) spread apart is what the two statistics below measure.

Two statistics then ask whether the \(q_b\) stay near the 3% anchor \(q_{0.03}\):

\[ c_{\min} = \min_{b\in B}\cos(q_b,q_{0.03}), \qquad d_{\max} = \max_{b\in B} \frac{\operatorname{RMS}(q_b-q_{0.03})}{\operatorname{RMS}(q_{0.03})}. \]
  • \(c_{\min}\) is directional agreement (1 means identical direction).
  • \(d_{\max}\) is relative size mismatch after dose normalization (0 means identical scale and shape). The implementation calls \(d_{\max}\) “slope discrepancy.”

A cell passes for a quantity when both frozen gates hold:

\[ c_{\min}\ge 0.95 \quad\text{and}\quad d_{\max}\le 0.15. \]

Fail either gate and that quantity is scored nonlinear on this panel. Exact construction of \(x_b\) (signed branches, common-mode diagnostic) is in Appendix A.

Why these two gates, and why these numbers? Two gates because proportionality can fail in exactly two ways: the response can rotate (caught by \(c_{\min}\)) or its per-unit-dose size and shape can drift (caught by \(d_{\max}\)); one statistic per failure mode. The specific values are frozen judgment calls, not derived constants. A cosine floor of 0.95 tolerates directional wobble inside roughly an 18° cone, and a discrepancy ceiling of 0.15 sits comfortably above the roughly 0.10 relative deviation that BF16 delivery alone induces in the source edits, so a faithfully landed edit cannot fail the panel merely because of rounding noise. What protects the conclusion is not the exact numbers but two facts: the thresholds were committed before any outcome was seen, and the results landed nowhere near them. Read off after the fact, from the census extremes in the table at the head of this note: any cosine floor between 0.85 and 0.99, and any discrepancy ceiling between 0.12 and 0.57, produces the identical 24/24-versus-0/24 split.
import numpy as np

B = (0.02, 0.03, 0.04)
ANCHOR = 0.03

def rms(x: np.ndarray) -> float:
    return float(np.sqrt(np.mean(np.square(x))))

def cosine(a: np.ndarray, b: np.ndarray) -> float:
    return float(np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b)))

def dose_linearity_gates(
    x_by_dose: dict[float, np.ndarray],
    s_by_dose: dict[float, float],
    *,
    cosine_min: float = 0.95,
    slope_max: float = 0.15,
) -> tuple[float, float, str]:
    """Return (c_min, d_max, 'pass'|'fail') for one cell and one quantity."""
    q = {b: x_by_dose[b] / s_by_dose[b] for b in B}
    q_anchor = q[ANCHOR]
    c_min = min(cosine(q[b], q_anchor) for b in B)
    d_max = max(rms(q[b] - q_anchor) / rms(q_anchor) for b in B)
    status = "pass" if c_min >= cosine_min and d_max <= slope_max else "fail"
    return c_min, d_max, status

# Example call for one prompt × direction cell:
# c_min, d_max, status = dose_linearity_gates(source_x, source_s)

What the census found

The table at the head of this note is the result: 24 of 24 source edits passed both gates, 24 of 24 fixed-J references passed, and 0 of 24 actual final-state responses did. The finals did not fail by a hair on one metric. In every cell they failed both rules: the dose-normalized response rotated away from the 3% anchor (cosine well below 0.95) and its per-unit-dose size and shape drifted far past the 0.15 ceiling, while source and fixed-J curves sat near cosine 1 with only about 0.1 relative discrepancy. After 29 more blocks, turning the dose from 2% to 4% no longer gave “same arrow, twice as long”: the arrow bent, and its length stopped tracking dose.

The fixed-J pass is a consistency reference, not a prediction. A fixed linear map preserves exact proportionality (if \(x_b=bv\), then \(Jx_b=bJv\)), but for approximately proportional inputs a matrix can amplify the deviations, so passage through a finite cosine/RMS gate is empirical rather than guaranteed; here the realized edits and their J projections both passed. That locates the departure from proportionality downstream of the realized edit, in the BF16 execution of blocks 51–79 from the post-block-50 state to the post-block-79 residual, not in dose-dependent mangling of the source edit. The scan does not separate the model’s nonlinear dynamics from finite-precision effects across those blocks; a datatype (FP32/FP16) and hook-path control is the test that would (see Next experiments). Whether J predicted the model accurately is a different question, tested in Figure 4.

Figure 1 shows the complete census rather than an average. Its three horizontal categories are the realized source edit, J applied to that realized edit, and the actual final state. The left panel plots \(c_{\min}\) against the 0.95 floor; the right plots \(d_{\max}\) against the 0.15 ceiling. Each connecting line is one prespecified prompt × direction cell.

Two paired dot plots show all 24 frozen prompt-by-direction cells over the 2%, 3%, and 4% dose panel, using 3% as the anchor. In the left plot, minimum cosine to the 3% anchor clusters between 0.993 and 0.996 for the realized source edit and J of the realized edit, above the 0.95 threshold, then drops to 0.778–0.848 for the actual final state, below threshold in all 24 cells. In the right plot, maximum dose-normalized RMS discrepancy from the 3% anchor is 0.089–0.117 for the first two quantities, below the 0.15 ceiling, but 0.572–0.703 for the actual final state, above threshold in every cell. Faint gray lines connect the same cell across the three quantities. Exact proportionality is preserved by a fixed linear map; here the approximately proportional delivered edits also remain within both numerical bounds after projection, while the downstream model response does not. Source: this research note.

Figure 1: source linearity versus actual downstream curvature. Each line is one of 24 prompt × direction signed-response curves over the prespecified 2%/3%/4% panel; dashed lines mark the frozen thresholds. Provenance: receipt.

Requested-versus-realized edit fidelity under BF16

“Delivery” is not a standard ML term. It is this study’s short name for a simple fidelity check: does the intervention vector we requested match the vector that was realized in the residual after casting into the model’s number format?

That format here is BF16 (bfloat16): a 16-bit floating-point type with FP32-like range but much coarser precision, so many float32 values round to the same BF16 number. For bit layouts, casting demos, and accumulation swamping, see the Deep Dive BF16, FP16, and FP32: Precision, Range, Swamping, and Determinism. The protocol builds the requested edit in float32 along a unit-RMS direction, then casts it into the BF16 residual hook. Write \(e^{\mathrm{req}}\) for the intended vector and \(e^{\mathrm{real}}\) for the change actually present after the hook. If rounding were negligible, those two would nearly match.

We score that match with the same two geometric ideas as linearity, now comparing request to realization at a single dose:

\[ \cos\!\big(e^{\mathrm{req}},e^{\mathrm{real}}\big) \ge 0.995, \qquad \frac{\operatorname{RMS}\big(e^{\mathrm{real}}-e^{\mathrm{req}}\big)} {\operatorname{RMS}\big(e^{\mathrm{req}}\big)} \le 0.10. \]

The full gate also checks both signed branches, their signed response (the half-difference defined in the design section), and the common-mode response. Fail any piece and that cell fails the fidelity check at that dose.

# Uses the same rms() / cosine helpers as the linearity sketch above.
def requested_realized_ok(
    e_req, e_real, *, cos_min=0.995, rel_rmse_max=0.10
) -> bool:
    return (
        cosine(e_req, e_real) >= cos_min
        and rms(e_real - e_req) / rms(e_req) <= rel_rmse_max
    )

If a tiny requested dose mostly rounds away, a “nonlinear” downstream curve could be noise from a mangled source edit; the fidelity check asks whether the source edit is faithful enough to blame the model for what happens next.

What we observed

At very small magnitudes, that rounding is not negligible. In this exact model, hook, prompt panel, and set of generic directions, the three smallest dose levels did not meet the predefined fidelity bounds. All 24 cells failed the full paired-branch rule at 0.5% and 1%, and 18 of 24 did so at 1.5%. Every cell passed from 2% through 30%.

At 2%, requested-versus-realized cosine had a median of 0.997, while median relative RMSE was 0.076. Passing does not mean requested and realized edits were bit-identical. It does show that the final-state nonlinearity on the 2%/3%/4% panel cannot be blamed on the low-dose fidelity failure seen below 2%. The boundary is consistent with BF16 rounding, but the experiment does not isolate rounding from other implementation details such as the casting path, kernel ordering, or fused operations. It is an empirical property of this implementation and panel, not a universal BF16 limit; the datatype and hook-path ablation under Next experiments is the direct mechanism test.

Three aligned plots show the low-dose delivery transition under BF16 execution in this model and intervention setup, across requested doses from 0.5% to 30%. Directional cosine rises sharply from a median 0.961 at 0.5% toward 1.0 and clears its 0.995 threshold by the eligible panel. Relative RMSE falls from a median 0.287 at 0.5% through its 0.10 ceiling near 1.5–2% and continues toward zero. Pale bands show the minimum-to-maximum range across the fixed 24-cell census, not uncertainty. The bottom strip reports the full paired-branch delivery rule: 24 failed cells at 0.5%, 24 at 1%, 18 at 1.5%, and zero from 2% through 30%. Source: this research note.

Figure 2: low-dose requested-versus-realized fidelity under this BF16 setup (file stem fig-3-bf16-delivery-floor; “delivery” is the protocol nickname). The upper curves show the central signed estimate; the bottom strip applies the complete rule to both signed branches, their signed response, and their common-mode response. Pale envelopes are the observed minimum and maximum across the 24 prespecified cells, not confidence intervals. Provenance: receipt.

Watch the Wake Develop Across Depth

At each state, gain is the root-mean-square magnitude of the signed response, \((h_{+}-h_{-})/2\), divided by the RMS magnitude of the realized signed source edit. It is 1x at state 50 by construction. A gain of 1.8x, for example, means the downstream signed response is 80% larger in RMS than the edit that landed. Median gain generally accumulated through later blocks, although individual trajectories were not uniformly monotone. Every tested trajectory ended above 1x.

The median final-state gain was 1.82x at 2%, 1.66x at 3%, 1.60x at 4%, 1.55x at 8%, and 1.48x at 30%. Relative amplification was generally larger at lower eligible doses (doses where every cell passed the requested-versus-realized checks), though the complete half-point dose series was not perfectly monotone.

Figure 3 makes the depth and dose axes explicit. The upper heatmap runs dose horizontally and post-block state vertically; the lower panel shows final-state gain across dose for every one of the 24 cells, with their median emphasized.

A two-panel dose-by-depth view of the complete downstream response. The upper heatmap places requested dose from 0.5% to 30% on the horizontal axis and states 50 through 79 on the vertical axis. Every state-50 cell begins at gain 1 because gain is normalized to the realized edit. Median gain generally accumulates in later blocks, reaching its largest values at the smallest doses and generally tapering as dose rises. A dashed vertical line marks 2%, the first dose where every cell met the frozen delivery criteria. The lower panel shows all 24 final-state trajectories as pale lines and their median as a dark line. The median is 1.82 times at 2%, 1.66 at 3%, 1.60 at 4%, 1.55 at 8%, and 1.48 at 30%. The 0.5–1.5% region is shaded because its delivery gate failed. Source: this research note.

Figure 3: the measured hidden-state response from the intervention point to the final block (file stem fig-2-dose-depth-arc). The heatmap uses the median across the same 24 prespecified cells at each dose and layer; the lower panel retains every trajectory. These are descriptive summaries of exactly these 24 cells, not population estimates. Provenance: receipt.

Did the Jacobian Lens Predict the Wake?

Cross-dose curvature and predictive usefulness at one dose are logically independent: a response can bend as dose changes while a first-order map still captures useful structure at a fixed dose. Figure 1 used J only as a linear algebra reference. Predictive accuracy requires a different test: compare J’s prediction with the final response and ask whether it beats cheap alternatives. We used two: identity, which carries the observed source-state change forward unchanged (a geometry-free transport baseline, not a vocabulary readout such as a logit lens or tuned lens (Belrose et al., 2023)), and five prespecified random-J controls, which apply seeded sign and coordinate permutations to the released map.

The layer-50 source state was selected in advance for the primary comparison. On this fixed 3% panel, the released J cleared the absolute thresholds and decisively beat the strongest of five random maps in both metrics. For fixed-token logit correlation (agreement between predicted and observed score changes for 2,048 prespecified vocabulary tokens), real J scored 0.344; its advantage over the strongest random map was 0.286, with a 95% fixed-panel stability lower bound of 0.271. In residual space, the corresponding advantage was 0.337, with a lower bound of 0.321.

Identity was the harder baseline. J’s logit advantage over identity was only 0.011, with a lower bound of -0.0015, below the predefined 0.02 margin. Its residual-space advantage was slightly negative (-0.0015). No tested source-state layer cleared the added-value-over-identity margin in both spaces. The bounded conclusion is therefore precise: the released map contains structure beyond these five randomizations, but it did not show added value over simply carrying the residual change forward unchanged.

This comparison cannot separate two explanations for that null: that first-order transport itself adds little for these directions, or that corpus averaging washes out prompt-local structure that a per-prompt Jacobian would capture. A prompt-specific Jacobian baseline on the same cells is the control that would (see Next experiments); it was not part of this study.

For Figure 4, each horizontal position has a different source-state layer but the same target. At source layer \(\ell\), both \(J_\ell\) and identity receive the observed signed residual change after block \(\ell\) and predict the post-block-79 change. Only layer 50 is the intervention site. Layers 51–78 are shorter-horizon diagnostics after the model has already transformed the edit.

Four profiles compare predictions from source-state layers 50 through 78 to the same post-block-79 target. The left column shows that absolute released-J fixed-token logit correlation and residual cosine both exceed their frozen thresholds at every source layer and rise as the source approaches the target. The right column shows released J minus identity. Logit advantage generally rises above 0.02 after early layers, but residual advantage remains below the 0.02 margin at 28 of 29 source layers. Its sole residual pass at layer 78 does not coincide with a logit pass. At source layer 50, selected in advance for the primary comparison, logit correlation is 0.344 but J minus identity is only 0.011 with a lower bound below zero; residual J minus identity is slightly negative. No source layer satisfies the identity condition for both metrics. Shaded bands are 20,000-replicate prompt-resampling stability intervals over eight fixed prompts, not population confidence intervals. Source: this research note.

Figure 4: prediction from successive source states to one fixed post-block-79 target. Layer 50 was selected in advance for the primary comparison; layers 51–78 are descriptive shorter-horizon diagnostics, not additional intervention sites. Bands are fixed-panel stability intervals from resampling the eight prompts and do not support population-level inference. Provenance: receipt.

Interpretation

The result is sharp and bounded. Below 2% of residual RMS, requested edits did not land faithfully under BF16 casting in this setup, so nothing downstream of them can be scored; from 2% through 30% they did. On the 2%/3%/4% panel the realized edit stayed dose-linear, its fixed-J projection stayed within the same bounds, and the model’s actual final state fell outside both bounds in every cell: linear edit in, nonlinear hidden-state wake out, where “nonlinear” means the measured failure of the frozen dose-proportionality gates under BF16 execution, not an established smooth-dynamics mechanism. Along the way, median per-unit-edit gain generally accumulated through the remaining blocks, every trajectory ended above 1x, and amplification was largest at the smallest eligible doses. The corpus-average Jacobian sees nonrandom structure in that wake (it beat five randomized maps) but did not clear the added-value-over-identity rule at any tested source-state layer, so it does not outperform the simplest strong baseline: carrying the residual change forward unchanged. The depth arc localizes where the first-order description stops being adequate; it does not identify the mechanism that bends the trajectory.

Limitations

  • Scope. Eight prompts, three generic Gaussian directions, one model (Llama 3.3 70B Instruct), one intervention site (after block 50), one token position, 24 cells. Nothing here estimates how often the pattern occurs across other models, layers, or directions, and nothing transfers to SAE decoder directions without the extension listed under Next experiments.
  • Forward passes only. No tokens were generated, so no behavioral, SAE, deception, or consciousness-related outcome was measured.
  • Mechanism unidentified. The gates record a departure from dose proportionality; they do not say what bends the trajectory. The candidate mechanisms in the Discussion are hypotheses.
  • Precision not isolated. The 2% fidelity boundary is consistent with BF16 rounding but is not separated from the casting path, kernel ordering, or fused operations; it is a property of this implementation and panel, not a universal BF16 limit. Likewise, downstream finite-precision effects are not separated from higher-order model dynamics.
  • Two readings of the identity null. First-order transport may add little for these directions, or corpus averaging may wash out prompt-local structure that a per-prompt Jacobian would capture. The design cannot tell them apart.
  • Read off after outcomes. The threshold-sensitivity ranges in “Why these two gates” were computed after the data were opened. The layer 51–78 profiles in Figure 4 and the gain-by-dose series were prespecified as secondary, descriptive outputs of the frozen census (every post-block state and the per-row RMS gain were recorded by design) but carry no frozen pass/fail rule; the panel, gates, layer-50 comparison, controls, and 0.02 margin are the only prespecified decision rules.
  • Fixed-panel uncertainty. Census ranges and the Figure 4 bands describe these 24 cells and eight prompts; they are not population estimates.

Two working practices bear on this result and were checked here. Using a corpus-average Jacobian as a transport predictor for generic residual edits did not show added value over the identity baseline by the frozen margin, and calibrating a steering dose on the assumption that the final-state response scales in proportion to the dose did not hold on the tested panel. Both statements concern three generic directions on one model; neither is a general prohibition.

Discussion: A Taylor-Series View of the Result

Corrected 4 September 2026; see the Corrections entry in Appendix D.

This section steps back from the audited numbers and asks what kind of object a Jacobian lens is, and why the observed split (every source edit linear, every fixed-J projection linear, every actual final state bent) is the pattern a linearization story predicts. Everything here is interpretation; the census results stand on their own.

A local Jacobian supplies the first-order term. Write \(F\) for the function taking the post-block-50 residual to the post-block-79 residual. For an edit \(e\) around the clean state \(h\),

\[ F(h+e) = F(h) + J(h)\,e + \tfrac{1}{2}\,e^{\top}H(h)\,e + \cdots, \]

where \(J(h)\) is the local Jacobian and \(H(h)\) the second-derivative term. The experiment records the signed branches and centers their contrast as \((F(h+e)-F(h-e))/2\). A prompt-local Jacobian would predict a response proportional to dose. The released lens instead averages Jacobians across other prompts and positions. The signed responses fail the dose-linearity gates at 2%–4% RMS; that establishes a departure from proportionality in this implementation, without isolating smooth higher-order dynamics from finite-precision effects.

Two sources of approximation remain unresolved. First, truncation: the lens omits every term past the first. Second, expansion point: it is not even \(J(h)\) for the prompt under study but a Jacobian averaged over other prompts and positions. The Figure 4 null (J failing to beat identity) could come from either. The prompt-specific Jacobian baseline under Next experiments is the control that separates them, and there is a reasonable chance that fixing the expansion point buys more than adding a derivative order.

Identity is not a dumb baseline; it is the free part of the first-order term. Because of the residual stream, the true Jacobian has the form \(I + \text{(block contributions)}\): skip connections carry the edit forward unchanged at no cost. Identity is that free part alone. The finding that the corpus-average J could not beat it says the learned, averaged remainder of the first-order term added nothing detectable for these generic directions.

Would a second-order lens be superior? In principle yes; as a shipped artifact, no. The first-order lens is an 8192 × 8192 matrix: about 67 million numbers. The second-order term is an 8192 × 8192 × 8192 tensor: roughly \(5.5\times 10^{11}\) numbers, on the order of a terabyte per source layer in BF16. What is feasible: Hessian-vector products computed on demand by double backpropagation, which give \(e^{\top}H\,e\) for a specific edit without materializing \(H\), and low-order polynomial fits along a fixed direction, since the whole dose curve is then a function of one scalar.

The ± design already separates odd from even orders. In the Taylor expansion, the signed response \((F(h+e)-F(h-e))/2\) cancels every even-order term, leaving \(J(h)\,e\) plus cubic and higher odd terms; the common-mode diagnostic \((F(h+e)+F(h-e))/2 - F(h)\) isolates the quadratic term (to leading order). The observed bending of the signed response therefore cannot be blamed on the quadratic term alone; odd terms at cubic order or above, or non-polynomial behavior, must contribute.

Falling gain does not identify the correction. Median final-state gain fell from 1.82x at 2% to 1.48x at 30%. This is compatible with saturation and with a negative higher-order correction. For example, \(F(e)=ae-be^3\), with \(a,b>0\), has signed response per unit dose \(a-be^2\), which decreases over the range where it remains positive. The gain curve alone therefore does not choose between a polynomial correction and a saturating response; the held-out-dose fits under Next experiments would.

Why would smaller doses be amplified more? At first glance the gain ordering looks backwards. It is not: the absolute wake still grows with dose (a 30% edit moves the final state far more than a 2% edit); what falls is the amplification per unit of delivered edit. The roughly 1.8x value is the gain at the smallest dose that passed the requested-versus-realized fidelity rule. It is not an established local-Jacobian gain: the 2%–4% panel failed dose-linearity, and the smaller doses failed the fidelity rule. Several mechanisms could contribute to the lower gain at larger doses. First, normalization compression: Llama applies RMSNorm on the way into every block, dividing the residual by its own overall scale. A tiny edit leaves that scale essentially untouched and rides through; a 30% edit measurably inflates the very norm it is divided by, so the network re-scales it downward everywhere downstream. Second, attention saturation: small perturbations move pre-softmax scores within their locally linear range, while large ones push attention patterns toward saturated, nearly winner-take-all configurations whose marginal sensitivity is lower. Third, trained robustness: a model trained on enormous data has seen its own representational noise and may have learned broadly contractive dynamics around its typical activations, so the farther an edit pushes the state off that manifold, the harder the remaining blocks pull back per unit of push. All three are hypotheses, not measurements; the first is also the most testable (the norm-corrected gain entry under Next experiments). The fidelity gate bounds the discrepancy between requested and realized edit sizes from 2% through 30%, but it does not by itself prove that the choice of denominator has zero effect on the gain curve.

The census established where the first-order description stops being adequate for these directions on this model; the mechanism that bends the trajectory, and whether any candidate “superior lens” would capture it, is a question for a study whose test is frozen before its outcomes are inspected.

Next experiments

Every follow-up named in this note, listed once and ranked roughly by cost, cheapest first. None has been run; each would need its own frozen plan.

  1. Held-out-dose fits on the existing census. Fit low-order directional models (for example \(ae-be^3\)) on one dose panel and check them on held-out doses, to distinguish a polynomial correction from saturation. No new forward passes.
  2. Norm-corrected gain. Recompute gain after accounting for the measured layer-wise norm inflation, which also quantifies how much the choice of denominator moves the gain curve; then, as a new run, deliver the edit as a norm-preserving rotation instead of an addition and check whether the dose profile of gain flattens.
  3. A one-prompt public notebook that exports the requested edit, realized edit, fixed-J projection, and actual final residual for one prompt, one direction, and one layer at each dose, so the study’s central decomposition can be audited in minutes rather than hours.
  4. Datatype and hook-path ablation (FP32, FP16, alternative hook implementations) on the same cells, which would turn “consistent with BF16 rounding” into a mechanism test and separate finite-precision effects from model dynamics downstream of the edit.
  5. A prompt-specific Jacobian on the same cells, the control that separates the two readings of the identity null: truncation versus expansion point.
  6. The SAE-direction extension. The measurement design transfers; the dose boundary does not. Replace the generic vectors with target-SAE, matched-SAE, and norm-matched generic directions; rerun the requested-versus-realized fidelity and common-mode checks for every vector; treat the 2%/3%/4% panel only as a candidate calibration starting point; add the study’s own controls and a never-intervened counterfactual branch; and specify the target features, prompts, dose panel, semantic endpoints, and analysis rules before their outcomes are inspected. The generic-direction result motivates this experiment; it does not confirm an SAE mechanism. Update (October 2026): a later, separately frozen source-aligned study in the same repository captured 40 paired J-lens cases under the accepted six SAE coordinates in Llama 3.3 70B (native-BF16 execution, FP32 readout, two capture seeds), with matched-SAE panels, identity, and five random-J comparators. It checked requested-versus-realized delivery and paired readouts at layers 50, 65, and 78 at fixed signed doses (±0.7 for individual features, ±0.5 for the aggregates); it did not rerun this note’s cross-dose linearity gates. Both the Jacobian lens and identity transport showed a downstream intervention footprint, which that study reports as propagation, not mediation.

Reproducibility And Artifact Ledger

Compact map for readers who already know what they want. Sample records and the teaching inventory are in the appendix.

Artifact Link
Experiment package experiments/consciousness_sae_signed_dose_scan
Pre-outcome freeze a084caa
Audited result release fde24e9
Frozen plan directory dose_scan_v1_plan_20260716
Compact replication record …/signed-dose-a084caa-wl8obvtuq0ax8t-v2-audit-recovery-c9
Protocol docs/…/PROTOCOL.md
Result summary RESULT_SUMMARY.md
Figure generator (sanitized post bundle) plot_signed_dose_scan_results.py (SHA-256 0e9db35a…; publication copy of the generator committed upstream with the figure package at f5e906e, with machine-local receipt paths replaced by basenames)
Post-wide number manifest provenance.json
Llama 3.3 70B Instruct revision 6f6073b… (gated)
Neuronpedia J-lens config revision a4114d7…

Table: compact ledger. Freeze and release commits are separated on purpose. The 2.23 GB raw residual tree stays off-repository; its inventory SHA-256 is in the appendix.


Technical Appendices

Appendix: release inventory

What we shipped In plain English For specialists License / access
Experiment code and gates Scripts that build, validate, run, and audit the scan experiments/consciousness_sae_signed_dose_scan open (repo license)
Frozen plan The pre-outcome protocol bytes dose_scan_v1_plan_20260716; plan manifest field plan_manifest_sha256 79810742…63c51d open
Compact audit package What a reader needs without the raw tensors …/audit-recovery-c9; audit status pass open
Audited summary (26.8 MB) Machine-readable census behind the figures SHA-256 b490b101c112f774ae7bffc9c54294a70b91c874c4cee78eddaa7890446c08f6 on-request (too large for git; bound by PUBLICATION_COMPLETE.json)
Raw residual tree (2.23 GB) Full archived arcs for independent replay inventory SHA-256 9fc8c8ffe5f8d34f8ddba863c11fff7370ef3644c1fad0139f96e39a4c8fbfc0 withheld / on-request (volume retention; not in git)
Empirical figures The four plots in this note per-figure .receipt.json in this post bundle; index figure-receipts-index.json open (bundled here)
Llama 3.3 70B Instruct Base weights for the run revision 6f6073b423013f6a7d4d9f39144961bfbfbc386b gated (Llama Community License)
Neuronpedia J-lens maps Corpus-average \(J_\ell\) used as reference revision a4114d7752d11eb546e6cf372213d7e75526d3a1 publicly released (see HF card)

Table: what "complete" means for this release. Middle column is plain language; right columns carry specialist pins and access conditions.

Open a record: compact publication marker

Plain English. The public package seals that the audit finished from the unchanged raw tree and records the hashes a skeptic should match.

Technical. PUBLICATION_COMPLETE.json in the compact replication record: status = complete_atomic_audit_only_recovery; summary_file_sha256 = b490b101…08f6; audit_receipt_sha256 = 176e2f7e…ee1; run id signed-dose-a084caa-wl8obvtuq0ax8t-v2.

Open a record: linearity census receipt

Plain English. Figure 1’s numbers are not typed by hand. A receipt lists every plotted range and failure count.

Technical. fig-1-linearity-census.receipt.json: actual_final_failure_count = 24; realized_source_failure_count = 0; j_of_realized_failure_count = 0; source summary SHA-256 b490b101…08f6.

Appendix A: Exact Test

The experiment used Meta’s Llama 3.3 70B Instruct checkpoint at revision 6f6073b… and Neuronpedia’s Llama-specific Jacobian-lens release at revision a4114d7…. Neuronpedia generated the maps with Anthropic’s reference method, averaging derivatives over 125 completed WikiText prompts of at most 128 tokens. They were not estimated from this study’s prompts or outcomes.

The three stress-test directions were independent standard-normal vectors in the 8,192-dimensional residual space, normalized to unit RMS and fixed by predeclared seeds. There was no semantic or SAE-based selection, rejection for outcome behavior, or post-hoc sign flip. Dose ran from 0.5% to 30% of residual RMS in 0.5-percentage-point increments. The prompts, directions, primary dose panel, and decision rules were prespecified.

Schematic pipeline of the experiment. A requested edit built in float32 is cast to BF16 to become the realized edit that actually lands after block 50; a dashed fidelity gate between them notes that requested-versus-realized checks fail below 2 percent dose and pass from 2 through 30 percent. From the realized edit two branches diverge: the fixed corpus-average Jacobian produces the predicted wake with one matrix multiply, while the model’s remaining blocks 51 through 79 produce the actual wake. Two question boxes at the bottom summarize the analyses: dose-linearity gates on the 2, 3, and 4 percent panel where the realized edit and fixed-J pass 24 of 24 and the actual final passes 0 of 24, and the predictive comparison where J beats five random maps but does not clear the identity margin at layer 50. Source: this research note.

Diagram: the study decomposition (requested edit, realized edit, predicted wake, actual wake) and the two frozen questions asked of them. Conceptual schematic; the quoted pass counts are from the audited census in the table at the head of this note.

For prompt \(p\), direction \(v\), and magnitude \(b\), the two signed branches produce the realized signed source edit (the quantity the implementation calls the central contrast)

\[ e_b = \frac{h^{\mathrm{post50}}_{+b}-h^{\mathrm{post50}}_{-b}}{2}. \]

The midpoint relative to the clean branch was retained as a separate common-mode diagnostic. The two signed branches therefore form one paired measurement, and a linearity cell is one prompt × direction curve across dose, giving 24 cells rather than 48.

For a realized layer-50 edit \(e_b\), the fixed lens supplies

\[ \Delta h_{79}^{J} = J_{50}\,e_b. \]

The released \(J_\ell\) is an 8192 × 8192 corpus- and position-averaged input-output Jacobian from the post-block-\(\ell\) residual to the post-block-79 residual, with no prompt-specific conditioning, intercept, or centering term. The row-vector implementation is \(e_bJ_{50}^{\mathsf T}\). The dose-normalized statistics \(c_{\min}\) and \(d_{\max}\), their thresholds, and the requested-versus-realized fidelity criteria are defined once, in How we scored pass versus fail and the fidelity section; “slope discrepancy” is the implementation’s name for \(d_{\max}\).

Schematic of what the two gates measure. Left panel, labeled source edit, dose-linear, 24 of 24 pass: three per-unit-dose vectors for the 2, 3, and 4 percent doses drawn from a common origin lie exactly on top of one another, illustrating same direction and same size. Right panel, labeled actual final state, bent, 0 of 24 pass: the three per-unit-dose vectors fan apart at visibly different angles and lengths, annotated with the observed census ranges for minimum cosine and size discrepancy. A caption line states that cosine catches rotation and the dose-normalized RMS discrepancy catches size and shape drift, one gate per failure mode. Source: this research note.

Diagram: the two failure modes the frozen gates test, drawn as dose-normalized vectors \(q_b\). Conceptual schematic: arrow geometry is illustrative; the annotated ranges are the audited census values in the table at the head of this note and in Figure 1.

Figure 4’s bands are 20,000-replicate prompt-resampling stability intervals (repeated reweightings of the same eight prompts to show sensitivity within this panel). They are not confidence intervals for a broader prompt population. Each Figure 4 map takes a different post-block source state \(\ell=50,\ldots,78\) to the same post-block-79 target. Only block 50 is the intervention site.

Appendix B: Pilot Study and Motivation for the Signed-Dose Scan

An earlier target-masked pilot established that the released maps were loaded and oriented correctly and that the clean readout could distinguish its prespecified semantic and Yes/No controls. It did not meet the prespecified generic-intervention criterion, so it did not support a claim that J outperformed identity. More importantly for the present design, that pilot did not preserve the edit that BF16 arithmetic actually realized. Requested-versus-realized error and downstream curvature therefore remained confounded.

The signed-dose scan was built to resolve that one ambiguity by retaining the requested edit, realized edit, J reference, and actual state separately at every dose. It does not retroactively change the pilot’s threshold result. The full gate table, statistics, hashes, and execution history remain in the pilot replication record.

Appendix D: Audit, Provenance, and Corrections

The replication record identifies the study as consciousness_sae_signed_dose_scan_v1 and the model run as signed-dose-a084caa-wl8obvtuq0ax8t-v2. Its independent audit status is pass; the audit was recomputed from the unchanged raw-data tree without new model inference. The 2.23 GB raw dataset remains off-repository. Its complete file-inventory SHA-256 is 9fc8c8ffe5f8d34f8ddba863c11fff7370ef3644c1fad0139f96e39a4c8fbfc0, and the audited-summary SHA-256 is b490b101c112f774ae7bffc9c54294a70b91c874c4cee78eddaa7890446c08f6. The compact replication record contains the protocol pointers, result summary, audit receipts, and, as of commit f5e906e, the committed figure package.

All four empirical figures were generated programmatically from that audited summary with Matplotlib. The generator validates source identity, row counts, and zero-target guards; emits SVG, PDF, and 300-DPI PNG; and writes a separate JSON receipt containing data selection, transformations, derived values, alt text, and output hashes. Verification regenerated all 12 images byte-for-byte and matched the article’s alt text to the receipts; to repeat it, with the on-request audited summary in place, run python3 plot_signed_dose_scan_results.py --summary CALIBRATION_SUMMARY.json --output-dir . --verify --post index.md. This post bundle carries a publication-sanitized copy of the upstream generator, with machine-local receipt paths replaced by stable basenames: plot_signed_dose_scan_results.py (bundled SHA-256 0e9db35a7f1200d450b179ab38ecd9ce512bb95107cf613909ee2b71cc3ed39f; upstream pre-sanitization SHA-256 480c4b9ec2d9ea464119a9336053f5bb18838049274d7c623687f282047c25aa). It was not yet present at result commit fde24e9; that named gap was closed by committing the script, the four figure sets (SVG/PDF/PNG), the per-figure receipts, and the receipts index into the compact replication record at f5e906e, after re-verifying every file hash against the receipt provenance blocks and figure-receipts-index.json. The experiment repo at f5e906e or later can therefore be treated as a complete figure provenance root.

AI-assisted editorial review improved exposition but was not treated as scientific verification; neither pass received raw tensors or row-level data.

Review pass (gpt-5.6-sol Pro) Input Review SHA-256 Cost
Scientific-integrity review draft plus a compact evidence card 2f25a07bfde8e7df7bbb59c3bbc0e13908052d6df6a3ed1c4709fdec38e89645 $0.7671
Zero-context reader review the scientifically corrected draft only 48fd3d83a2e02495d4ec15ac5fb1f7838dab9bb675a2e59b464bfa42206e84ee $0.6345

Corrections.

  • 4 September 2026. Falling per-unit-dose gain does not rule out a negative cubic correction. The Taylor discussion distinguishes that possibility from saturation and no longer calls the smallest eligible dose an established infinitesimal linear regime. The census paragraph in What the census found distinguishes approximate input proportionality from the exact identity preserved by a linear map. The measured census, gates, and released receipts are unchanged; no model experiment was rerun for this correction.
  • 2 October 2026. Revision: this edit reorganized the presentation (census table first, limitations and follow-ups collected in one place each, appendices trimmed) and corrected wording; no result, number, receipt, or figure changed.

Figure resources. Figure 1 receipt · PDF · PNG
Figure 2 receipt · PDF · PNG
Figure 3 receipt · PDF · PNG
Figure 4 receipt · PDF · PNG

References