The answer that moved

A small language model reads two statements about a sealed container. In one prompt, a reliable sensor says the key is in the blue box. In another, the same sensor says it is in the red box. At layer fourteen, a linear classifier cleanly separates activations associated with “blue” from activations associated with “red”. Add the classifier direction to the first activation and the model changes its answer. Remove the direction and its confidence falls.

It is tempting to say that we have found the model's belief about the key. The picture looks unusually persuasive. There is a line through activation space. Position along the line predicts the answer. Moving the activation along that line changes the answer. What more could a belief require?

Now alter one detail. Every blue-box example asks for a one-word answer, while every red-box example asks for a full sentence. The model's hidden state records response format because it must produce different syntax. The probe finds that strong, easy signal. Steering along it shifts the answer because the same residual stream also feeds the output mechanism. The line is real, the intervention is real, and the belief interpretation is false. We have found a behavioural handle entangled with the label.

Alter a different detail. Suppose the direction transfers across answer formats and paraphrases. Yet the activation was extracted after the model had already processed the answer token. The line may now be an echo of the decision rather than the state that produced it. Erasing the echo can still disturb later computation. Again, the observed effect does not identify the direction's causal role.

One more alteration matters. Rotate and rescale every hidden coordinate, then apply the inverse transformation before the next layer. The model's input-output behaviour remains identical. The probe normal changes, Euclidean angles change and the vector that previously seemed to point towards “blue” no longer has the same coordinates. A belief cannot depend on the arbitrary coordinate system chosen by the analyst. The claim needs an invariant meaning, not an attractive plot.

The central answer is that decodability, geometric regularity, causal control and belief-like state are four different claims. Evidence for one can support the next, but it does not entail it. A direction deserves the stronger name only when natural evidence changes it in a predicted way, matched counterfactual edits transfer the relevant behaviour, removal weakens that behaviour, unrelated capacities remain stable, and the result survives changes of context, format, layer and geometric convention.

This standard is deliberately demanding because the word belief carries more structure than “feature”. In this article, belief is an operational term. It means an internal state that summarises evidence about a proposition or latent variable and changes the model's proposition-sensitive predictions or actions. It does not assert subjective conviction, consciousness or a human-like attitude. Those are separate questions with separate evidence burdens.

The broader question of what a useful code must preserve belongs to Representation Before Intelligence. The companion paper Vectors as Directions, not Lists develops the basis and metric distinctions used here. This article takes the narrower step from geometry to semantics: when does an activation direction warrant a claim about evidence-sensitive belief?

Part one

Four claims hidden in a straight line

A model produces a hidden vector h at a chosen token and layer. An analyst trains a linear probe with weights w and obtains a score s = wᵀh + b. When the score predicts whether a proposition is true, supported or selected, the result is often described as a “truth direction”, “knowledge direction” or “belief vector”. Those phrases compress several inferential steps.

The evidence ladder from readable label to belief-like state Four rising terraces show increasing evidence burdens: decodability, stable geometry, causal mediation, and evidence-sensitive belief-like state. A coral shortcut from decodability to belief is crossed out. Readable probe predicts Stable transfers and deconfounds Causal patch and erase target behaviour Belief-like updates with evidence and preserves alternatives unsupported leap
Figure 1. One line can support four different claims. Conceptual figure. Each terrace adds a new experimental burden; probe accuracy alone does not license the highest terrace.

Claim one: the label is linearly readable

The modest claim is useful. Alain and Bengio's early probe work used independent linear classifiers to monitor what classes became separable through a network's layers. In language research, probes have helped locate grammatical, semantic and task-related information. A successful probe establishes that the sampled activations contain enough linearly accessible information for that probe, under that dataset and split.

It does not show that the base model uses the information. A high-capacity probe may learn a task that the representation merely makes possible. Even a linear probe can exploit lexical identity, source dataset, token position, answer length or another correlate. Hewitt and Liang introduced control tasks to measure whether probe success reflected the representation or the probe's capacity to memorise. The general lesson is durable: a readout is an instrument with its own inductive biases, not a transparent window.

Claim two: the representation has stable geometry

A direction becomes more interesting when it transfers. It predicts held-out entities, unfamiliar phrasings and different datasets. Contrast pairs yield similar directions at nearby layers. Scores vary smoothly with controlled changes in evidence. A low-dimensional subspace may support several related propositions. These observations suggest structure beyond one lucky separator.

Work on factuality provides genuine positive evidence. Marks and Tegmark reported linear structure for true and false statements, transfer between datasets and causal effects from interventions. Burns and colleagues used logical consistency between statements and negations to recover latent yes-no knowledge without labels. These studies make the linear hypothesis empirically serious. They do not make every fitted direction a belief, and their boundaries matter: datasets, prompts, token positions, model families and definitions of truth constrain what was shown.

Claim three: the direction participates in the computation

Causal evidence begins when altering a representation changes the downstream behaviour in the predicted way. Amnesic probing was motivated precisely by the gap between information being encoded and being used. Concept erasure methods such as LEACE can make a property unavailable to all linear classifiers while minimising a declared distortion. Interchange interventions in causal abstraction ask whether swapping an internal variable transfers the causal role predicted by a high-level model.

Steering gives a complementary sufficiency test. Inference-Time Intervention shifted selected attention-head activations and substantially changed TruthfulQA performance in the tested LLaMA-based models, with a reported trade-off against helpfulness. Contrastive Activation Addition formed residual-stream directions from paired behavioural examples and changed multiple target behaviours. These are important control results. Still, an intervention may move several entangled features, exploit an output shortcut or push the hidden state into a region the model never visits naturally.

Claim four: the state is belief-like

A belief claim adds a temporal and counterfactual structure. The state should change when relevant evidence changes and remain comparatively stable when nuisance features change. It should mediate a family of proposition-sensitive outputs, not just one token. Its update should occur before, or while, the model computes the relevant prediction rather than after the answer has been encoded. It should preserve uncertainty and alternatives where the evidence is incomplete.

This is why the term should be used sparingly. A sentiment direction can control tone without representing a proposition. A refusal direction can gate a policy without recording whether a request is harmful. A truth probe can read whether a completed answer is factual without revealing what the model would have predicted before seeing that answer. Belief is a claim about the role of a state in evidence-conditioned computation, not a synonym for any steerable feature.

What an evidence update must preserve

A belief-like state need not move monotonically with every additional token. Evidence can be duplicated, retracted, contradicted or supplied by a source whose reliability is itself uncertain. The stronger requirement is structural: changes that alter the evidential status of a proposition should produce predictable changes in the candidate state, while changes that preserve that status should not. A probe that reacts equally to a trusted observation, a quoted rumour and a formatting instruction is tracking salience, not evidential commitment.

For the sealed-container case, begin with no observation, then add a weak witness, a calibrated sensor, a conflicting sensor and finally a readback that identifies which instrument malfunctioned. Repeat the sequence with entity names, answer labels and order randomised. Before collecting activations, specify the expected partial ordering: decisive reliable evidence should move the state further than weak evidence; a contradiction should widen uncertainty rather than force an immediate flip; withdrawing the only decisive source should return the state towards the unresolved region. Test several proposition-sensitive behaviours, such as location prediction, evidence selection and a counterfactual question about what would change if the sensor were wrong. The object under test is the update relation across states, not the visual straightness of one snapshot.

Part two
The argument in one passChart · flow
flowchart LR
  A["The answer that moved"] --> B["Four claims hidden in a<br/>straight line"]
  B --> C["A belief is an update rule,<br/>not a coordinate"]
  C --> D["The counterfactual warrant test"]
  D -. "re-test" .-> A
  classDef first fill:#0a1424,stroke:#087A98,stroke-width:2px,color:#e6f3ff
  classDef step fill:#0a1424,stroke:#3f7da0,stroke-width:1px,color:#e6f3ff
  class A first
  class B,C,D step
A structural route through Representation Geometry and Belief Subspaces, from The answer that moved to Call the handle what the evidence earns. Reading use: follow the relation, then test it against the surrounding evidence and limits.

A belief is an update rule, not a coordinate

Let P be a proposition, e the evidence presented so far, c the surrounding context, and hℓ(e,c) the model's hidden state at layer ℓ. A practical belief-like variable should summarise how the model currently treats P and should influence a set of outputs whose correct distribution depends on P.

zP = Vᵀ M (hℓ − μ), ΔhP = V δ

V spans a candidate subspace, M supplies the geometry, μ is a reference activation and δ is a controlled edit. The score zP is a measurement; ΔhP is an intervention. Their relationship must be justified rather than assumed.

This notation exposes three choices that plots often hide. First, a subspace has a basis but is not identical to that basis. Rotating the columns of V within the same span changes coordinates without changing the subspace. Second, a linear measurement is a covector: it maps hidden states to scores. A steering vector is a displacement in hidden-state space. Third, an inner product or metric is needed to identify a measurement direction with an intervention direction.

The rotating-room thought experiment

Imagine that every hidden state is transformed by an invertible matrix A, and the next layer begins by applying A⁻¹. The model computes exactly the same function. Under this change, a probe weight must transform as w′ = A⁻ᵀw to preserve the score wᵀh. A physical displacement transforms as v′ = Av. These are not the same rule.

If an analyst simply sets v = w, the proposed edit depends on the chosen coordinates. A Euclidean dot product has silently converted a measuring hyperplane into a movement. Park, Choe and Veitch formalise related distinctions between subspace, measurement and intervention and introduce a causal inner product that connects them under stated counterfactual assumptions. The practical lesson is simpler: there is no basis-free “belief vector” until the experiment specifies how scores map to allowed interventions.

Measurement and intervention transform differently Two coordinate rooms represent the same computation. In the first, a blue probe normal and teal steering vector differ. After rotation and scaling, both transform differently while the decision boundary is preserved. coordinates h coordinates Ah probe normal w edit vector v same function, different coordinates
Figure 2. The rotating-room test. Thought experiment. A probe normal and a steering displacement transform differently under an invertible reparameterisation, even though the model's function is unchanged.

Natural updates are more informative than arbitrary moves

A steering vector proves that some displacement affects an output. A natural evidence update asks a stronger question: when a reliable observation changes while wording, format and task remain matched, does the model move through the same candidate subspace? If the sensor changes from “blue” to “red”, the hidden trajectory should change in a way that predicts the revised proposition. If the answer must be rendered as JSON rather than prose, a belief subspace should remain comparatively stable.

Input-level counterfactuals help because they keep the model on its ordinary computational path. Amini and colleagues changed morpho-syntactic features in naturalistic sentences while attempting to hold the rest of the sentence fixed. The exact controls differ by domain, but the principle transfers: manipulate the hypothesised cause at the input, trace the internal change, and only then compare it with an activation edit.

Belief trajectory through a curved subspace A sequence of evidence updates moves a hidden state along a curved lavender manifold from uncertainty towards support. A straight coral edit cuts away from the manifold, while a teal path follows it. prior posterior evidence-conditioned manifold linear shortcut can leave support
Figure 3. Belief trajectory through subspaces. Signature figure. Illustrative geometry, not measured activations. Natural evidence updates may trace a curved family of states; a global straight-line edit can leave that family.

Why one direction may be too small

A binary answer invites a one-dimensional picture, but evidence states can carry more than polarity. The model may separately encode estimated probability, source reliability, uncertainty, entity identity, temporal applicability and the hypothesis currently under consideration. Several directions may form a local subspace. Across a wider range, that subspace may bend into a manifold.

A 2026 preprint by Sarfati and colleagues creates an unusually controlled setting: a model infers the parameters of a numerical generating distribution from in-context samples. The authors report curved activation manifolds for posterior parameters, local transfer of linear probes and off-manifold distortions from naive linear steering. It is a toy setting and a preprint, so it does not establish that every semantic belief is curved. It does demonstrate a concrete failure of the inference “linearly decodable, therefore faithfully editable along one line”.

Another 2026 preprint by Lampinen and colleagues reports that factuality-related linear representations can change markedly over simulated conversations and that steering can have different effects at different context points. Again, the scope is bounded. The design nevertheless warns against treating one static direction as a context-free property of the model.

Part three

The counterfactual warrant test

The practical question is not whether activation directions are useful. They clearly can be. The question is what claim a particular experiment earns. The following test turns “we found a belief vector” into a sequence of falsifiable gates.

Belief-subspace warrant card

  1. Define the proposition and behavioural family. Name what changes if the proposition is supported, rejected or unresolved. Include more than one output wording or task head.
  2. Construct matched natural counterfactuals. Change evidence for the proposition while holding format, source family, token position, entity and nuisance variables as fixed as the domain permits.
  3. Separate readout from edit geometry. Report the probe functional, the intervention displacement and the metric or mapping connecting them. Test an invertible reparameterisation where feasible.
  4. Test cross-context stability. Evaluate new paraphrases, entities, answer formats, prompt roles, layers and domains. Include deconfounded and adversarial splits.
  5. Test causal sufficiency and necessity. Patch the candidate component between matched cases, then erase or randomise it. Compare with equal-norm random and nuisance directions.
  6. Measure selectivity and support. Track unrelated outputs, fluency, calibration and activation distance from naturally observed states. Sweep intervention magnitude in both directions.
  7. Trace evidence updates through time. Verify that natural evidence moves the state before the relevant output and that reversal or correction produces the predicted trajectory.
  8. Bound the noun. Use “linear correlate”, “readout direction”, “steering handle” or “local belief-like subspace” according to the highest gate passed.

Thought experiment: the courier envelope

A courier carries a sealed envelope marked either TRUE or FALSE. A camera can read the mark with perfect accuracy. The courier does not know the contents and never uses the mark to choose a route. If the mark is repainted, the camera's output changes. If the route-planning system reads the same pixels for a colour-balance calculation, repainting can even disturb the courier's movement. None of this shows that the mark represents the courier's belief about the contents.

The envelope is a structural analogy for an answer-format feature. The probe can decode it. An intervention can change downstream behaviour. The missing relation is causal alignment between the variable and the proposition-sensitive computation. The analogy fails where neural representations are distributed and reused, but that failure makes the control more important, not less.

Observational separation caused by answer format Blue and coral points form two apparent classes along a diagonal probe direction, but shape marks show that a vertical format axis explains the separation. Counterfactual pairs with the same shape isolate a smaller horizontal belief axis. proposition-sensitive coordinate answer-format coordinate observational probe matched belief change format-flipped controls
Figure 4. A probe can follow the envelope rather than the proposition. Synthetic geometry. Observational labels are confounded with answer format; matched format counterfactuals reveal a different, smaller direction.

Sufficiency is not necessity

If adding a direction changes an answer, the direction is sufficient to perturb some route to that answer at that intervention point. The model may also reach the answer through other features. Conversely, erasing one line may fail because the concept is redundantly or nonlinearly encoded. A strong experiment therefore uses both directions of evidence.

Sufficiency: take a matched pair whose evidence differs, replace only the candidate subspace component from one case with the other's, and ask whether the proposition-sensitive behaviour transfers. Necessity: remove, randomise or equalise the candidate component and ask whether the behaviour weakens. Selectivity: confirm that unrelated variables and general capability remain stable. Completeness: check whether the intervention actually transformed all recoverable target information rather than fooling the original probe.

A 2025 study by Canby and colleagues operationalised completeness and selectivity for causal probing and found a trade-off across tested methods and models. In their experiments, nonlinear interventions were usually more reliable than linear ones, while stronger interventions often bought completeness at the cost of collateral change. The exact ranking is not universal, but the evaluation principle is: an intervention cannot support a causal interpretation until its target coverage and off-target damage are measured.

Serious negative control: the output-gate account

The strongest competing explanation is often simpler than a belief. The candidate direction may bias an answer register, a familiar token family or a late decision gate. It can still predict labels, survive paraphrase and change outputs when steered because all tested tasks terminate in the same verbal convention. Under this account, the direction controls how a conclusion is expressed without carrying the evidence-conditioned state from which the conclusion should follow.

Give that mechanism its own baseline. Ask for the same proposition through several behavioural heads: free generation, forced choice with permuted option positions, selection of the decisive evidence span, prediction under a counterfactual source failure and an action-eligibility judgement whose labels are newly assigned. Intervene before any answer token appears. Compare the candidate with an equal-norm direction restricted to the output-embedding span and with a direction trained only on response format. A belief-like subspace should transfer the proposition's status across these heads while preserving their rendering conventions. A late output gate should lose its effect when labels are permuted or when the task requires selecting evidence rather than naming a conclusion. If the output-gate baseline explains the intervention equally well, the belief account has not earned explanatory work.

Intervention evidence matrix A two by two matrix crosses target change with off-target stability. Only the high target change and high stability quadrant supports a selective causal handle. stable but inert readout only selective causal strongest warrant no effect failed intervention collateral control behaviour changed, meaning unclear target effect increases → off-target stability increases →
Figure 5. Intervention evidence requires two axes. Decision instrument. A large behavioural effect is ambiguous when unrelated properties also move.

Timing separates state from echo

Extracting activations after an answer token is convenient because the labels are aligned. It is also dangerous. The hidden state may encode the chosen answer, its grammatical form and the model's preparation for the next token. To argue that a subspace carries a belief used to make the answer, locate the signal before the decision, trace it through the relevant computation and show that an early intervention changes later proposition-sensitive outputs.

The most informative design follows a trajectory. Present evidence item by item. Measure how the candidate score changes. Insert a correction and test reversal. Withhold decisive evidence and test whether uncertainty remains rather than collapsing to a forced binary. Compare natural updates with activation edits. If the edit moves the model to a state that natural evidence never produces, the experiment has shown controllability, not a faithful counterfactual belief.

Part four

The counterfactual edit laboratory

A minimal synthetic experiment makes the confound visible. Each hidden state has six coordinates. Two carry a proposition-sensitive signal. One carries a much larger answer-format signal. The remaining coordinates contain an interaction or unrelated noise. In the observational training set, answer format agrees with the proposition label 95 per cent of the time.

A difference-in-means probe trained on those examples achieves high held-out accuracy. So does a direction that contains only answer format. The apparent geometry is not fabricated: the model state genuinely separates. The mistake is the semantic interpretation of the separator.

The laboratory then creates matched counterfactual pairs. Within each pair, the proposition changes while answer format and noise are held fixed. Averaging those differences recovers a direction dominated by the coordinates that the synthetic proposition decoder actually uses. The test evaluates each candidate on a balanced set where format no longer predicts the proposition, steers the target and off-target decoders, and removes the direction to measure necessity.

Counterfactual edit laboratory results Four candidate directions are compared. The observational probe has high confounded accuracy but chance balanced accuracy and low specificity. The matched direction transfers and is highly specific. Format and orthogonal controls fail target tests. balanced probe accuracy observationalmatched pairformat controlorthogonal 52.4%90.6%52.4%48.1% causal specificity 35.4%94.5%
Figure 6. Matched counterfactuals recover the causal direction that observational probing misses. Measured synthetic results from the included Python artefact. Denominators are 2,000 test examples per split; values are deterministic under the stated seeds.
Candidate Confounded probe Balanced probe Target Δ Format Δ Specificity Decoder after erasure
Observational probe95.2%52.4%0.991.8035.4%71.6%
Matched counterfactual98.2%90.6%2.320.1494.5%47.5%
Format-only control95.2%52.4%0.002.000.0%93.5%
Orthogonal control47.9%48.1%0.000.000.0%93.5%

The observational probe scores 95.2 per cent on a test split that preserves the confound and 52.4 per cent when format is balanced. Its symmetric intervention changes the format decoder more than the proposition decoder, so only 35.4 per cent of its measured effect is target-specific. It is a good description of the training distribution and a poor belief claim.

The matched direction transfers to the balanced split at 90.6 per cent, produces a much larger target change than format change, and reaches 94.5 per cent specificity. Erasing it reduces the proposition decoder from 93.5 per cent baseline accuracy to 47.5 per cent. The format-only direction matches the observational probe's impressive confounded accuracy while leaving the proposition decoder unchanged when removed. The negative control is not an afterthought; it is the result that identifies what the first probe was really measuring.

What the laboratory does and does not establish

The artefact proves no claim about a real language model. Its purpose is diagnostic. It shows that high accuracy, linear separation and steering effects can coexist with a wrong semantic interpretation. It also shows why paired interventions recover a more causally aligned direction when the synthetic data-generating process makes that direction identifiable.

Real activations are harder. Confounds are not fully observed, features can be redundant, the relevant geometry may be nonlinear and changing one prompt detail can alter many latent variables. A real experiment should therefore add model and layer replication, multiple prompt templates, held-out domains, equal-norm random controls, activation-distribution checks and a pre-registered criterion for what would count as failure.

Open the complete runnable Python artefact

Save as belief_subspace_counterfactual_lab.py and run python3 belief_subspace_counterfactual_lab.py. It uses only the Python standard library. The positive case is the matched counterfactual direction; the negative cases are the format-only and orthogonal controls. Assertions fail loudly if the expected pattern disappears.

#!/usr/bin/env python3
"""Counterfactual edit laboratory for a synthetic activation space.

The laboratory separates four claims that are often collapsed:
1. a direction predicts a label on observational data;
2. it transfers when a format confound is broken;
3. moving along it changes the proposition-sensitive decoder;
4. that change is selective rather than collateral.

The data are synthetic. No model weights, private prompts, or external packages are
required. Run with:

    python3 belief_subspace_counterfactual_lab.py
"""
from __future__ import annotations

from dataclasses import dataclass
import math
import random
from typing import Iterable, Sequence

Vector = tuple[float, ...]
DIM = 6


def dot(a: Sequence[float], b: Sequence[float]) -> float:
    return sum(x * y for x, y in zip(a, b))


def add(a: Sequence[float], b: Sequence[float]) -> Vector:
    return tuple(x + y for x, y in zip(a, b))


def subtract(a: Sequence[float], b: Sequence[float]) -> Vector:
    return tuple(x - y for x, y in zip(a, b))


def scale(a: Sequence[float], factor: float) -> Vector:
    return tuple(factor * x for x in a)


def unit(a: Sequence[float]) -> Vector:
    length = math.sqrt(dot(a, a))
    if length == 0:
        raise ValueError("Cannot normalise the zero vector")
    return tuple(x / length for x in a)


@dataclass(frozen=True)
class Example:
    hidden: Vector
    belief: int   # +1 means evidence supports the proposition, -1 means it does not
    format: int   # +1/-1 is an answer-format feature, not part of the proposition


def hidden_state(belief: int, answer_format: int, noise: Sequence[float]) -> Vector:
    """Construct a six-dimensional synthetic hidden state.

    Coordinate 0 and part of coordinate 4 carry proposition-sensitive state.
    Coordinate 1 carries a much larger answer-format signal.
    Coordinate 2 contains a weak interaction. Coordinates 3 and 5 are unrelated.
    """
    n0, n1, n2, n3, n4, n5 = noise
    return (
        0.65 * belief + 0.05 * answer_format + n0,
        2.10 * answer_format + 0.05 * belief + n1,
        0.25 * belief * answer_format + n2,
        n3,
        0.35 * belief + 0.35 * answer_format + n4,
        n5,
    )


def sample(count: int, *, confounded: bool, seed: int) -> list[Example]:
    rng = random.Random(seed)
    rows: list[Example] = []
    for _ in range(count):
        belief = rng.choice((-1, 1))
        if confounded:
            # In 95% of observational examples, answer format reveals the label.
            answer_format = belief if rng.random() < 0.95 else -belief
        else:
            answer_format = rng.choice((-1, 1))
        noise = [rng.gauss(0.0, 0.45) for _ in range(DIM)]
        rows.append(Example(hidden_state(belief, answer_format, noise), belief, answer_format))
    return rows


def mean_for_label(rows: Iterable[Example], label: int) -> Vector:
    selected = [row.hidden for row in rows if row.belief == label]
    return tuple(sum(h[j] for h in selected) / len(selected) for j in range(DIM))


def observational_direction(rows: list[Example]) -> Vector:
    """Difference in class means on confounded observational data."""
    return unit(subtract(mean_for_label(rows, 1), mean_for_label(rows, -1)))


def matched_counterfactual_direction(count: int = 1_000, seed: int = 4) -> Vector:
    """Estimate a direction from pairs that change belief but hold format/noise fixed."""
    rng = random.Random(seed)
    differences: list[Vector] = []
    for _ in range(count):
        answer_format = rng.choice((-1, 1))
        noise = [rng.gauss(0.0, 0.45) for _ in range(DIM)]
        positive = hidden_state(1, answer_format, noise)
        negative = hidden_state(-1, answer_format, noise)
        differences.append(subtract(positive, negative))
    mean_difference = tuple(
        sum(vector[j] for vector in differences) / len(differences)
        for j in range(DIM)
    )
    return unit(mean_difference)


def threshold(rows: list[Example], direction: Vector) -> float:
    positive = [dot(row.hidden, direction) for row in rows if row.belief == 1]
    negative = [dot(row.hidden, direction) for row in rows if row.belief == -1]
    return (sum(positive) / len(positive) + sum(negative) / len(negative)) / 2.0


def probe_accuracy(rows: list[Example], direction: Vector, cut: float) -> float:
    correct = 0
    for row in rows:
        prediction = 1 if dot(row.hidden, direction) >= cut else -1
        correct += prediction == row.belief
    return correct / len(rows)


def proposition_logit(hidden: Sequence[float]) -> float:
    """Synthetic decoder that actually uses proposition-sensitive coordinates."""
    return hidden[0] + 0.60 * hidden[4]


def format_logit(hidden: Sequence[float]) -> float:
    return hidden[1]


def unrelated_logit(hidden: Sequence[float]) -> float:
    return 0.70 * hidden[3] + 0.30 * hidden[5]


def erase(hidden: Vector, direction: Vector) -> Vector:
    """Remove the Euclidean projection on one candidate direction."""
    return subtract(hidden, scale(direction, dot(hidden, direction)))


def decoder_accuracy(rows: list[Example], direction_to_erase: Vector | None = None) -> float:
    correct = 0
    for row in rows:
        hidden = erase(row.hidden, direction_to_erase) if direction_to_erase else row.hidden
        prediction = 1 if proposition_logit(hidden) >= 0.0 else -1
        correct += prediction == row.belief
    return correct / len(rows)


@dataclass(frozen=True)
class Result:
    name: str
    confounded_accuracy: float
    balanced_accuracy: float
    target_effect: float
    format_effect: float
    unrelated_effect: float
    specificity: float
    decoder_accuracy_after_erasure: float


def evaluate(
    name: str,
    direction: Vector,
    train: list[Example],
    confounded_test: list[Example],
    balanced_test: list[Example],
) -> Result:
    cut = threshold(train, direction)

    # Symmetric intervention: compare h + direction with h - direction.
    target_effect = 2.0 * abs(direction[0] + 0.60 * direction[4])
    format_effect = 2.0 * abs(direction[1])
    unrelated_effect = 2.0 * abs(0.70 * direction[3] + 0.30 * direction[5])
    denominator = target_effect + format_effect + unrelated_effect
    specificity = target_effect / denominator if denominator else 0.0

    return Result(
        name=name,
        confounded_accuracy=probe_accuracy(confounded_test, direction, cut),
        balanced_accuracy=probe_accuracy(balanced_test, direction, cut),
        target_effect=target_effect,
        format_effect=format_effect,
        unrelated_effect=unrelated_effect,
        specificity=specificity,
        decoder_accuracy_after_erasure=decoder_accuracy(balanced_test, direction),
    )


def percentage(value: float) -> str:
    return f"{100.0 * value:5.1f}%"


def main() -> None:
    train = sample(4_000, confounded=True, seed=1)
    confounded_test = sample(2_000, confounded=True, seed=2)
    balanced_test = sample(2_000, confounded=False, seed=3)

    candidates = [
        ("observational probe", observational_direction(train)),
        ("matched counterfactual", matched_counterfactual_direction()),
        ("format-only control", (0.0, 1.0, 0.0, 0.0, 0.0, 0.0)),
        ("orthogonal control", (0.0, 0.0, 0.0, 1.0, 0.0, 0.0)),
    ]
    results = [
        evaluate(name, direction, train, confounded_test, balanced_test)
        for name, direction in candidates
    ]

    print(f"Baseline proposition-decoder accuracy: {percentage(decoder_accuracy(balanced_test))}\n")
    print(
        f"{'candidate':25} {'conf. probe':>11} {'balanced':>10} "
        f"{'target Δ':>9} {'format Δ':>9} {'specific':>9} {'after erase':>12}"
    )
    print("-" * 94)
    for result in results:
        print(
            f"{result.name:25} "
            f"{percentage(result.confounded_accuracy):>11} "
            f"{percentage(result.balanced_accuracy):>10} "
            f"{result.target_effect:9.2f} "
            f"{result.format_effect:9.2f} "
            f"{percentage(result.specificity):>9} "
            f"{percentage(result.decoder_accuracy_after_erasure):>12}"
        )

    by_name = {result.name: result for result in results}
    observational = by_name["observational probe"]
    matched = by_name["matched counterfactual"]
    format_control = by_name["format-only control"]
    orthogonal = by_name["orthogonal control"]

    # Positive and negative cases. These fail loudly if the experiment changes.
    assert observational.confounded_accuracy > 0.90
    assert observational.balanced_accuracy < 0.60
    assert matched.balanced_accuracy > 0.85
    assert matched.specificity > 0.90
    assert matched.decoder_accuracy_after_erasure < 0.55
    assert format_control.target_effect == 0.0
    assert format_control.decoder_accuracy_after_erasure > 0.90
    assert orthogonal.confounded_accuracy < 0.55

    print("\nAssertions passed: observational confounding exposed; matched causal direction recovered.")


if __name__ == "__main__":
    main()
Part five
How the claim changes under pressureChart · state
stateDiagram-v2
  [*] --> Claim
  state "Claim one, the label is<br/>linearly readable" as Claim
  state "Claim two: the representation<br/>has stable geometry" as Test
  state "Claim three: the direction<br/>participates in the<br/>computation" as Revision
  Claim --> Test: expose mechanism
  Test --> Decision: evidence survives
  Test --> Revision: rival survives
  Revision --> Claim: narrow or rebuild
  Decision --> [*]
The revision loop begins with Claim one, the label is linearly readable and keeps counterexamples inside the reasoning path. Reading use: follow the relation, then test it against the surrounding evidence and limits.

What the latent state may authorise

Suppose a payment agent must determine whether a transfer was settled after a network timeout. The evidence packet contains an accepted command, no final response, a ledger snapshot from before submission and a later but ambiguous status message. An interpretability team finds a subspace whose score predicts whether the model will answer “settled”. Matched evidence changes move the score. Patching transfers the answer. Erasure weakens it. The claim may now deserve “local belief-like subspace about settlement status” within the tested model and context.

That result still does not prove that the transfer settled. The model's state is a representation of supplied evidence and learned regularities. It is not the payment rail, the ledger or a postcondition readback. Nor does the latent score grant authority to retry, reverse or notify a customer. Model belief, world state and action authority remain separate objects even when the belief interpretation is causally strong.

Worked scenario: preserving an unknown outcome

Define the operational proposition precisely: P means “transfer T has a confirmed settlement receipt valid at decision time”. The label set is three-way: confirmed, not confirmed and unknown. Build matched evidence packets rather than harvesting whatever cases happen to be available. Packet A contains an accepted command and no readback. Packet B adds a signed settlement receipt. Packet C contains a rejection receipt. Packet D preserves Packet A's evidence but changes provider names, amounts, document order and requested response schema. Further variants withdraw a receipt, introduce a stale status or add a second source that contradicts the first.

Trace the candidate state after each evidence item. The score should remain unresolved for Packet A, move towards confirmed for B and towards not confirmed for C. D should stay close to A despite surface changes. Patch only the candidate component from B into A before the status decision. A successful intervention should transfer settlement-sensitive judgements, including which evidence would justify the conclusion, without copying the amount, beneficiary, urgency or response format. Erasure should weaken those judgements while preserving document parsing and general instruction following. A dose sweep should reveal a bounded response rather than arbitrary token collapse, and edited activations should remain near states reached by natural evidence.

Pre-register the defeat conditions. The claim fails if provider identity predicts the score better than settlement evidence, if patching changes only the word “settled”, if a stale receipt produces the same trajectory as a valid one, or if the intervention damages unrelated case fields. Passing the experiment changes the interpretability claim, but not the execution policy. The model may draft an assessment and request a readback. A deterministic observer must still obtain the external postcondition, update world state and issue an effect receipt before any retry or customer notification. A warranted latent belief can improve diagnosis; it cannot resolve an unknown outcome by declaration.

Latent belief stops at the model boundary A nested diagram shows external evidence flowing into a model. Inside the model is a belief-like subspace and proposal. Outside, deterministic gates require identity, authority and observed outcome before action. operational system evidence receipts, ledger, timestamps model boundary belief-like subspace proposal SETTLED? authority gate identity, policy, readback latent score cannot bypass verified state
Figure 7. A belief-like state remains inside the model's epistemic boundary. Synthetic production-shaped scenario. External evidence and deterministic authority controls still govern consequential effects.

Three legitimate uses

Mechanistic diagnosis. A warranted subspace can reveal whether evidence reaches the relevant computation, where updates occur and which contexts destabilise the representation. This can guide dataset design, architecture experiments and targeted failure injection.

Evaluation and monitoring. Scores can become research telemetry when calibrated against behaviour and checked for drift. They may detect that a model is internally treating unsupported claims as settled even before the final answer becomes wrong. Such telemetry needs versioned thresholds and independent outcome tests because hidden-state distributions change across models, quantisation, prompts and releases.

Bounded intervention. Steering can be useful in sandboxes, controlled generation or recovery experiments. It should be treated like a model modification with dose limits, off-target tests and rollback, not like an instruction that supplies missing evidence. For consequential systems, the intervention changes a proposal mechanism; it does not create permission or fact.

The explicit failure boundary

The belief-subspace approach ceases to help when the target variable is not identifiable from available interventions, when natural contexts induce incompatible geometries, when edits cannot achieve completeness without unacceptable collateral damage, or when the relevant computation is distributed nonlinearly beyond the tested subspace. It also fails as an operational control when the system needs an externally verifiable fact rather than a model's internal estimate.

A null result is informative. If a probe transfers but patching fails, call it a readout. If steering works but natural evidence moves elsewhere, call it a control handle. If effects reverse across contexts, call it local. If a nonlinear or path-dependent intervention is required, stop forcing a global direction. The vocabulary should contract when the evidence contracts.

Claim naming decision surface A branching decision surface maps experimental outcomes to cautious names: correlate, readout direction, steering handle, local causal subspace, or belief-like subspace. probe transfers? linear correlate no yes causal edit selective? readout direction yes tracks natural evidence? steering handle yes local belief-like subspace no
Figure 8. Name the object by the highest test it passes. Decision instrument. The labels are deliberately asymmetric: stronger nouns require additional evidence, while a useful control handle need not be a belief.

Compact glossary

Probe
A model trained on frozen activations to predict a labelled property. It measures decodability under its own capacity and dataset.
Readout direction
A linear functional whose score predicts a property. It need not be a valid direction for intervention.
Steering vector
A displacement added to activations to alter downstream behaviour. Its meaning depends on intervention point, scale and geometry.
Subspace
A set of directions closed under linear combination. The span, rather than any one chosen basis, is the invariant object.
Belief-like state
An operational internal state that updates with evidence about a proposition or latent variable and mediates proposition-sensitive behaviour.
Completeness
The degree to which an intervention transforms all recoverable target information.
Selectivity
The degree to which an intervention leaves non-target properties and capabilities unchanged.
The evidence conversationChart · sequence
sequenceDiagram
  participant Q as Question
  participant M as Mechanism
  participant E as Evidence
  participant D as Decision
  Q->>M: The answer that moved
  M->>E: Claim one, the label is linearly readable
  E-->>M: compare rival explanations
  E->>D: Call the handle what the evidence earns
  D-->>Q: revise scope or act
Question, mechanism, evidence and decision exchange the burdens developed in Representation Geometry and Belief Subspaces. Reading use: follow the relation, then test it against the surrounding evidence and limits.

Call the handle what the evidence earns

Activation geometry has moved from decorative visualisation to an experimental control surface. Linear probes can reveal accessible structure. Cross-dataset directions can expose regularities. Patching, erasure and steering can test causal roles. Recent work also shows the limits: format can create perfect separation, interventions trade completeness against selectivity, context can change a direction's meaning, and linearly readable variables can live on curved manifolds that straight edits leave behind.

The resulting discipline is not scepticism for its own sake. It preserves the value of each result. A correlational direction is useful for diagnosis. A stable readout can support monitoring. A selective steering handle can support controlled intervention. A belief-like subspace can support a stronger mechanistic model of evidence-conditioned computation. Problems begin when the name outruns the test.

The changed research decision is to make matched counterfactuals, causal necessity, causal sufficiency, selectivity, timing and geometric support the entrance criteria for a belief claim. The changed architecture decision is to keep that claim inside the model boundary. No activation score, however interpretable, substitutes for external evidence, verified world state or scoped authority.

A good next experiment is therefore narrow. Choose one proposition family with controllable evidence. Break format and source confounds. Trace the state before the answer. Compare the probe functional with the intervention vector under an explicit metric. Patch, erase and sweep the edit. Measure off-target effects and distance from natural activations. Repeat across contexts. Then state the strongest noun that survives.

References and source notes

  1. Alain, G. and Bengio, Y. Understanding Intermediate Layers Using Linear Classifier Probes.
  2. Hewitt, J. and Liang, P. Designing and Interpreting Probes with Control Tasks. EMNLP-IJCNLP 2019.
  3. Burns, C., Ye, H., Klein, D. and Steinhardt, J. Discovering Latent Knowledge in Language Models Without Supervision. ICLR 2023.
  4. Elazar, Y., Ravfogel, S., Jacovi, A. and Goldberg, Y. Behavioral Explanation with Amnesic Counterfactuals. TACL 2021.
  5. Geiger, A., Lu, H., Icard, T. and Potts, C. Causal Abstractions of Neural Networks. NeurIPS 2021.
  6. Belrose, N. et al. LEACE: Perfect Linear Concept Erasure in Closed Form. NeurIPS 2023.
  7. Li, K. et al. Inference-Time Intervention: Eliciting Truthful Answers from a Language Model.
  8. Marks, S. and Tegmark, M. The Geometry of Truth. COLM 2024.
  9. Park, K., Choe, Y. J. and Veitch, V. The Linear Representation Hypothesis and the Geometry of Large Language Models.
  10. Rimsky, N. et al. Steering Llama 2 via Contrastive Activation Addition. ACL 2024.
  11. Amini, A., Pimentel, T., Meister, C. and Cotterell, R. Naturalistic Causal Probing for Morpho-Syntax. TACL 2023.
  12. Canby, M. E., Davies, A., Rastogi, C. and Hockenmaier, J. How Reliable are Causal Probing Interventions?. IJCNLP-AACL 2025.
  13. Sahoo, S., Jain, V., Chadha, A. and Chaudhary, D. Linear Probes Detect Task Format, Not Reasoning Mode in Language Model Hidden States. TrustNLP 2026.
  14. Sarfati, R. et al. The Shape of Beliefs. Preprint, 2026.
  15. Lampinen, A. K. et al. Linear Representations in Language Models Can Change Dramatically over a Conversation. Preprint, 2026.