From vision circuits to the global workspace — a hands-on, controls-first curriculum for reading the inside of neural networks, and getting to where the 2025–2026 papers begin.
In 2020, a group at OpenAI opened up an image classifier and found curve detectors — individual neurons that fire for curves, wired together into legible circuits. They argued that neural networks are not inscrutable: they are built from features connected by weights, and you can reverse-engineer them. In 2021 that program moved to transformers, and over the next five years produced a chain of ideas — the residual stream, superposition, induction heads, sparse autoencoders, attribution graphs — that leads, in 2025–2026, to claims that language models contain an introspectable subspace, a global workspace, and a society of thought.
Those recent papers are exciting and easy to misread. They are also mostly run on models no outsider can open. This curriculum walks the chain from the beginning, on open-weight models you can run yourself, and it teaches one discipline the source papers often skip: every technique is paired with the control that could kill it. By the last rung you can not only read the 2025–2026 papers — you can reproduce their methods on open weights and check whether the claims survive a null.
Modeled on OpenAI's Spinning Up in Deep RL and the
spinning-up-in-*family. Companion to the Consciousness-Indicator Scorecard — the last rung is the first cells of that benchmark.
There is good mech-interp material already. This one exists for three reasons none of the others combine.
| ARENA | Neel Nanda's TransformerLens tutorials | Distill Circuits + Transformer Circuits | This curriculum | |
|---|---|---|---|---|
| Format | engineering bootcamp (weeks) | explainer + notebooks | primary research articles | short curriculum, 8 project rungs |
| Vision-circuits origin | — | — | ✅ (the origin) | ✅ rung 1, taught where it's cleanest |
| Transformer foundations | ✅ deep | ✅ deep | ✅ (the papers) | ✅ rungs 2–5, on the shoulders of both |
| A control with every technique | named once, in a bonus¹ | — | rarely | ✅ the through-line — each rung ends by running its null |
| Open-weights-only, laptop-first | mostly | ✅ | mixed (recent work is closed) | ✅ hard requirement — no frontier access anywhere |
| On-ramp to the 2025–26 property papers | — | — | they are the papers | ✅ the destination (rung 8): J-space, introspection, societies-of-thought, metacognition |
| Adjudication mindset | — | — | — | ✅ reproduce-and-check; negatives are first-class |
¹ ARENA §1.3.3 identifies the problem precisely — that autointerp on randomized SAE latents scores better than expected, because top-k over a large dataset finds patterns in anything — but leaves it as an optional bonus bullet with no starter code or solution. It is the best statement of the issue in any existing course, and it is an aside. See rung 5.
The gap we fill: existing courses teach the techniques; the source threads are the recent papers but run them on closed models with few controls. Nobody teaches the chain as a controls-first, open-weights on-ramp whose explicit endpoint is the ability to adjudicate the 2025–2026 claims yourself. That endpoint is the Scorecard program; this repo is how you learn to read its cells.
Prerequisites: Python, PyTorch or JAX basics, and comfort with linear algebra and softmax. No prior interpretability experience. No GPU required — every runnable rung was verified end-to-end on a laptop CPU in under 25 seconds each.
| GETTING_STARTED.md | install, run, and the exact output each rung should produce |
| GLOSSARY.md | the vocabulary of the papers — residual stream, QK/OV, superposition, SAE, patching |
| READING_A_PAPER.md | six questions for reading an interpretability result critically |
| PITFALLS.md | every trap that cost us a wrong result while building this |
| ECOSYSTEM.md | what is live, what died (Microscope, Distill, ARENA's old URLs), the benchmarks you can enter, and the communities that will take a contribution |
| reading-group/ | the Cognitive Hexagon reading group — read the source construct before the AI paper that borrows it |
pip install -r requirements.txt && ./verify_all.sh
Eight rungs. Every rung has the same shape: read the paper → run the technique on an open
model → run the control that could falsify it. Each rungN_*/ directory is a
self-contained project with its own README (the reading, the build, the null).
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 0 | Build the model | construct a transformer (and an RL loop) by hand, so the rest is concrete | Karpathy nanoGPT; Raschka Build an LLM / a Reasoning Model from Scratch; Mike X Cohen |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 1 | Features & circuits | that a network is features wired by weights; find one circuit end-to-end | Olah et al., Zoom In (2020); Curve Circuits |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 2 | The residual stream | QK/OV, the residual stream as a channel | Elhage et al., A Mathematical Framework for Transformer Circuits (2021) |
| 3 | Superposition | why features hide; the toy autoencoder, on a laptop | Elhage et al., Toy Models of Superposition (2022) |
| 4 | Induction heads | the circuit behind in-context learning; ablate it | Olsson et al., In-Context Learning and Induction Heads (2022) |
| 5 | Sparse autoencoders | pulling monosemantic features out of superposition; steering one | Bricken et al., Towards Monosemanticity (2023); Scaling Monosemanticity |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 6 | Lenses | reading the residual stream into vocabulary: logit → tuned → Jacobian lens | Gurnee et al., Verbalizable Representations… (2026) + the lens lineage |
| 7 | Attribution graphs | following a computation across layers | Ameisen et al., Circuit Tracing; Lindsey et al., On the Biology of an LLM (2025) |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 8 | Property claims | reproduce a 2025–26 claim on open weights with its null: workspace, introspection, society-of-thought, metacognition | the four recent papers + our results |
Every rungN_*/README.md follows the same structure:
Rungs 1–5 and 7 ship a tested, self-contained starter.py you can run today — each
finds a real result on an open model and then runs its own null, using only
torch / transformers / torchvision (canonical tools like TransformerLens, SAELens,
lucent and circuit-tracer are named as scale-ups, not required). Rung 3 needs only a laptop
CPU; rungs 1, 2, 4, 5, 7 download a small open model (GPT-2 or InceptionV1) once. Rungs 6 and
8 draw directly on our working research code
(jacobian-lens,
jlens-lab,
lenses on the Hub).
What each runnable starter finds, and the null that guards it:
| rung | finds (on an open model) | the null it runs |
|---|---|---|
| 1 | an orientation/edge detector in InceptionV1 (channel #48, selectivity 1.000) | two nulls: random-init (Adebayo) and the stronger weight-shuffle |
| 2 | GPT-2's copying heads (OV z ≈ +5.8) and previous-token head L4H11 (1.00) | random matrix OV ≈ 0; uniform-attention QK baseline |
| 3 | superposition — >m features packed into m dims | random dictionary recovery floor |
| 4 | GPT-2's induction heads (L5H5 …) | ablate random heads → in-context loss barely moves |
| 5 | an SAE feature you can interpret and steer | random-direction steer nets ~0; negation reverses |
| 7 | the IOI computation moving subject-token → final-token across layers | median (layer,pos) patch restores ~0% |
nanoGPT +
Zero to Hero · Raschka,
Build an LLM from Scratch and
Build a Reasoning Model from Scratch ·
Mike X Cohen, 50 ML projects to understand LLMs (investigate transformer internals as data)Apache-2.0. Course text CC BY 4.0. An Orthogonal Research and Education Lab (OREL) project.
Part of one program — a controls-first, open-weights attempt to make the 2025–26 interpretability claims checkable:
| repo | what |
|---|---|
| spinning-up-in-mech-interp | the curriculum — 8 rungs, 6 runnable on a laptop, each ending in its own null |
| jacobian-lens | the research — OLMo post-training ladder, metacognition, the Consciousness-Indicator Scorecard |
| tri-lens | do three instruments agree about the same activation? |
| societies-of-thought | the adversarial replication — rebuild a no-code/no-data paper, then try to break it |
| controls-and-trajectories | the published datasets — nulls and developmental trajectories |
Datasets: induction-emergence-pythia · inceptionv1-tuning-atlas · trilens-instrument-agreement · olmo3-jacobian-lenses
52 commits
Python
97.6%
Shell
2.4%
From vision circuits to the global workspace — a hands-on, controls-first curriculum for reading the inside of neural networks, and getting to where the 2025–2026 papers begin.
In 2020, a group at OpenAI opened up an image classifier and found curve detectors — individual neurons that fire for curves, wired together into legible circuits. They argued that neural networks are not inscrutable: they are built from features connected by weights, and you can reverse-engineer them. In 2021 that program moved to transformers, and over the next five years produced a chain of ideas — the residual stream, superposition, induction heads, sparse autoencoders, attribution graphs — that leads, in 2025–2026, to claims that language models contain an introspectable subspace, a global workspace, and a society of thought.
Those recent papers are exciting and easy to misread. They are also mostly run on models no outsider can open. This curriculum walks the chain from the beginning, on open-weight models you can run yourself, and it teaches one discipline the source papers often skip: every technique is paired with the control that could kill it. By the last rung you can not only read the 2025–2026 papers — you can reproduce their methods on open weights and check whether the claims survive a null.
Modeled on OpenAI's Spinning Up in Deep RL and the
spinning-up-in-*family. Companion to the Consciousness-Indicator Scorecard — the last rung is the first cells of that benchmark.
There is good mech-interp material already. This one exists for three reasons none of the others combine.
| ARENA | Neel Nanda's TransformerLens tutorials | Distill Circuits + Transformer Circuits | This curriculum | |
|---|---|---|---|---|
| Format | engineering bootcamp (weeks) | explainer + notebooks | primary research articles | short curriculum, 8 project rungs |
| Vision-circuits origin | — | — | ✅ (the origin) | ✅ rung 1, taught where it's cleanest |
| Transformer foundations | ✅ deep | ✅ deep | ✅ (the papers) | ✅ rungs 2–5, on the shoulders of both |
| A control with every technique | named once, in a bonus¹ | — | rarely | ✅ the through-line — each rung ends by running its null |
| Open-weights-only, laptop-first | mostly | ✅ | mixed (recent work is closed) | ✅ hard requirement — no frontier access anywhere |
| On-ramp to the 2025–26 property papers | — | — | they are the papers | ✅ the destination (rung 8): J-space, introspection, societies-of-thought, metacognition |
| Adjudication mindset | — | — | — | ✅ reproduce-and-check; negatives are first-class |
¹ ARENA §1.3.3 identifies the problem precisely — that autointerp on randomized SAE latents scores better than expected, because top-k over a large dataset finds patterns in anything — but leaves it as an optional bonus bullet with no starter code or solution. It is the best statement of the issue in any existing course, and it is an aside. See rung 5.
The gap we fill: existing courses teach the techniques; the source threads are the recent papers but run them on closed models with few controls. Nobody teaches the chain as a controls-first, open-weights on-ramp whose explicit endpoint is the ability to adjudicate the 2025–2026 claims yourself. That endpoint is the Scorecard program; this repo is how you learn to read its cells.
Prerequisites: Python, PyTorch or JAX basics, and comfort with linear algebra and softmax. No prior interpretability experience. No GPU required — every runnable rung was verified end-to-end on a laptop CPU in under 25 seconds each.
| GETTING_STARTED.md | install, run, and the exact output each rung should produce |
| GLOSSARY.md | the vocabulary of the papers — residual stream, QK/OV, superposition, SAE, patching |
| READING_A_PAPER.md | six questions for reading an interpretability result critically |
| PITFALLS.md | every trap that cost us a wrong result while building this |
| ECOSYSTEM.md | what is live, what died (Microscope, Distill, ARENA's old URLs), the benchmarks you can enter, and the communities that will take a contribution |
| reading-group/ | the Cognitive Hexagon reading group — read the source construct before the AI paper that borrows it |
pip install -r requirements.txt && ./verify_all.sh
Eight rungs. Every rung has the same shape: read the paper → run the technique on an open
model → run the control that could falsify it. Each rungN_*/ directory is a
self-contained project with its own README (the reading, the build, the null).
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 0 | Build the model | construct a transformer (and an RL loop) by hand, so the rest is concrete | Karpathy nanoGPT; Raschka Build an LLM / a Reasoning Model from Scratch; Mike X Cohen |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 1 | Features & circuits | that a network is features wired by weights; find one circuit end-to-end | Olah et al., Zoom In (2020); Curve Circuits |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 2 | The residual stream | QK/OV, the residual stream as a channel | Elhage et al., A Mathematical Framework for Transformer Circuits (2021) |
| 3 | Superposition | why features hide; the toy autoencoder, on a laptop | Elhage et al., Toy Models of Superposition (2022) |
| 4 | Induction heads | the circuit behind in-context learning; ablate it | Olsson et al., In-Context Learning and Induction Heads (2022) |
| 5 | Sparse autoencoders | pulling monosemantic features out of superposition; steering one | Bricken et al., Towards Monosemanticity (2023); Scaling Monosemanticity |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 6 | Lenses | reading the residual stream into vocabulary: logit → tuned → Jacobian lens | Gurnee et al., Verbalizable Representations… (2026) + the lens lineage |
| 7 | Attribution graphs | following a computation across layers | Ameisen et al., Circuit Tracing; Lindsey et al., On the Biology of an LLM (2025) |
| rung | project | what you learn | primary reading |
|---|---|---|---|
| 8 | Property claims | reproduce a 2025–26 claim on open weights with its null: workspace, introspection, society-of-thought, metacognition | the four recent papers + our results |
Every rungN_*/README.md follows the same structure:
Rungs 1–5 and 7 ship a tested, self-contained starter.py you can run today — each
finds a real result on an open model and then runs its own null, using only
torch / transformers / torchvision (canonical tools like TransformerLens, SAELens,
lucent and circuit-tracer are named as scale-ups, not required). Rung 3 needs only a laptop
CPU; rungs 1, 2, 4, 5, 7 download a small open model (GPT-2 or InceptionV1) once. Rungs 6 and
8 draw directly on our working research code
(jacobian-lens,
jlens-lab,
lenses on the Hub).
What each runnable starter finds, and the null that guards it:
| rung | finds (on an open model) | the null it runs |
|---|---|---|
| 1 | an orientation/edge detector in InceptionV1 (channel #48, selectivity 1.000) | two nulls: random-init (Adebayo) and the stronger weight-shuffle |
| 2 | GPT-2's copying heads (OV z ≈ +5.8) and previous-token head L4H11 (1.00) | random matrix OV ≈ 0; uniform-attention QK baseline |
| 3 | superposition — >m features packed into m dims | random dictionary recovery floor |
| 4 | GPT-2's induction heads (L5H5 …) | ablate random heads → in-context loss barely moves |
| 5 | an SAE feature you can interpret and steer | random-direction steer nets ~0; negation reverses |
| 7 | the IOI computation moving subject-token → final-token across layers | median (layer,pos) patch restores ~0% |
nanoGPT +
Zero to Hero · Raschka,
Build an LLM from Scratch and
Build a Reasoning Model from Scratch ·
Mike X Cohen, 50 ML projects to understand LLMs (investigate transformer internals as data)Apache-2.0. Course text CC BY 4.0. An Orthogonal Research and Education Lab (OREL) project.
Part of one program — a controls-first, open-weights attempt to make the 2025–26 interpretability claims checkable:
| repo | what |
|---|---|
| spinning-up-in-mech-interp | the curriculum — 8 rungs, 6 runnable on a laptop, each ending in its own null |
| jacobian-lens | the research — OLMo post-training ladder, metacognition, the Consciousness-Indicator Scorecard |
| tri-lens | do three instruments agree about the same activation? |
| societies-of-thought | the adversarial replication — rebuild a no-code/no-data paper, then try to break it |
| controls-and-trajectories | the published datasets — nulls and developmental trajectories |
Datasets: induction-emergence-pythia · inceptionv1-tuning-atlas · trilens-instrument-agreement · olmo3-jacobian-lenses
52 commits
Python
97.6%
Shell
2.4%