CleanstoneDevelopmental and independent evidence for machine minds.

Open replication. R1 method reconstruction

Status 2026-10-30: draft for the authors (protocol step 1 of plan.md). Nothing has been run.

Target: Gurnee, Sofroniew, Pearce, Piotrowski, Kauvar, Chen, Soligo, Bogdan, Ong, Wang, Thompson, Abrahams, Kantamneni, Ameisen, Batson, Lindsey, "Verbalizable Representations Form a Global Workspace in Language Models", Transformer Circuits Thread, published 2026-07-06. Core contributors Gurnee, Sofroniew and Lindsey; correspondence to Lindsey (P#authors).

Sources and citation keys

Every claim below carries one of these keys. An anchor after P# is the HTML id of the section in the paper, so P#ws-report resolves to https://transformer-circuits.pub/2026/workspace/#ws-report.

The task brief asked for a reconstruction from the published text alone. The paper ships with code and prompt data (P#app-exp-details), so the text is the primary source and R is cited separately wherever it settles or contradicts the text. Gaps that R closes are marked as such; they still go to the authors, because R targets open models and may not match the Claude-scale pipeline.

The paper's static HTML prints every cross-reference as "??"; section numbers used by E (§3.1 to §3.5, §4.1 to §4.3, §9) are inferred from the heading order. Figure numbers come from the captions.

Method summary

The Jacobian lens (J-lens) maps a residual-stream activation at layer l into the final-layer basis with one fixed matrix per layer, then decodes it with the model's own final norm and unembedding. The matrix is the average Jacobian of the late residual stream with respect to the layer-l residual, averaged over source positions, all current and later target positions, and 1000 pretraining-like sequences of 128 tokens (P#methods-jlens, P#app-method-details). Each vocabulary token t gets one J-lens vector per layer, the row t of W_U J_l. The J-space is the set of activations expressible as a sparse nonnegative combination of at most k J-lens vectors, k usually at most 25 (P#methods-jspace, P#app-sparse-frame). The paper reads activations with the lens, decomposes them by nonnegative gradient pursuit, and writes to them by steering, ablation and lens-coordinate swaps (P#methods-technical-details). Five functional properties (verbal report, directed modulation, internal reasoning, flexible generalization, selectivity) are each shown by intervention experiments on Claude models (P#intro-lm-workspace, P#workspace), plus three structural signatures: a mid-depth layer band, limited capacity, preferential broadcast by MLPs and attention heads (P#structure).

Models

The Jacobian lens

Quantity

The text defines, for each layer l (P#methods-jlens):

J_l = E_{t, t' >= t, prompt} [ d h_final,t' / d h_l,t ]

"where the expectation is taken over the source position t, all subsequent positions t' within the context, and a corpus of one thousand prompts sampled from a pretraining-like distribution. The result is a single d_model x d_model matrix per layer" (P#methods-jlens).

The readout is (P#methods-jlens):

lens(h_l) = softmax(W_U norm(J_l h_l))

"We refer to the rows of W_U J_l as the Jacobian lens (J-lens) vectors at layer l" (P#methods-jlens). The logit lens is the special case J_l = I (P#methods-compare).

The appendix changes the default target: "The default lens on Sonnet 4.5, used throughout the paper, computes d z_t' / d h_l,t with z taken at the penultimate layer and the expectation taken over all t' >= t" (P#app-method-details). The stated reason is that including the last block "can sometimes increase the number of noisy artifacts in lens-readouts" (P#app-method-details).

Estimator

The pseudocode in P#app-method-details injects a one-hot cotangent e_i at every position of the target layer, backpropagates to every layer, and takes the mean over source positions of the resulting gradient, one backward pass per output dimension, "in practice batched". So row i of the per-prompt J_l is the mean over source positions t of the sum over targets t' >= t of the gradient. Per-prompt matrices are then averaged elementwise over prompts (P#app-method-details).

R implements the same estimator and states it is "the reduction used in the paper": "The gradient at source position p is then sum_{p' >= p} dh_final[p'] / dh_l[p], the sum over later target positions; we take the mean over source positions p" (R jlens/fitting.py, module docstring). R also:

There is no perturbation size. J_l is an analytic Jacobian computed by backpropagation, and the lens is first-order by construction (P#methods-jlens). Perturbation magnitudes enter only in the interventions (swap strength alpha, injection strength, matched-norm controls), listed with each experiment below.

Variants the authors tested

Target layer (final against penultimate), frozen-QK gradients (attention pattern held fixed), target positions (all t' >= t, self-only t' = t, future-only t' > t), aggregation (mean against median, with optional N-sigma outlier filters on residual norm within a prompt and on Jacobian Frobenius norm across prompts, and skipping the first several positions), and corpus size from 1 to 1000 prompts (P#app-method-details). Reported outcome: "methods are fairly consistent among these design choices, though mean aggregation of penultimate is a small improvement in extracting intermediates, and applying stop-grads to QK can increase the causal effect" (P#app-method-details). The J-lens beats the logit and tuned lens "with as few as 10 prompts" (P#app-method-details, Figs. 59-60). Restricting the corpus or masking positions: "None of these yielded a meaningful improvement over the default" (P#app-method-details).

Layers reported

"we report results on 25 evenly spaced layers of the model's residual stream reindexed to the range [0-100] so that layer numbers can be interpreted as percentages" (P#methods-technical-details). The figure data give n_layers: 25 and a workspace band of indices 9 to 22 (PD data/capacity-fve-occupancy/data.json, data/layer-diagram/cka.json). Index i maps to round(100 i / 24), which gives the layer labels used in the text: L38 (i = 9), L54, L58, L62, L67, L71, L75, L79, L83, L88, L92 (i = 22).

The J-space

Interventions

The five properties and the tests used

1. Verbal report (P#ws-report)

2. Directed modulation (P#ws-modulation, P#app-mod-sensitivity)

3. Internal reasoning (P#ws-reasoning)

4. Flexible generalization (P#ws-generalization, P#app-flex-gen)

5. Selectivity (P#ws-selectivity)

Structural signatures (P#structure)

Datasets and prompts

Controls and nulls the authors used

Absent: an untrained model, a model from another lab, shuffled token-to-vector labels, a lens fitted on a different corpus as a reported comparison, and any stated threshold for when a property "holds". The authors say "we do not know how much earlier in pretraining it emerges ... or how it scales with model size" (P#discuss-limitations).

How outsiders read it

E accepts the evidence for a "privileged set" of cognitively accessible representations and calls the results "the most significant evidence of consciousness in LLMs so far uncovered by mechanistic interpretability research" (E p. 1). It separates three claims, privileged set, privileged stream and GWT workspace, and holds the second and third open (E pp. 4-8). Points that bear on a replication:

Gaps where the text underdetermines the method

Each gap gives our default and the reason. Gaps marked "R settles" are answered by the reference code; we still ask whether the Claude pipeline matched it.

  1. Target layer. Main text says the final residual stream (P#methods-jlens); appendix says the Sonnet 4.5 default was the penultimate layer (P#app-method-details); R and N default to the final block output. Default: fit both, penultimate primary, final as sensitivity. Reason: follow the paper's stated default for its own results.
  2. Reduction over target positions. The formula is an expectation over t' >= t; the pseudocode and R sum over t' and average over t, which weights early source positions more. R settles: sum over t', mean over t. Ask whether Sonnet used the same.
  3. Position exclusions and outlier filters. The text lists options without saying which the default used (P#app-method-details). R settles part: skip the first 16 and the last position, no N-sigma filter, mean aggregation. Default: R.
  4. Corpus. "Pretraining-like", 1000 x 128 tokens, unreleased. Default: WikiText-103 via R's loader, plus a sensitivity fit on a sample of each model's own pretraining mix (Dolma for OLMo, the Pile for Pythia). Reason: comparability with N, and the untrained null needs a corpus independent of training.
  5. Frozen QK. Recipe 1 ("without any stop grads") is the default by the listing order, and stop-grads on QK "can increase the causal effect" (P#app-method-details). Default: no stop-grads; frozen-QK as sensitivity.
  6. The J-lens vector and the final norm. Readout applies norm(J h) before W_U, with RMSNorm or LayerNorm gain and a data-dependent scale; the J-lens vectors are defined as rows of W_U J_l with no gain folded in (P#methods-jlens). For steering, swaps and decomposition it is not stated whether the gain is folded in or whether vectors are unit-normalised. R normalises for injection only. Default: v_t = J_l^T w_t, unit-normalised for decomposition, ablation and swaps; gain-folded variant as sensitivity.
  7. Layer indexing. L0 and L100 on the 25-point grid are not defined in model terms (embedding output or first block, final block or post-norm). Default: L_p is block output round(p/100 x (n_layers - 1)); all layers fitted.
  8. Workspace band for a new model. Sonnet's L38-L92 comes from CKA plus four statistics, "somewhat post-hoc" at the late end (P#discuss-limitations). No rule is given. Default, pre-registered before any property test: onset is the first grid layer where median excess kurtosis exceeds half its maximum, end is the last layer before top-10 next-token accuracy exceeds half its final-layer value, checked against CKA blocks. Reason: every property test depends on the band, so it must be fixed blind.
  9. Kurtosis. Logits pre- or post-softmax, corpus size, aggregation over positions. Default: Fisher excess kurtosis of the pre-softmax logit vector per (position, layer), median over 50,000 held-out positions.
  10. Autocorrelation. The text describes both a "rate at which the same concept remains at the top" and a "delta log probability"; lags are unstated. Default: log-probability at t + Delta of the top-1 token at t, minus the same with positions shuffled within sequence, Delta in {1, 2, 4, 8}.
  11. Effective dimensionality. Share of variance unstated, centring and normalisation unstated. Default: PCA of unit-normalised, centred J-lens vectors, report 50%, 90% and 99%.
  12. Top-k next-token accuracy. k unstated in the text. Default: k in {1, 10, 25}.
  13. CKA. Linear or kernel, full vocabulary or subset. Default: linear CKA on a fixed random subset of 10,000 single-token words, vectors unit-normalised.
  14. Gradient pursuit. Variant, how nonnegativity is enforced, stopping rule, atom normalisation, whether the activation is centred. Default: nonnegative gradient pursuit (Blumensath and Davies) over unit atoms, uncentred activation, fixed k, final coefficients refit by nonnegative least squares on the support.
  15. Cone or span. Methods define the J-space component as a nonnegative combination; the formal appendix uses the orthogonal projection onto the span (P#methods-jspace against P#app-sparse-frame). Default: nonnegative least-squares reconstruction; report the span projection as sensitivity.
  16. Occupancy. Random control set: isotropic Gaussian or covariance-matched, size equal to n_vocab or to K; reconstruction metric. Default: n_vocab isotropic unit vectors, same pursuit, fraction of variance explained, K is the first value where the J marginal gain falls below the random marginal gain.
  17. Variance explained. Variance about zero or about the corpus mean. Default: 1 - ||x - x_hat||^2 / ||x - mu||^2 with mu the layer mean over the corpus.
  18. Swap formula. Two descriptions disagree for non-orthogonal vectors: the pseudoinverse coordinate swap (P#methods-technical-details) and "subtract the projection onto the Soccer lens vector and add an equal-magnitude projection onto the Rugby lens vector" (P#ws-report). Where alpha enters is unstated. Default: h + alpha V(sigma(c) - c), alpha = 1 unless stated, matching the "double strength" description in P#ws-generalization.
  19. Swap layers. "A band of intermediate layers", "every band layer" (R), "upper half of the network's layers" (P#app-interp-circuit). Default: the pre-registered band, every layer in it, sequentially in one forward pass, every prompt position except BOS.
  20. Verbal-report swap targets and success. Text: random same-category items outside the clean top-10, success "top-5" in Fig. 8. R: the first 10 listed candidates, success at rank 1. The figure data give 31% at rank 1 and 84% at top-5 over 67 pairs; the 88% in Fig. 8 comes from a trial set we could not identify. Default: all candidates outside the clean top-10, report both rank 1 and top-5.
  21. Prompt formatting. Human/Assistant format, system prompt and the position of "the colon" are Claude-specific. Default: each open chat model's own chat template, read at the last prompt token.
  22. Injection strength. The 0 to 0.025 axis has no units in the paper; R gives unit vector x layer mean residual norm x strength, all band layers, all user question tokens. Default: R's definition, sweep extended to 0.1 because smaller models may need more.
  23. Concept vectors. Concept list, layer and position for "Tell me about {concept}" not given. Default: the 100 concepts in R's verbal-introspection.json, last prompt token, each band layer separately.
  24. Matched magnitude. "Every perturbation rescaled to the same magnitude": the norm of the update vector per position and layer is the likely reading. Default: that.
  25. Directed modulation. Paper: five to eight phrasings per condition, lens read at the model's output; R: 24 templates in four groups, carrier sentence teacher-forced. Default: R's set and teacher forcing, hits over the band.
  26. Intermediate probes. The prompt sets that imply each intermediate "through different surface cues" are not described or counted. Default: generate ten per intermediate, list them in the pre-registration.
  27. Swap onset. How "takes effect ... 17 percent earlier" is computed (start layer of a sliding window, or a cumulative band) is not stated. Default: window of 5 grid layers swept over depth; onset is the first window with success at least half its maximum.
  28. Flexible generalization. Band, which "formatting tokens for capitalization" are ignored, and the positions for workspace loading. Default: pre-registered band; argument positions and final position.
  29. Selectivity scoring. How continuation language and the line-wrap column are scored, and the anomaly-detection prompt (absent from R). Default: language ID with a fixed classifier on greedy continuations; wrap column measured on the first generated line; anomaly prompt written by us and published.
  30. Ablation selection. "Most strongly activated" by lens logit, cosine or pursuit coefficient; projections removed one at a time or jointly onto the span of 10 non-orthogonal vectors; distribution of the random control directions. R settles nothing here; the band edges come from PD. Default: top 10 by pursuit coefficient, joint orthogonal projection, 10 isotropic random unit vectors per position as control, bands mapped by percentage.
  31. Task battery. Six tasks are unreleased and scoring is not given. Default: public substitutes for each (named in the pre-registration), scored as in their source papers.
  32. Ignition readout. Text: projection share along the pure-B to pure-A line. R: reciprocal-rank share 1/rank(A) / (1/rank(A) + 1/rank(B)), with all 66 pairs of 12 countries plus control pairs. Default: compute both, text's measure primary.
  33. MLP gain input. Whether v enters the MLP through its pre-norm, and at what scale. Default: MLP(norm(v)) for unit v, which makes the scale moot for RMSNorm.
  34. Attention metrics under grouped-query attention. W_OV per query head shares value weights in Llama, Qwen and OLMo 2-3. Default: per query head with its shared W_V.
  35. SAE analyses. Depend on SAEs trained by the authors. Default: run only where a public SAE suite exists for the chosen model, flagged exploratory.
  36. Decoding. Greedy or sampled, temperature, number of samples for the rollout experiments. Default: greedy for next-token scoring, temperature 1 with 30 samples for free generation.
  37. Token forms. Leading space, case and multilingual variants of a concept token. Default: single-token forms only; a concept matches if any listed surface form hits.
  38. Precision. Not stated for the paper; N fits in bfloat16. Default: bfloat16 forward, fp32 accumulation (as R), and one fp32 fit on the smallest model to measure the difference.
  39. What counts as "the property holds". The paper reports effect sizes with Wilson intervals and no pass thresholds. We will set thresholds ourselves; we ask the authors which numbers they regard as the claim.

What an open-weights version needs

Nulls we add

  1. Untrained model, same architecture, random init (direction-questions Q2: the library default plus one alternative scheme), lens fitted with the identical pipeline and corpus. It applies to the structural signatures (band statistics, CKA blocks, occupancy, excess variance, MLP gain, broadcast-head metrics, ignition sharpness) and to the J-against-remainder decomposition split. Behavioural tests (verbal report, modulation, reasoning swaps) cannot be scored on a model that does not answer, so for those the null is items 2 and 3 on the trained model. This directly tests E's selection-artefact reading of broadcast (E p. 7).
  2. Random directions, matched norm per position and layer, for every swap, injection and ablation; and J_rot as in the paper, extended from the broadcast analysis to the behavioural swaps.
  3. Shuffled labels: permute the token-to-vector assignment within the lens (vector of token a used for token b), keeping the set of vectors fixed. If a swap or readout works equally well with shuffled labels, the effect is the geometry of the vector set and not verbalisability.
  4. Lens fitted on a shuffled-token corpus (same unigram distribution) against WikiText, to separate what the averaging over contexts contributes.
  5. Logit lens (J_l = I) on every test, as the paper's own cheapest alternative.

Corrections to plan.md

  1. R1 step 1 says the J-space is the top singular directions of the Jacobian of the output logits. The paper defines one d_model x d_model matrix per layer, the mean Jacobian of the final (Sonnet default: penultimate) residual stream, averaged over 1000 prompts, source positions and all current and later target positions; J-lens vectors are the vocabulary rows of W_U J_l, and the J-space is the union of cones of sparse nonnegative k-combinations of them (P#methods-jlens, P#methods-jspace, P#app-sparse-frame). No SVD is involved. Projection onto the J-space is a sparse decomposition by gradient pursuit, not a linear projection.
  2. R1 step 2 cites "10 to 25 active concepts, a small fraction of variance". The paper's figures are occupancy plateauing around 25 at the median and excess variance explained never above 10% (3.2% to 8.6% at L58-L92) for Sonnet 4.5 (P#struct-bottleneck; PD data/capacity-fve-occupancy/data.json). The 10 is the ablation k, not a measurement. These are Claude-scale values and should not be the validation target at 8B.
  3. direction-questions.md Q1 calls the paper "a lab blog post with a method section and no code". Code (Apache-2.0), prompt data for 11 experiments and 6 lens evaluations, and pre-fitted lenses for 38 open models are public (R; N; P#app-exp-details). R covers fitting and readout only: gradient pursuit, swaps, ablation, occupancy and the broadcast metrics are not in it, so the reconstruction risk moves to those parts.
  4. summary.md says the method "is fully described". It is underdetermined in at least 39 places (gap list above), and several experiments rest on assets that are not released (corpus, task battery, SAEs, graders, model organisms).
  5. spine/01 plan M2 says the J-space holds "the representations that most affect next-token output under small perturbation". The lens is a first-order (Jacobian) map with no perturbation size, and it averages effects on the current and all future tokens, not the next token (P#methods-jlens). The self-only variant is a tested alternative, not the default (P#app-method-details).
  6. R1 in plan.md asks whether the five properties "hold at random init". Only the structural signatures can be measured at random init; the behavioural properties need a model that follows the task. See null 1.
  7. summary.md paraphrases Eleos as calling the paper "the most significant evidence so far". The sentence is limited to evidence "uncovered by mechanistic interpretability research" and is about consciousness (E p. 1). The programme's invariant forbids carrying that framing out of the repo.
  8. plan.md says the paper's five properties are scored "as the paper defines them". The paper defines experiments and reports effect sizes; it sets no pass criteria (gap 39).

Out of scope for R1

The experiential-report ablations use Claude graders and concern self-reports of experience (P#ws-experience). Self-report is never primary evidence here and no claim about consciousness leaves the repo (CLAUDE.md). Also out: alignment auditing, the post-training comparison beyond base against Instruct structure, counterfactual reflection training, and the template and oracle lenses.

Not fetched or not checked