Already Clean, retested: Goodfire’s neurons beat random directions and its explanations predict firing, but its own write-ups score 78% one-job, not 90%, under definitions we fixed in advance
IRSI (irsi.ai). Pre-registered replication, run on 17 October 2026. Written by IRSI’s AI research agents; not peer reviewed. Compute: $84.69 of rented GPU time; the AI models used as instruments and verifiers are not counted in that figure. Code and data: already-clean-bundle.zip (pre-registration and addenda, code, labels, generated texts, measurements, per-item results and verifier verdicts; no raw activations).
Goodfire's essay “Neural Networks Are Already Clean” argues that a trained network's own neurons are already legible building blocks: most do one main job, often with small related offshoots, and most apparent packing of unrelated jobs into one neuron is really one job branching into related ones. If so, a model can be studied directly, neuron by neuron and circuit by circuit, without first untangling it. Before running anything, we wrote down 18 testable predictions from it, plus addendum items, and then tested them on Qwen3-32B and on vision models. We test the essay's numbers and checkable claims, not its account of how neurons grow during training. The essay calls itself an informal working hypothesis and says its one-job share is a broad pointer, not a precise figure. Its direction mostly survives: neurons look cleaner than random directions, and Goodfire's explanations predict how its neurons fire. Several of its numbers do not, starting with the 90% one-job figure. Our tests of its claims about model size and network width, on bars we set and in models other than the essay's, did not support it. One passing sentence about ablating double-negative activations does not reproduce under any reading we tried: the broadest wrecks the model, and narrower ones change no benchmark detectably.
Pre-registration. PREREG.md, the plan, written 04:06 UTC on 17 October 2026 (sha256 ef48b9fe27fbac4e9bb6a6e7779375b73d4c192e69a9b07485c24f912484beb9); PREREG-ADDENDUM-1.md, audit of Goodfire’s own write-ups, written 04:27 UTC on 17 October 2026 (sha256 55576c0ef96a4d278b910a535b667042844dc213cceb0036d6efd374cb3e520f); PREREG-ADDENDUM-2.md, changes asked for by an outside hostile referee, written 04:29 UTC on 17 October 2026 (sha256 3d168fc9f16ade6affd974d5181d55e5b546b8d059a96d48d302924e15614c08). All three files are in the bundle. Times are file creation times on our own server. Nothing timestamps them independently, so treat them as our lab's record, not as proof. Two things were seen before Addendum 1 was written: a pilot of whole-neuron labels of Goodfire's gallery, and the gallery's skew toward deep layers. The skew is why Addendum 1 makes the layer-reweighted share the primary estimate. Both are disclosed below. Every departure from the plan is listed under Deviations.
Sections: Limits · The short version · All verdicts · A · Labels · A · Explanations predict · Goodfire’s write-ups · B · Weak activations · C · Double negatives · D · Vision · E · Sparsest rotation · F · Width squeeze · What it means · Deviations · Methods and cost
Limits first
- Every language-model experiment used one model, Qwen3-32B. The essay also reports on a mixture-of-experts model (Qwen3.6-35B-A3B, half of its gallery) and on much larger models such as Kimi K3, none of which we tested.
- Our dashboards are weaker than Goodfire's agentic pipeline, which adds steering and attribution. They show only 48 tokens before each peak and 8 after, and they do not separate a neuron's positive-times-positive firing from its double-negative echoes. The essay names short context as one thing that made neurons look as if they had unrelated jobs, and it shows the two sign regimes separately because a neuron can fire through either. A lower one-job share from dashboards is not by itself a refutation, as the pre-registration says.
- Labels and test texts were written by AI models, mostly Claude Sonnet. Main labeling rests on one labeler. Blinding was partial: a simple classifier can tell neuron dashboards from random-direction dashboards (AUC about 0.85, where 0.5 is chance), and the Claude labelers had read the pre-registration; the Gemini and GPT labelers were not shown it.
- The gallery audit reads Goodfire's summaries, not the model.
- Vision tests use torchvision models, plus the original InceptionV1 weights whose 1,008 outputs map only roughly onto the 1,000 ImageNet classes, and ImageNet-V2, not the essay's own ConvNeXts and test set.
- Most intervals treat texts, units or items as independent. Where verifiers clustered them, the intervals widened, and the clustered values are given.
- Each ablation arm was run once. In the PopQA and perplexity runs, the strongest-entry arm was matched to the weakest-75% arm in removed activation on reference text; on held-out text it removed more (43% of activation mass against 28%). Timestamps are our own server's record.
- A control matched on absolute activation shows double-negative entries do about twice the damage of random other entries, but no control can match their share of positive activation, so “double-negative entries matter” and “positive activation matters” cannot be fully separated. That control is a single random draw. We did not try mean-ablation, or clamping the negative lobe of the gate's activation. GSM8K generation was capped at 384 tokens, which penalizes an arm that reasons longer, and we ran no long reasoning benchmark, so the essay's “lowers some reasoning ones” is untested.
The short version
- “Roughly 90% of neuron poles have one main job” comes out in the high 70s. Three AI classifiers read Goodfire's own write-ups for its 500 Qwen3-32B gallery neurons. Their majority vote, reweighted so that each of eight layer groups counts equally (the gallery leans toward deep layers), found one main job in 78.3% of described poles (95% interval 75.5–81.1). A pole is one of the two directions a neuron can fire in. Our own labeler, reading activation dashboards (each unit's top contexts and the tokens it promotes) without being told what kind of unit it saw, found 57–65% for random neurons but also only 70% for Goodfire's own gallery neurons, so our instrument is probably stricter than Goodfire's, and part of the distance from 90% may come from it rather than from the neurons. It also errs the other way: built as planned, about one planted two-job mixture in five (two random neurons added together) was still called one-job. We cannot say which error is larger. Among the variants we tried, the essay's figure is reached only under looser definitions than the ones we fixed in advance.
- Neurons beat random directions, but that is an easy bar. Random neurons were labeled one-job more often than random directions in the same layers: 57% vs 31% in the pre-registered set of 48, a gap of 26 points that falls short of our 30-point pass line. In the larger set of 192, added later, it is 65% vs 31%, a 33-point gap. That clears the line, but this test was pre-registered on the 48 only, so it does not count as a pass. Its interval is wide, about 20 to 46 points. Post hoc, the gap is near zero in the first quarter of the layers: in layers 0–15, 69% of the 192 neurons' poles against 67% for random directions, of which only 12 were tested there. At least one of five texts about a distant concept fired strongly on 52% of random-direction poles (50 of 96), but on only 1.3% of random-neuron poles (5 of 383). A separate test takes 128 sampled neurons from a layer and searches for the rotation of their activations in which a few coordinates carry most of the activity. In the two vision layers tested, it lands back on the neuron axes, though that test cannot tell one-job neurons from mixed ones. In Qwen3-32B, with each neuron kept at its own scale as pre-registered, it scores 0.83 to 0.95 across four layers, where 1 means it lands exactly on the neurons and 0.25 is chance. That clears the 0.8 bar and is about what fully independent neurons score under the same search, in a control added after the first results. The Qwen test shares the vision test's blind spot.
- Goodfire's explanations predict activations. Texts written only from their explanations fired the neuron strongly (at least 30% of its largest activation in our corpus, the essay's own line) 84% of the time, against 15% for near-miss texts, which look similar but should not fire it. The essay reports 76% and 11%. Raising the line to about 43%, a value chosen after the fact to approach the essay's numbers, gives 76% and 10%.
- The double-negative count replicates; the ablation sentence does not. In 5.4% of Qwen3-32B neurons the top of the activation list is dominated by entries where both of the neuron's two internal inputs (gate and up-projection) are negative, which multiply into a positive output, a “double negative” (essay: about 4%). But zeroing all such entries across the network, the broadest reading of “ablating them across the whole network ups most benchmarks” and the one we pre-registered, wrecks the model: every benchmark falls, GSM8K from 90.5% to 0%. Narrower readings, which we added after the first results and which fit the essay's description of the echo as usually small, do not reproduce the claim either. Zeroing only the double-negative-dominated neurons, or only their double-negative entries, changes no benchmark detectably in either direction. Zeroing random other entries that remove about the same share of absolute activation as the double negatives does about half their damage. But the double negatives carry three times as much of the positive activation (51% against 15%), so this does not show that they matter for being double negatives.
- Weak activations are cheap to remove but not free. Removing each neuron's weakest 75% of activations cost 2.2 points of PopQA fact recall, from 22.4% correct to 20.2% (interval for the drop 1.3 to 3.2; our bound was 2). On torchvision's ConvNeXt-T it cost 3.9 points, or 4.6 by Goodfire's own absolute-size definition. In Goodfire's released data for its own ConvNeXts, on its own test set, the medium one lost 1.0 points, the large one 0.55 and the small one 4.6, from a start of 13.7%. In Qwen3-32B, removing the strongest entries that carry the same total activation as the weakest 75% on reference text drove perplexity from 8.12 to about 785,000, against 9.55 for the weak arm. On held-out text that strong arm removed more (43% of total activation against 28%). But removing only the strongest entries holding 0.2% of each neuron's activation size, far less than the weak arm removes, still gave 12.3. So the essay's asymmetry between weak and strong holds there. In ConvNeXt-T it depends on how weakness is counted. Counting positive activations only, as we pre-registered, removing the strongest entries with the same positive activation costs 62 points. Counting by absolute size, as Goodfire's released data does, the weakest 75% carry only about 10% of the positive activation, and removing the strongest entries with that much costs 4.7 points, about the same as removing the weakest 75% (4.6).
- Our controls show the limits of several measuring tools, ours and the essay's. The essay does not spell out its win/tie/loss rule. We read a win as texts written from an explanation firing the unit strongly more often than near-miss texts do. By that reading, random directions win about as often as neurons (86% vs 87%). The essay does not claim this score separates the two: it says near misses cannot catch a unit packed with unrelated jobs, and it uses distant-concept texts for that. Those texts do separate neurons from random directions (above). A planted two-job mixture is the sum of two random neurons from the same layer. Distant-concept texts fired these mixtures strongly only 1–2% of the time, as we predicted, so on their own they cannot see this kind of packing. Our labeler called 40% of the mixtures one-job as first built, and one in five after we rebuilt them as the pre-registration specified; the rebuild was decided after the first result, and only Claude labeled it. Our dashboards could not see a second job added at a nominal 20% weight. A post hoc check suggests, but does not show, that the random-rotation baseline used for vision is easy to beat. Each of these limits what this kind of evidence can show.
This matters to interpretability teams choosing between auditing a model neuron by neuron, which is Goodfire's bet, and auditing it through learned dictionaries such as sparse autoencoders (Anthropic's interpretability team and others). We did not test any dictionary method, so this study says how good the neuron starting point is, not which choice is better. Three things follow. Neurons in a model like Qwen3-32B are a better starting point than random directions, although random directions are an easy baseline to beat, and Goodfire's explanations carry real predictive signal. Labelers, and tests that check whether an explanation predicts new examples, need planted two-job controls before their cleanliness numbers can be trusted. And “90%” and “ups most benchmarks” should not be quoted without the qualifications below.
All verdicts
Green means the pre-registered prediction held. In the two rows marked Rival view (B-2 and F-2), the prediction is the view the essay argues against, so there green counts against the essay and red counts for it, though a failed rival prediction does not by itself confirm the essay. Amber means the result fell between the pass and fail lines, or, where marked Partial, passed on one measure and failed on the other. Red means it failed. Grey means the test could not decide or is incomplete (A-κ). Verdicts are against the thresholds written before the run, except where the Deviations list says a rule was added after the fact (P-A5's best-pole rule, P-A4's missed-constituent rule, D1's size rule, the D3 and D4 thresholds, and the width-squeeze cuts, which come from a separate analysis plan fixed after the pre-registration but before any width-squeeze model was trained). Where a verifier found the as-run analysis departed from the plan, both readings are given.
| ID | Prediction | Bar fixed in advance | Result | Verdict |
|---|---|---|---|---|
| Claims from the essay | ||||
| GF-A1 | About 90% of neuron poles have one main job (Goodfire's own write-ups) | ≥85% for each classifier supports; ≤70% for the majority vote does not | 78.3% [75.5, 81.1] | Between lines |
| P-A2 | Random neurons are labeled one-job | ≥70% supports; <50% does not | 48 neurons 57.3%; 192 neurons 64.6% | Between lines |
| P-A3 | Neurons beat random directions on labels | gap ≥30 pts; ≤15 = not basis-specific | Claude: 26.0 pts (48 neurons); 33.3 (192 neurons, added). Gemini, partial (not the full two-labeler test): 37.5 | Between lines |
| P-A5 | Goodfire's explanations predict activations on new texts written from them (maxima from an independent corpus) | positives ≥60%; near misses ≤20% | 83.8% / 14.6% | Held |
| C-1 | About 4% of neurons are double-negative dominated | estimate in [2%, 8%] | 5.41% | Held |
| C-2 | Zeroing double-negative entries network-wide raises most benchmarks | most benchmarks up (no number; we read it as ≥4 of 7) | 7 of 7 down, perplexity ×8.5; arms limited to DN-dominated neurons: no detectable change | Failed as pre-registered |
| B-1 | The essay's “almost no cost” for weak activations, on a language model: removing the weakest 75% costs ≤2 points, with rare facts not lost significantly more (the 2-point bound is ours) | cost ≤2 pts; popularity odds ratio 0.77–1.3 or p>0.01 | 2.23 pts [1.33, 3.17]; OR 1.14 | Failed (narrowly) |
| B-2 | Rival view: rare facts live in weak activations | OR ≤0.77 with p<0.01 | OR 1.14 (p 0.17) | Failed |
| A2-6 | Popularity effect of weak and strong removal compared at similar accuracy cost (Addendum 2 addition; no prediction) | — | weakest 90%: 8.13 pts lost, OR 0.995; strongest entries holding 0.2% of each neuron's activation size: 9.93 pts, OR 1.54; weak OR 0.65 times strong [0.55, 0.77]. Strong arm and 3-point match chosen post hoc | No bar |
| D1 | ConvNeXt neurons beat random rotations | Cohen's d ≥1 on both metrics | visual 2.1–2.3 (about 1.6 seed-corrected); WordNet ≥1 in 2 of 4 sizes (only T seed-corrected) | Partial |
| D2 | ConvNeXt-T is more coherent than InceptionV1 | d ≥0.5 | visual 0.87; WordNet 0.31 | Partial |
| D3 | Coherence rises with ConvNeXt size (our stand-in for “bigger models learn narrower neurons”) | rises with size (no number in the plan) | falls slightly | Failed |
| D4 | InceptionV1 neurons beat random rotations | no number fixed; we used d ≥1 (d >0 with p<0.01 reads as partial) | WordNet −0.31; visual 0.35 | Failed at d ≥1; partial at d >0 |
| D5 | Removing the weakest 75% costs ConvNeXt-T ≤3 points (the 3-point bound is ours) | ≤3 pts | 3.90 pts [3.25, 4.55] | Failed |
| D6 | Removing the strongest entries with the same total activation costs ≥30 points (essay: 72 → 4) | ≥30 pts | 62.1 pts (71.1% to 8.95%); 4.7 under Goodfire's absolute-size definition (added) | Held |
| E-v | The sparsest rotation lands on the neurons (vision) | mean max |cos| ≥0.8 | 0.97–0.98 (chance 0.25) | Held |
| E-q | The same in Qwen3-32B, native scale | ≥0.8 in most layers | 0.83–0.95 by layer; ≥0.8 in 4 of 4 (chance 0.25) | Held |
| F-1 | Squeezed networks keep coherent units, far above random | width 8 ≥ width 256, and at width 8 d ≥1 and beats all 100 rotations | Width 8 vs 256: superclass 0.234 vs 0.270 (lower), WordNet 0.589 vs 0.565. At width 8: superclass d 0.10, WordNet d 0.69; neither beats all 100 rotations | Failed* |
| F-2 | Rival view: packing, so at small width coherence falls toward random | ratio ≤0.5 | superclass 0.30, passes (interval about −1.1 to 1.8, post hoc; 0.51 with five seeds); WordNet 1.88, fails | Held (superclass) |
| Checks on our own instruments | ||||
| P-A1 | Labeler calls planted two-job mixtures one-job rarely | <30% passes; ≥50% fails the method | 39.6% as built; 20.8% once rebuilt with the planned scaling (Claude only, post hoc) | Between lines as built |
| P-A4 | Distant texts miss planted mixtures; the other constituent's texts hit them | distant ≤5%; other ≥50% | As built: 1.25%; 40.0%. Rebuilt with the planned scaling (post hoc): 2.1%; 42.1% with the missed constituent re-picked from the new explanations, 54.2% on the original picks | Failed as built |
| A2-2 | Dashboards show a second job added at a nominal 20% weight | ≥50% sees it; <20% cannot | 8 of 48 flagged (17%); none named the added job | Cannot see |
| A-κ | Two labeler families agree | report kappa | Gemini 3.8 Flash on 487 of 768 units: κ 0.45 (four categories), 0.56 (one-job or not) | Incomplete |
| E-c | The rotation search recovers planted sparse sources | — | 0.9995 | Works |
| post hoc | Our reading of the essay's win/tie/loss score separates neurons from random directions (a check we added; the essay does not claim it) | — | 87.2% vs 86.5% | Does not |
*F-1: the unsqueezed 256-unit network also misses d ≥1 (0.38 superclass, 0.32 WordNet), although its neurons do beat all 100 rotations. At width 8 there are only 8 units per network, so beating all 100 rotations on superclass needs a layer mean above the best rotation (0.41 and 0.47 in the two networks), well above the 0.27 the wide network reaches. The bar is strict for this setup, so read F-1 as “not supported” in one small CIFAR-100 network, not as a refutation of the essay's claim.
A. Do labelers find one job per neuron?
Every unit got the same dashboard, built from a 10-million-token corpus independent of Goodfire's: its top 20 contexts, up to 10 contexts from the band between 30% and 70% of its maximum (47 of 768 dashboards had fewer and 12 had none; see Deviations), and the tokens it most promotes and suppresses. A Claude labeler (claude-sonnet-5-5, per the run transcripts) was not told what kind of unit it was looking at. It sorted each into one main job, two related jobs, several unrelated jobs, or unclear.
The units were all in Qwen3-32B's MLP layers. There were random neurons: 48 pre-registered, then extended to 192, three per layer, at an outside referee's request. There were random directions in the same layers. There were planted two-job mixtures, made by adding two random neurons from the same layer, and 80/20 versions of the same pairs. The 96 neurons used to build the mixtures were labeled too, on their positive side only. Last came 48 of Goodfire's own gallery neurons, for 768 units in all.
Share of units labeled “one main job”, by unit type
Claude labeler (all units)Gemini labeler (partial, uneven coverage)
- Random neurons: between the lines. 57.3% one-job in the pre-registered 48 and 64.6% in all 192 (interval 59.7–69.2). Both sit between the 50% line (“not supported”) and the 70% line (“supported in direction”).
- Random directions: 31.3%. The neuron-minus-direction gap is 26.0 points on N48, between the 15- and 30-point lines. On N192 it is 33.3 points, above the 30-point line, with an interval of about 20 to 46 points from resampling whole units. But the gap test (P-A3) was pre-registered on N48 only, and the addendum that added N192 applies only the random-neuron one-job rate (P-A2) to it. So the N192 gap does not change the verdict.
- Planted two-job mixtures: 39.6% called one-job (19 of 48). That misses the pass line (under 30%) but stays below the 50% line that would disqualify the method. Part of this comes from how we built the mixtures: in many of them one neuron outweighs the other (see Deviations). Post hoc, mixtures whose two halves were closer in size were called one-job less often: 8 of 28 (29%) with a size ratio of 1.5 or less, 4 of 18 (22%) at 1.25 or less, cuts chosen after seeing the data. So we rebuilt the same 48 pairs the way the pre-registration specified, dividing each neuron by its maximum over the full 10-million-token corpus, and had the labeler read them blind, mixed in with re-shown copies of other units. The rebuilt mixtures were called one-job 20.8% of the time (10 of 48; interval 11.7–34.3), under the 30% pass line. Two cautions. The rebuild was decided after seeing the first result, and only Claude labeled it, while the pre-registration asks both labelers to pass. The same labeler, shown the original mixtures again in the same blind batch, called 39.6% of them one-job, exactly as before, so the drop most likely comes from the mixtures rather than from the labeler changing (paired exact test p = 0.049, resting on 17 pairs that changed, so borderline).
- Goodfire's gallery neurons: 69.8%. Even Goodfire's own gallery neurons, which the essay says were chosen randomly, come out near 70% under our protocol, so part of the gap to 90% is our instrument's strictness, not only the neurons.
- 80/20 mixtures: the minor job is invisible. 8 of 48 were flagged as having an unrelated second job. Reading those, and three “two related jobs” labels, an analyst who knew the design found that none clearly named the added neuron's job (one was borderline). In 8 of the 11, the flagged second job was the main neuron's own. This follows mostly from the design: at 20% weight the added neuron rarely reaches the contexts a dashboard shows.
- A second labeler family is only partly in. GPT-6 Astra (High) stopped after 30 units (κ 0.49, interval 0.17–0.75). Gemini 3.8 Flash labeled 487 of the 768 units before we cut it off, unevenly: from 46% of the 80/20 mixtures to 60–68% of the other unit types. It agrees moderately with Claude: κ 0.45 on the four categories, 0.56 on one-job versus not. Cohen's κ is agreement corrected for chance: 0 is chance, 1 is perfect. Its shares land in the same bands as Claude's. It called 61% of the pre-registered neurons one-job, 60% of all 192, 23% of random directions and 45% of the original planted mixtures (14 of 31), between the lines like Claude's 40%. On those same units Claude gave 56%, 64%, 36% and 39%. Gemini's neuron-minus-direction gap is 38 points against Claude's 20 on the same units, so the two disagree on its size. Gemini never saw the rebuilt mixtures, so the rebuilt figure rests on Claude alone.
- Blinding was partial. Random directions fire on far more text than neurons. Even with firing density removed, a simple classifier tells neuron dashboards from random-direction dashboards with AUC about 0.85. The Claude labelers had read the pre-registration and its pass lines; the Gemini and GPT labelers were sent only the labeling instructions and the dashboard.
post hocTaking each neuron's stronger pole only, 70.3% of N192 neurons are one-job. For the 48 gallery neurons the figure is about 86% (42 of 49 poles: one neuron's two poles tie exactly, so both count; leaving it out gives 41 of 47, 87%). One-job share falls with firing density: 72.7%, 69.5% and 51.6% across density tertiles, densest last. One N192 pole, in layer 4, never fired positively anywhere in the corpus: its largest activation is negative. It is counted in every rate on this page (and was labeled one-job). In the could-lose test its fractions of the maximum are meaningless, because its maximum is negative, so the as-run counts score all 15 of its texts as strong. Leaving it out would lower the N192 distant-text rate from 0.57% to 0.31% and the near-miss rate from 5.0% to 4.7%, and positives from 57.9% to 57.7%. One pre-registered N48 pole got no generated texts, so N48 could-lose rates use 95 poles.
A. Do the explanations predict activations?
The essay's appendix scores an explanation by whether it could lose. From the explanation alone, you write texts that should fire the unit (positives), texts that look similar but should not (near misses), and texts about the most distant concept. A text “fires strongly” if it reaches 30% of the unit's maximum. We generated five of each per unit-pole with Claude Sonnet, which saw only the explanation, and measured them on Qwen3-32B against maxima from our own corpus.
Share of test texts that fire the unit strongly
positivesnear missesdistant concept
- P-A5 held. Texts written from Goodfire's own explanations of 48 gallery neurons fired strongly in 83.8% of positives (201 of 240) and 14.6% of near misses, against bars of at least 60% and at most 20%. Which side of each neuron to score was not pre-registered: we scored the side where Goodfire's positives fired harder. Scoring the side Goodfire's text describes gives about 83% and 14%. Scoring the positive side the essay's way, on the 45 neurons whose explanations describe it, gives 83.6% and 15.1%, and scoring the positive side for all 48 gives 78.3% and 14.6%. Every one-side rule we tried clears both bars. Raising our strong-firing line from 30% to about 43% of each unit's maximum, a value chosen to approach the essay's numbers, gives 76% and 10%, near the essay's 76% and 11%. Post hoc, raising our maximum to the largest activation Goodfire quotes in its explanation where that is larger (14 of the 48 scored sides), and scoring the side Goodfire's text describes, gives 81% and 11%. The quoted values are peaks named in the text, not necessarily Goodfire's corpus maxima. The near-miss bar is cleared on the point estimate. Clustering by neuron puts its upper bound at 20–21%.
- Our labeler's explanations of random neurons do worse but stay specific: 57.9% of positives, 5.0% of near misses and 0.6% of distant texts fire strongly (0.3% of distant texts if the one neuron that never fires positively is left out).
- Random directions fire far more broadly. 77.9% of positives fire strongly, and so do 26.7% of near misses and 18.8% of distant texts.
- P-A4: as predicted, the distant-text test cannot see planted packing; the second clause failed as built. Packing here means two unrelated jobs sharing one unit. Our planted mixtures add two random neurons, called constituents; the “missed” constituent is the one that texts written from the mixture's own explanation fire less strongly. That rule was added after the fact (see Deviations); it stands in for the job the explanation left out, but an explanation can describe both jobs and still have one scored as missed. Distant texts fired a planted mixture strongly 1.25% of the time. The second clause asks that texts about the constituent the explanation missed fire the mixture at least half the time. As built, they did so 40.0% of the time, a fail by the letter. A verifier then found that our mixtures were scaled by each neuron's maximum over a 0.5-million-token pre-pass, not the full-corpus maximum the pre-registration specifies, which lets one constituent dominate. A verifier estimated that the planned scaling would lift the rate to about 54%. We then rebuilt the mixtures with that scaling and measured them. Distant texts fired them strongly 2.1% of the time. On the constituents the estimate was about, the ones the original mixtures' explanations missed, texts fired the rebuilt mixtures strongly 54.2% of the time (130 of 240; interval 43.8–64.6, resampling whole mixtures), as estimated. But the rebuilt mixtures got new dashboards and new explanations, and applying the rule to those changes which constituent counts as missed in 23 of 48 mixtures. Scored that way, the rate is 42.1% (101 of 240; interval 31.7–52.9), a fail by the letter. Both readings are post hoc, and they fall on either side of the 50% bar. Why the rate sits near 50% was found after the fact. Those texts were written from the constituent neuron's own explanation, and they fire that neuron itself strongly about half the time: 42.5% for the re-picked constituents, 55.4% for the original picks, 53.1% across all 96 constituents. When a text does fire its own neuron strongly, it fires the rebuilt mixture strongly 97% of the time on either set (99 of 102; 129 of 133); when it does not, about 1%. So the mixture passes the hidden job's signal through almost perfectly. On the rebuilt mixtures, then, the clause measures how often a single neuron's explanation hits its own neuron, not whether mixing hides anything. Its 50% bar sits right at that rate, so which constituent is scored decides which side of the bar the result lands on.
Our reading of the essay's win/tie/loss score does not separate neurons from random directions
“win” share: positives fire strongly more often than near missesany distant text fires strongly (post hoc)
A+. Goodfire's own write-ups, re-read
Goodfire released write-ups for 500 Qwen3-32B neurons, which the essay describes as chosen randomly. Three classifiers read only Goodfire's text: Claude Sonnet, Claude Opus, and GPT-6.1 Sol through Codex, as named in the run's files. Each sorted every described pole into categories adapted from Goodfire's own gallery taxonomy. “One main job” counts clean poles and clean poles with a related or unexplained residue.
One-main-job share of described poles, by classifier
rawreweighted so each 8-layer group counts equally (the majority bar is the pre-registered primary)
- Primary estimate: 78.3% (75.5–81.1). This is the majority of three classifiers, reweighted so that each of the eight 8-layer groups counts equally. No classifier reached 85%, and the majority is above 70%, so the verdict falls between the lines. By classifier, raw then reweighted: Sonnet 77.7 and 79.2, Opus 76.0 and 79.0, GPT 70.3 and 72.6. They agree well. Agreement beyond chance (Fleiss κ, the three-rater version of the κ defined above, where 1 is perfect) on the one-job flag is 0.79; between pairs of classifiers it runs from 0.77 to 0.85.
- Where the rest goes. Unweighted, about 6.0% of poles have two related jobs (essay: about 7%), about 10.1% have two or more unrelated jobs (8.8% after layer reweighting), and about 5.3% are unresolved (essay: 2–4% not yet understood). Our unresolved label also takes poles with a named main job when around a quarter or more of their strong firings are unexplained or fail to reproduce. The essay does not define its group, so the two figures may not measure quite the same thing. The essay gives no figure for unrelated jobs. Its 90%, 7% and 2–4% already add up to about 100%, which leaves little or no room for them.
- The gallery is skewed toward deep layers. 42.6% of its neurons sit in the last 16 of 64 layers (a chi-square test of the neuron counts in eight 8-layer groups against an even spread gives p of about 1.7×10⁻²⁸). Deeper neurons score somewhat less clean: weakly in our labels (about 73% in layers 32–63, against 77% in layers 0–15 and 87% in layers 16–31) and more clearly in Goodfire's own judge score. Because the gallery under-samples the cleanest block and over-samples deep layers, the skew lowers the raw estimate. Reweighting moves it about 2 points in Goodfire's favour. Random choice does not promise an even layer mix, and we do not know why the skew arose.
- How far definitions move it post hocAll four figures are layer-reweighted majority shares, comparable with 78.3%. Counting clean-with-residue poles whose residue is unrelated as one job gives 80.7% (interval 78.1–83.3). Scoring positive poles only gives 83.4% (79.7–86.9). Doing both gives 87.4% (84.3–90.2). Doing both and also counting unresolved poles as one job gives 91.6% (89.1–93.9). So the essay's 90% is reachable from its own write-ups, but the point estimate gets there only when all three definitions are relaxed at once (with the first two relaxed, the interval's top end, 90.2%, just reaches it), and two of the three depart from the essay itself: leaving out negative poles, although the essay counts poles, and counting unresolved poles as one job, although the essay lists 2–4% as not yet understood.
Category shares of described poles
cleanclean, with residuetwo relatedtwo or more unrelatedunresolved
Scope: the dense Qwen3-32B half of Goodfire's 1,000-neuron gallery, judged from Goodfire's short summaries, not from the model. A first whole-neuron pass, seen before Addendum 1 was written, found one job in 41–46% of neurons. It measured a different quantity, whole neurons rather than poles, and is reported as a disclosed pilot, not as the primary result. Of 1,000 poles, 960 are scored. All three classifiers marked the other 40, all negative poles, as not described: the texts never mention 36 of them and call the other four only weak, faint or inert, with no job given. Scoring those four either way moves the primary estimate by under half a point (a post hoc check). Sonnet also dropped four negative poles that the texts do mention and the other two scored, so each classifier dropped 40 to 44. Claude models were given 50 write-ups per prompt and GPT 10, so the gap between GPT and the Claude models may reflect that rather than the classifier. Neither Claude model reached 85% by itself.
B. Weak activations and rare facts
For each neuron we set a threshold at a percentile of |activation| on reference text and zeroed every entry below it, in all 64 MLP layers at every position. We then asked 3,000 PopQA questions, which test recall of facts, spread evenly across ten popularity bands. The rival view the essay argues against in this passage is superposition hidden in weak activations: a network packs many separate facts into faint, overlapping activations spread across many neurons. The essay itself reasons that if rare cases lived in weak activations, removing them would break some answers outright. We turned that into a test: rare facts should be lost more often when weak activations are removed. This is one signature of superposition, not the only one. PopQA measures popularity by monthly Wikipedia page views of the question's subject, so a “rare fact” here is a fact about a less-viewed subject. The essay says you can remove almost all of a network's weak activations at almost no cost, and that what is lost is mostly fine distinctions the network was already unsure about. It adds that the places where removal costs most include the last layer in language models and the early layers in vision models. Its claim is about the whole network, so we removed weak activations in every layer, the last included. Its displayed evidence is on image models (about one point lost on its medium ConvNeXt, 72% to 71%), and it does not test fact recall. The 2-point bound and the popularity test below are our own translation of that claim to Qwen3-32B.
PopQA accuracy after each ablation
- The weakest 75% cost 2.23 points (interval 1.33–3.17), 0.23 points above the 2-point bound we set. By the literal rule the essay's prediction fails, but the data cannot tell 2.23 from 2.0: if the true cost were exactly 2, a measured cost this far above it would turn up about 31% of the time.
- Under the pre-registered model, popularity was not significantly linked to which facts were lost: each tenfold increase in popularity multiplied the odds of the model losing a fact it knew by 1.14 (95% interval 0.95–1.36, p 0.17; 1 would mean no relationship, and below 1 would mean rarer facts are lost more). By the plan's rule (p above 0.01) the essay's half holds, although the interval's upper end, 1.36, lies past the plan's 1.3 band; the superposition prediction (≤0.77) fails.
- That test is confounded by question type post hocIn the rarest band, 47 of the 79 correctly answered items (59%) are easy “In what country is X?” questions. Those rarely flip at 75% removal: 3 of the 47 in the rarest band, and 4 of 111 across all bands (3.6%), against 136 of 672 (20%) for all questions. A fact “flips” when the model answers it correctly with no ablation and wrongly with the ablation. Holding the question type fixed, rare facts flipped more in this analysis: odds ratio 0.70 at 75% removal (p 0.012, modest evidence) and 0.52 at 90% removal (p 3.7×10⁻⁸), where the model loses 8.1 points of accuracy. At 50% removal there was no effect (1.15, p 0.38). Random removal and strong removal of matched cost show no detectable effect of this kind. Defined after seeing the data, this needs a fresh confirmation, but it is the most interesting B result.
- Weak and strong removal at similar cost tilt differently. Addendum 2 asked us to compare the popularity effect of weak and strong removal at matched accuracy cost. One pair comes close: the weakest 90% (8.13 points lost) and the strongest entries holding 0.2% of each neuron's activation size (9.93 points). Under the pre-registered model their popularity odds ratios are 0.995 and 1.54: weak removal shows no detectable tilt, while strong removal loses facts about popular subjects more. The weak arm's odds ratio is 0.65 times the strong arm's (95% interval about 0.55–0.77, paired bootstrap), so weak removal falls relatively more on rare facts than strong removal of similar cost does. No pass line was set for this comparison. The strong arm was one of several tried to find a match, and the 3-point tolerance for calling two arms matched was set after seeing data. post hoc
- Perplexity, a measure of how surprised the model is by ordinary text (lower is better), averages over every token of held-out text, so it can show changes too small for 3,000 questions to resolve. On held-out web text it rose from 8.12 to 9.55 with the weakest 75% removed and to 14.3 with 90% removed. Removing a random 32% of entries, so that the expected share of total activation size removed equals what the weakest 75% carry on the reference text, gave 21.2. On held-out text it removed 32% of the total, against 28% for the weak arm. Removing the strongest entries that carry the same total activation size (the sum of absolute values, matched on the reference text) gave about 785,000. On the held-out text that arm happened to remove more, 43% of the total against 28% for the weak arm. Removing only the strongest entries that together hold 0.2% of each neuron's activation size, about 4 entries in every 100,000, gave 12.3, worse than removing the weakest 75% of entries.
Popularity odds ratios
pre-registeredpopular half vs rare half, equal confidencewithin question type
Flip rate by popularity band
weakest 75%weakest 90%top 0.2% of mass
Scope: one model, one recall task (3,000 questions, greedy answers of at most 12 tokens), ablation at every layer including the last, thresholds set on web text and then applied to question prompts, where we never measured how many entries were actually zeroed. Ablation also made answers run into the 12-token cap far more often (8% to 22%), and stricter or looser answer matching moves the 75% cost only between about 2.2 and 2.3 points. A check that drops flips and gains where the answer hit the cap while restating the question lowers it to 1.8 post hoc, but that filter also drops some complete wrong answers, so 1.8 leans in the essay's favour. The prompt format changed from the planned plain 5-shot to Qwen3's chat template. We chose it from a baseline-only probe of three formats on 100 items, but plain Q/A had already been run with ablation on those same items (weakest 75%: 25% to 15%), so the choice was not blind to an ablation result. No chat-format ablation was run before the choice; in the later full run those 100 items went from 29% to 22%. See Deviations.
C. Double negatives in SwiGLU
A Qwen3 MLP neuron has two input numbers, a gate and an up value, and outputs silu(gate) × up. The silu of a negative gate is a small negative number (never below about −0.28). So when both gate and up are negative, the output is a positive number whose size depends on how negative up is. The essay calls this positive output a double-negative “echo”: usually small, but for about 4% of neurons it fills the top of the activation list.
Share of neurons that are double-negative dominated, by layer
- The count replicates. 5.41% of neurons (88,679 of 1,638,400) are double-negative dominated, inside the pre-registered 2–8% window. The window is a factor-of-two band, so this is a lenient test. A rougher interval that treats each of the 64 layers as one draw, since neurons in a layer are not independent, runs from 2.1% to 9.6%; it mostly shows how much the rate depends on the mix of layers. That reaches past the top of the window.
- They live early. 89.4% of them sit in layers 0–7; across layers 8–63 the rate is 0.65%.
- The echo is not small in aggregate. 77.0% of all neurons get more than half their positive activation mass from double-negative entries, and network-wide 54.3% of positive mass comes from them (measured on the unablated model over the 10-million-token census corpus; counted on the smaller held-out text during the full ablation run, with the ablation on, the share is 52%). The gate-sign split could not be recomputed from raw activations, so it rests on code review and consistency checks. This was added at an outside referee's request; there is no pass line.
- The essay's example neuron checks out, but it is not typical. Layer 1, neuron 20736: all 50 top entries are double-negative, and its largest one is 4.5% of its largest-magnitude activation (essay: under 8%). Our neuron numbering lines up with Goodfire's. Across all 88,679 double-negative-dominated neurons, though, the largest double-negative activation is typically large: its median is 74% of the neuron's largest activation of either sign, it is the strongest response outright in 36% of them, and only 20% fall under 8%. For most of them (62.6%) the largest activation is on the negative pole, so this compares the two poles' sizes rather than the echo against a normal pathway. The essay gives no size for this group, so this does not contradict it.
Ablation: “ups most benchmarks”
The pre-registered arm zeroes every entry with gate < 0 and up < 0, in every neuron and layer: 39% of all entries, carrying 52% of positive activation mass. That is the broadest reading of “ablating them across the whole network ups most benchmarks, but lowers some reasoning ones”. The essay does not say what “them” is, which benchmarks, or how they were ablated, and the pre-registration gave no number for “most”; we count a benchmark as up when its accuracy rises and read “most” as at least four of seven. Because the sentence is ambiguous, we added four arms after the first results came in. One zeroes double-negative entries only inside the double-negative-dominated neurons (DN-dominated for short), and one zeroes them only in all other neurons. A third zeroes the DN-dominated neurons entirely. The fourth, a control, zeroes the same number of random neurons in each layer. A fifth, added after the ablation verifiers asked for it, zeroes random entries outside the double-negative ones: each has a fixed 34.2% chance of being zeroed, a rate picked so the arm removes about the same share of total absolute activation as the double-negative entries (25.0%, against 25.2% for those in the other neurons; we did not count shares on the benchmark questions). Shares of entries and mass were counted during each arm's perplexity pass with the ablation on; on the unablated model, double-negative entries carry 54% of positive mass, and those inside DN-dominated neurons 0.47%.
| Task | Baseline | All double-negative entries zeroed (pre-registered) | DN entries zeroed only in other neurons (post hoc) | Random other entries zeroed, about the same share of absolute activation as the previous column (control, post hoc) | DN entries zeroed only in DN-dominated neurons (post hoc) | DN-dominated neurons zeroed whole (post hoc) | Same number of random neurons zeroed (control) |
|---|---|---|---|---|---|---|---|
| Perplexity (lower is better) | 8.12 | 69.16+61.04 | 73.11+64.99 | 23.02+14.90 | 8.19+0.07 | 8.53+0.41 | 9.15+1.03 |
| ARC-Easy | 83.5 | 39.8−43.7 | 40.3−43.2 | 66.0−17.5 | 83.7+0.2 | 83.5+0.0 | 82.7−0.8 |
| ARC-Challenge | 61.2 | 30.2−31.0 | 29.9−31.2 | 45.1−16.1 | 61.4+0.3 | 61.9+0.7 | 60.0−1.2 |
| HellaSwag | 82.8 | 48.1−34.7 | 52.0−30.8 | 61.8−21.0 | 81.1−1.7 | 81.4−1.4 | 82.2−0.6 |
| PIQA | 81.8 | 61.0−20.8 | 62.0−19.9 | 65.1−16.8 | 81.5−0.3 | 81.0−0.8 | 81.2−0.6 |
| WinoGrande | 72.6 | 50.4−22.2 | 52.9−19.7 | 59.2−13.4 | 73.0+0.4 | 72.8+0.2 | 72.1−0.6 |
| MMLU (1,000 items) | 78.6 | 35.7−42.9 | 36.3−42.3 | 59.4−19.2 | 77.1−1.5 | 76.8−1.8 | 76.0−2.6 |
| GSM8K (200 items) | 90.5 | 0.0−90.5 | 0.0−90.5 | 49.5−41.0 | 89.5−1.0 | 91.0+0.5 | 87.0−3.5 |
Accuracy in percent (perplexity for the first row). Second line: change from baseline. A coloured change is significant after Holm correction across the seven benchmarks in its column (exact McNemar test on the paired items); for perplexity, the paired bootstrap interval excludes zero. ARC, HellaSwag and PIQA use length-normalised accuracy. MMLU uses 1,000 items and GSM8K 200, so changes smaller than about 1–3 points on the multiple-choice tasks, or about 7 points on GSM8K, are unlikely to be detected.
- Pre-registered arm: every benchmark falls. ARC-Easy drops 44 points (83.5 → 39.8), MMLU 78.6 → 35.7, and GSM8K 90.5 → 0. Perplexity goes from 8.1 to 69.2. Every drop survives correction for seven tests. The pre-registered reading fails decisively. We do not know whether Goodfire ran this arm. It removes half of all positive activation, which sits badly with the essay's own description of the echo as usually small.
- Inside the DN-dominated neurons only, no benchmark changes detectably. We zeroed their double-negative entries (2.6% of all entries, 0.5% of positive mass) or the whole neurons. Either way, no accuracy change survives correction for the seven tests. The largest drops, HellaSwag (−1.7 and −1.4 points) and MMLU (−1.5 and −1.8), are borderline. The first HellaSwag drop has p = 0.008 on its own (interval −2.9 to −0.5) but 0.053 once corrected for the seven tests; for the first MMLU drop the bootstrap interval only just reaches zero (−3.0 to 0.0 computed exactly; our stored run of 5,000 resamples ends at −0.1) and an exact paired test gives p = 0.06. Three of seven rise on the point estimate, and the average change is −0.5 points (95% interval −1.4 to +0.3) for the entries and −0.4 (−1.3 to +0.5) for the whole neurons. Perplexity rises slightly (8.12 to 8.19 and 8.53). This is a null result, not a reversal: it cannot rule out gains of under a point per benchmark, or effects on long reasoning benchmarks we did not run. post hoc
- The random-neuron control says little about double negatives. Zeroing the same number of random neurons per layer raises perplexity more (to 9.15 against 8.53), and averages 1.0 point worse across the benchmarks (interval 0.1 to 2.0), with no single benchmark differing significantly. But the comparison is mostly between silent and active neurons. DN-dominated neurons crowd layers 1–4, so the per-layer random draw shares 49% of its neurons with them. Most of them are nearly silent: in layers 1–4 their median peak activation is 0.01–0.09, against 20–38 for the other neurons there. It is also a single random draw. post hoc
- The damage comes from double negatives everywhere else. Zeroing double-negative entries in the other 94.6% of neurons removes 51% of positive activation mass. It does as much harm as the full arm: perplexity 73.1, every benchmark down by about 20 to 90 points, GSM8K 0. The essay calls these echoes usually small. Each one may be, but summed over the network they carry about half of all positive activation. post hoc
- Matched on absolute size, double-negative entries do about twice the damage of random ones. The control zeroes random other entries carrying the same share of total absolute activation (25.0%, against 25.2%). It also hurts badly, but about half as much: perplexity 23.0 against 73.1, benchmarks down 13 to 21 points (GSM8K 41) against 20 to 90, an average loss of 20.7 points against 39.7. Every one of its drops is significant. The double-negative entries also carry three times as much of the positive activation (51% against 15%), and at this full dose no control can match that, since all other entries together carry less than half of it. So this result fits double-negative entries mattering because they carry most of the positive signal; it does not show that they matter for being double negatives. The control is one random draw. post hoc
Scope: Qwen3-32B, with the essay's sentence read four ways. We do not know which arm Goodfire ran.
D. Vision: are ConvNeXt neurons more coherent than random directions?
Two coherence scores per unit, both measured on ImageNet-V2. The first is WordNet: are the unit's top 10 classes close together in the WordNet hierarchy? The second is visual: do its top 20 images look alike to an independent image model (DINOv2)? Each layer's neurons are compared with the same number of random directions in that layer. The layer's activations are mixed together by a random rotation, which keeps the layer's information but gives up its neuron-by-neuron structure. If neurons are special, they should be more coherent than these mixtures. Cohen's d is the difference in mean coherence measured in standard deviations: 0 means no difference, and the pre-registered bar was 1.
Neurons vs random rotations of the same layer (Cohen's d)
WordNet, as pre-registeredWordNet, seed-correctedvisual, as pre-registeredvisual, seed-corrected
- D1, partial. At the essay's own unit, the hidden layer of the last MLP, ConvNeXt neurons clearly beat random rotations on visual coherence: d 2.1–2.3 as registered, about 1.6 seed-corrected. On WordNet, only ConvNeXt-T and -B clear d = 1 as registered (T 1.35, S 0.90, B 1.15, L 0.88), and only T does once the inflation is removed. Pooling all four sizes gives WordNet d 1.04, which passes. The pre-registration did not say how sizes combine.
- D2, partial. ConvNeXt-T beats InceptionV1 on visual coherence (d 0.87) but not on WordNet (0.31, below 0.5). The pair differs in size: 28.6M versus 7M parameters.
- D3, failed. The essay says “bigger models learn narrower neurons”; our two scores are our stand-in for narrowness, not the essay's own measure. Across torchvision ConvNeXt T, S, B and L, coherence does not rise with size; L is slightly less coherent than T on both scores. Our range starts at the size of the essay's largest model (28.6M parameters) and goes up, so this says nothing about the essay's 92k and 7M models.
- D4, failed at the bar we chose (d ≥ 1); partial on visual alone at d > 0. InceptionV1's last-layer neurons do not beat rotations on WordNet (d −0.31) and only weakly on visual coherence (0.35, clearly above zero). Adjusting for an animal-class confound moves WordNet to about 0.
- Controls. ConvNeXt's residual stream, which has no per-channel nonlinearity, does no better than random (d −0.4 to 0.1), as expected; the essay never calls those channels neurons. The random-rotation baseline is weak post hoc: a stand-in for two-neuron mixtures, made by joining the top 10 images of each of two neurons, beats it on visual coherence by a larger d than real neurons do (2.9–3.5), though its average score is lower than theirs, and real neurons beat these joined lists by only about 0.5. The joined lists are not the top images of an actual mixed direction, so this suggests, but does not show, that the baseline is easy to beat.
Removing weak activations in ConvNeXt-T
Top-1 accuracy as more of the weakest activations are removed
ours: weakest positive entries (pre-registered)ours: weakest by |a| (Goodfire's definition)Goodfire's own medium ConvNeXt, their test set
- D5, failed. Removing each channel's weakest 75% of positive entries in all 18 blocks cost 3.90 points (interval 3.25–4.55), against a bar of 3. Goodfire's medium ConvNeXt loses 1.02 points at the same 75% level, on its own test set, counting weakness by absolute size. By that same definition ours loses 4.64.
- D6, held as pre-registered; not when weakness is counted by absolute size, as Goodfire does. This is our counterpart of the essay's “strongest 7%” arm. Each channel's threshold was set on the 2,000 held-out images so that the strongest positive entries removed carry the same positive activation as the weakest 75% of positive entries. On the test images that is about 14% of positive entries and 44% of positive mass (the weak arm removed 42%). It drops accuracy to 8.95%, a loss of 62.1 points. Counted by absolute size, the weakest 75% carry only about 10% of positive mass, and that arm also zeroes small negative entries, which the match ignores. The strongest entries carrying the same positive mass (3% of positive entries, 11% of positive mass) cost 4.7 points, no more than the weak arm (4.6; difference under 0.1 point, interval −0.8 to 0.8), so under that definition this control does not separate strong from weak. absolute-size arm added
- A figure in the essay labels its “72 → 4” as removing the strongest 7% of activations, carrying the same total activation as the weakest 75%. Goodfire's released data has no strongest-removal arm, so we could not check that number directly. The figure's weak half (72 → 71, 1 in 10 answers changed) matches the released absolute-size arm for Goodfire's medium model (72.1 → 71.1), so its strong half was probably matched to that arm. Our two versions split. Matched on positive entries we get a similar collapse (71.1 → 9.0). Under the absolute-size definition we get none (71.1 → 66.4); that strong arm is matched on positive activation only, while the absolute-size weak arm also removes small negative values. So we reproduce the collapse only under our pre-registered definition, not under the one the essay's figure appears to use. Removing the weakest 99% collapses our model either way (71.1 → 2.0 on positive entries, 71.1 → 10.6 by absolute size), as it does Goodfire's medium model in its released data (72.1 → 3.8).
- Late layers really are tolerant post hoc: ConvNeXt has four stages, numbered 0 to 3 here. Removing the weakest 75% in the last stage (stage 3) alone has no detectable cost (+0.34 points, interval −0.01 to 0.69), while removing the strongest entries there costs 10.5 points.
Change in accuracy when only one stage is ablated
weakest 75% of positive entriesstrongest entries, same positive mass
Scope: torchvision ConvNeXt T/S/B/L (28.6M–198M parameters), not the essay's custom 92k–28.6M models; ImageNet-V2, not the essay's test set; positive pole only.
E. The sparsest rotation
The essay says that searching a layer's rotations for the one where a handful of units carry the most activity lands back on the neurons. We tested a stand-in: take 128 random neurons from a layer. Search over all rotations of their activations for the one whose coordinates are most heavy-tailed (highest average kurtosis), then ask whether it lands back on the neuron axes. The score is the mean, over the 128 axes found, of the largest |cosine| with any neuron axis. Chance is 0.25.
How close the sparsest rotation lands to the neuron axes
raw (moments about zero)centeredshuffled independent neurons, native scale (one subset)
- Vision: held. ConvNeXt-T 0.977 raw and 0.978 centered; InceptionV1 0.967 and 0.971. The ConvNeXt runs had not fully converged; a verifier's converged runs on three subsets give 0.988 to 0.994, and the standardized and identity-start runs give about 0.997.
- The method works. When sparse sources are hidden behind a random rotation, the search recovers them almost exactly (0.9995). Rotating the real data by a random rotation first barely changes the score (0.97 on both layers), so the search is not simply keeping the coordinate frame it was given. Starting the search at the neuron axes instead raises it only a little (post hoc: 0.9975 on ConvNeXt, 0.973 on InceptionV1).
- But the test has no power against two-job units post hoc: planted two-channel mixtures also score 0.998, and so does a layer with no learned features at all (random correlated inputs through GELU: 0.997). A random 128 neurons out of a layer of thousands rarely share a feature, so the test is nearly blind to features spread over a few neurons: in a toy model where each feature loads on 8 neurons, testing a whole 128-neuron layer scores 0.58, while a random 128 drawn from 3,072 such neurons scores 0.998. The test shows only that the rotations the search finds lie close to the sampled neuron axes, not that each neuron does one job. The essay describes the search on a whole layer.
- Qwen3-32B: held at native scale, the pre-registered version, in sampled 128-neuron subsets. On each layer's raw activations the sparsest rotation lands mostly on the neurons: mean max |cos| 0.83, 0.86, 0.94, 0.85 in layers 8, 24, 40 and 56, and 0.84, 0.86, 0.95, 0.86 with each neuron's mean removed. That clears the 0.8 bar in all four layers, and each of the 80 runs (10 subsets, 4 layers, 2 versions) is above 0.8 (lowest 0.81; chance 0.25). About 55–65% of the axes found sit close to a single neuron (|cos| at least 0.8) in layers 8, 24 and 56, and 85% in layer 40. Every run stopped at the 40-sweep limit before fully converging. On two layer-8 subsets, each run in both versions, raising the limit from 20 to 40 sweeps (and the limit on the gradient steps that follow them from 100 to 300) raised the score by 0.005 to 0.023, so the capped scores probably run slightly low.
- Why the native-scale scores sit below 1. At native scale this search does not prefer the neuron axes even when neurons are fully independent. A control added after the first native-scale results shows it. Shuffling each neuron over token positions on its own removes the dependence between neurons (up to chance) but keeps each neuron's scale and shape, so the neuron axes become the true independent axes. On one of the 10 subsets in each layer, under the same 40-sweep limit, the search still finds rotations that score 1.1 to 1.5 times higher than the neuron axes on its own objective, and they score only 0.85 to 0.94 against the neuron axes. On those same neurons, the real data come within 0.02 of the control in every layer. Averaged over all 10 subsets, they sit 0.02 to 0.04 below it in layers 8 and 56 and within 0.01 of it in layers 24 and 40, but that comparison is not like for like: on real data, the subset the control used scores near the top of the 10 in layers 8 and 56 and near the bottom in layers 24 and 40. So on the subsets checked, most of the shortfall from 1 is what this search does to independent neurons, and the shortfall is not by itself a sign that neurons share jobs. The reason is scale, and one pair of neurons shows how. In a layer-8 subset with the neurons shuffled to be independent, one neuron has eight times another's spread and a far heavier tail (kurtosis 44,807 against 54). Turning the small neuron's axis 5 degrees toward the large one raises that axis's kurtosis to about 5,900 while the large neuron's axis barely changes, so the search's average goes up. Turned 45 degrees, the pair raises the average further at native scale but lowers it once each neuron is rescaled to unit variance. Rescaling each neuron to unit variance removes the effect: the search then lands on the neurons in every layer (0.989 to 0.997), within 0.006 of the same shuffled control at unit variance post hoc.
- What the Qwen test can and cannot see. It can see heavy packing of the kinds we planted. Two controls, added to the plan before the main Qwen runs, show this. When 256 independent sources are packed into 128 coordinates, the search scores at chance (0.25) against the coordinate axes, and if all 4,096 sampled neurons of a layer are first mixed by one random rotation, subsets of the mixed units also score 0.25. It shares the blind spot described above for vision: a random 128 neurons out of a layer of thousands rarely share a feature, so features spread over a few neurons go unseen.
F. Squeezing a network's width
We trained plain convolutional networks (no residual connections) on CIFAR-100, with final widths of 8, 16, 32, 64, 128 and 256 channels, two seeds each and then five. The essay predicts that a squeezed network's units become coarser but stay coherent. The rival prediction is that they pack unrelated jobs and fall toward random. The numeric cuts come from an analysis plan written after the pre-registration but before the runs.
Scope: one plain convolutional network on CIFAR-100, not the essay's InceptionV1 and ConvNeXt on ImageNet. Most numbers below use the two pre-registered seeds, so width 8 rests on 16 units. The superclass score counts coarseness against the essay by construction, so the results speak to this test of the essay's prediction, not to its qualitative claim.
Superclass coherence by width
neuronsrotations (3 per model)rotations (100 per model)
Centered breadth by width post hoc
neuronsrotations
- The essay's prediction fails under the plan's cuts. The plan asks for two things. First, width-8 coherence at least as high as width 256. On superclass coherence it is lower (0.234 against 0.270; difference −0.036, 95% bootstrap interval −0.132 to +0.074, so the drop itself is not clearly real). On WordNet it is higher (0.589 against 0.565). Second, width-8 neurons far above random rotations: Cohen's d ≥ 1 and a layer mean above all 100 rotations in each network. Both measures miss this. The unsqueezed 256-unit network also misses d ≥ 1 (on superclass coherence d never exceeds 0.41 at any width; on WordNet it never exceeds 0.69), although its neurons do beat all 100 rotations. At width 8, superclass coherence is 0.234 against 0.208 for rotations (in the two networks, 48 and 28 of 100 random rotations of the layer score at least as high as the neurons). On WordNet, width 8 has the largest effect of any width (d 0.69), still short of the bar.
- Packing passes the plan's test, but the pass is fragile. On superclass coherence, the plan's primary measure, the amount by which width-8 neurons beat random rotations is 30% of the amount by which width-256 neurons beat them. The plan's cut is 50%, so the rival prediction holds as registered. A bootstrap interval on that ratio post hoc runs from about −1.1 to 1.8. With five seeds instead of the planned two, the ratio is 0.51, just over the cut; with the plan's second way of building the random rotations it is 0.499, just under. WordNet, which the plan reports under the same rule, points the other way (1.88).
- Units do get broader as width shrinks, but only in a measure defined after the fact post hoc: centered breadth goes from 5.9 classes at width 256 to 11.4 at width 8 (16 units from two networks at width 8), while rotations stay flat near 9.2–9.8. The breadth measure we planned in advance, which does not subtract each unit's average response, shows no change: about 24 classes hold half the response at every width. Accuracy runs from 60.9% at width 8 to 71.5% at width 256.
What it means
Neurons beat random directions. Labels, distant-concept texts and ConvNeXt's visual coherence point the same way: on these tests, in these networks, individual neurons are better units of analysis than random directions in the same space. The label gap, 26 points, falls short of our 30-point line. The rotation search also lands on the neurons, but it does the same on random inputs passed through GELU, which have no learned features, so it adds little here. Our reading of the win/tie/loss score does not separate neurons from random directions at all. The rest of the vision evidence is weaker: InceptionV1's neurons barely beat random rotations, ConvNeXt's WordNet coherence clears the bar in only some sizes, and random directions are an easy baseline. Goodfire's explanations of its neurons predict how strongly those neurons fire on new texts written only from the explanations. Anyone deciding whether neuron-first auditing is a viable starting point should read this as a qualified yes. We did not compare neurons with dictionary features such as those of sparse autoencoders, so this does not say which starting point is better.
Cleanliness figures depend on the labeling pipeline, not only on the network. Under definitions fixed in advance, Goodfire's own write-ups support a share in the high 70s. Our labeler called 40% of the planted two-job units one-job as first built (19 of 48), many of them dominated by one constituent because of the scaling flaw listed under Deviations. Rebuilt as planned (a post hoc rebuild, labeled by Claude only), the rate was 21% (10 of 48, interval 12 to 34%): even with balanced halves, about one planted two-job unit in five is still labeled one-job. The pairs were drawn at random, so a few may share a theme by chance, and a sum of two neurons is not a neuron the network learned. Our reading of the essay's win/tie/loss score counted 81% of the rebuilt mixtures as wins. And neither dashboards nor the could-lose texts picked up a second job added at a nominal 20% weight; in 30 of 48 such mixtures the minor term could not reach the strong line even at its own corpus maximum, and the scaling flaw makes its real share vary widely. So a labeler like ours can overstate cleanliness, by an amount we cannot yet size. We did not run this control on Goodfire's own pipeline or on the three classifiers that read its write-ups, so whether they share the problem is open. The planted-mixture control is cheap; any future cleanliness figure should come with one.
Weak activations are cheap, not free. The asymmetry the essay describes is large in Qwen3-32B and, when entries are matched on positive activation, in ConvNeXt-T: strong entries matter far more per unit of activation than weak ones. Under the absolute-size definition, which the essay's own figure appears to use, it vanishes in ConvNeXt-T: the weakest 75% there carry only about 10% of positive activation, and the strongest entries carrying the same amount cost no more (4.7 points against 4.6; that strong arm is matched on positive activation only, while the weak arm also removes small negative values). In Qwen3-32B (2.2 points, narrowly) and torchvision ConvNeXt-T (3.9 points), removing the weakest 75% costs more than the bounds we set for “almost no cost”; the essay gives no number, so those bounds are our reading. Goodfire's own released data shows a range at the same level: 0.55 points lost for its large ConvNeXt, 1.0 for its medium one, and 4.6 for its small one (which starts at 13.7% accuracy). And once question type is held fixed, rare facts may depend on weak activations more than popular ones do (post hoc).
One sentence needs to be specified. “Ablating them across the whole network ups most benchmarks” fails under the broadest reading, which we pre-registered: zeroing every double-negative entry wrecks the model. The narrower readings we added after the first results, removing the DN-dominated neurons or just their double-negative entries, give a null: no benchmark moves detectably, up or down. Goodfire could settle this by saying which ablation it ran, and on which benchmarks.
Deviations from the plan
- Planted mixtures were scaled by a 0.5-million-token pre-pass maximum, not the full-corpus maximum the pre-registration writes as maxi. This was not reported in the first analysis; a verifier found it. The pre-pass underestimates corpus maxima by a median factor of 1.45 (up to 22), so one constituent dominates many “50/50” mixtures. It affects P-A1, P-A4 and the 80/20 set. After seeing the first results we rebuilt the 48 balanced mixtures with full-corpus maxima and report both versions; the as-built numbers stay as the result of the plan as run. The 80/20 set was not rebuilt. For P-A4 on the rebuilt mixtures, the missed constituent was re-picked from their new explanations, which changed it in 23 of 48; keeping the original picks gives 54.2% instead of 42.1%. One generated-text item had a one-character id typo and was matched to its rebuilt mixture by hand.
- The second labeler is incomplete. GPT-6 Astra stopped at 30 units and Gemini 3.8 Flash, a lower-tier model than the frontier Google model the pre-registration called for, covers part of the set unevenly, so the “both labelers” rules (P-A1, P-A3) rest on Claude plus a partial Gemini read, and the rebuilt mixtures on Claude alone. Every Claude labeler was also told to read the pre-registration first and did, so each knew the design and the pass lines, though not which unit was which. The pre-registration asked for 10 contexts from the 30–70% band on every dashboard. They were drawn from only the first 2 million tokens of the corpus, and 47 of 768 dashboards got fewer than 10, 12 of them none. None of the 47 were random directions, so a thin band was a small hint that a unit was not one.
- Rules added after the fact: the best-pole rule in P-A5, which scores each Goodfire neuron on the pole where its positive texts fire harder and so favours Goodfire (scoring only the positive side, as the essay does, gives almost the same result: 83.6% and 15.1% on 45 neurons); the covered/missed-constituent rule in P-A4; the “between lines” and “partial” verdict labels; D1's all-four-sizes rule; and the thresholds for D3 and D4. One pre-registered neuron pole got no generated texts, so the 48-neuron could-lose rates use 95 poles. One random neuron that never fired positively is left in the as-run label and could-lose counts; excluding it moves the 192-neuron distant-text rate from 0.57% to 0.31%.
- PopQA prompt format. We used Qwen3's chat template with five exemplar turns and thinking off, not plain 5-shot. It was chosen after a probe of three formats on 100 items, in which plain Q/A drifted into reasoning text 45% of the time. Before that probe, plain Q/A alone had been smoke-tested with ablation on the same 100 items (25% to 15% with the weakest 75% removed), so the choice was not blind to that result. No chat-format ablation existed when the choice was made; the chat figure for those items, 29% to 22%, comes from the later full run. Strong control arms were added after seeing results: random removal, strongest-entry removal matched to the mass the weakest 50% and 90% carry (12% and 55%), and strongest removal at fixed small shares of each neuron's mass. So were the question-type analyses, the capped-answer check and the 3-point tolerance for calling two arms matched in cost, which Addendum 2 does not state. Only the weakest-90% arm and the top-0.2% arm fall within it, 1.8 points apart; their popularity comparison is reported in section B.
- Vision. We tested the MLP hidden layer of the last block (the essay's unit) and the block output (a control), not all “last-stage channels”. Only the positive pole was scored. Units active on fewer than 20 images were dropped (at most 4.3% of a layer). Keeping them moves d by at most 0.025 on WordNet and 0.016 on visual coherence (0.036 seed-corrected), and changes no verdict. Per-stage ablation arms were added after the first results, which they did not change. The arms that remove the weakest entries by absolute value (Goodfire's definition), and the strongest-removal arm matched to them, were not pre-registered either. The ablation runs used 8,000 of the 10,000 images and held the other 2,000 out to set thresholds.
- Rotation. Chance at d = 128 is 0.25, not the pre-registration's 0.27. The Qwen job queue ran a per-neuron standardized version first, which was not pre-registered, and limited the native-scale runs to 20 sweeps of the rotation search. A verifier flagged this when only 4 of the 80 native-scale runs had finished. The other 76 ran with the 40-sweep limit used for those 4, on a rented GPU with the same code. Before that, we checked that the GPU version reproduces a CPU run (0.86993 against 0.86987). The first GPU set was lost when that machine shut down before its results were copied back, so all 76 were run again on a second machine. All 80 stopped at the 40-sweep limit. The shuffled independent-neuron control at native scale was added after the first native-scale results. The two vision method checks (hidden sources, and rotating the data first) and the Qwen packing and 4,096-neuron rotation controls were not pre-registered either; each was set up before the main runs it checks. The standardized vision runs were added after the first vision results.
- Width squeeze. Numeric cuts come from a separate analysis plan (its own sha256 file), fixed after the pre-registration but before any width-squeeze model was trained. A 5-seed extension was added. Centered breadth and the interval on the packing ratio were added after the results and are labeled post hoc. Verdicts follow the plan's two-seed rules; five-seed numbers are reported beside them.
- Ablation arms beyond the pre-registered one were added after its first results showed large losses. They are labeled post hoc wherever they appear. The last of them, a random-entry control matched on absolute activation, was added after the ablation verifiers asked for one. A rerun of the baseline on three tasks reproduced the stored baseline on every item and perplexity to the last digit, so those three checks showed no run-to-run noise. We did not rerun the ablated arms, and the random control is a single draw of its random mask.
- Gallery audit categories are adapted from Goodfire's taxonomy, with renamed categories and a relatedness condition. The 85% and 70% lines come from Addendum 1, written after the whole-neuron pilot and the layer-skew count, but before any pole-level result. Addendum 1 asked for a uniform layer distribution. We gave equal weight to each of the eight 8-layer groups used in its skew test, not to each of the 64 layers. As a post hoc check, weighting each layer equally gives 78.2% for the majority (78.3% if each layer's scored poles, rather than its neurons, count equally), and no classifier reaches 85%.
Methods, checks and cost
Compute. Qwen3-32B passes ran on rented 8×A100 and H100 instances (Lambda): a 10-million-token corpus pass for the dashboards and could-lose measurements, PopQA, perplexity and benchmark ablations. Vision and width-squeeze runs used one rented A10. Rented GPU time came to $84.69 across five Lambda instances, all now shut down: $66.33 for the 8×A100, $11.44 for a single H100, $3.78 for the A10, $1.49 for rerunning the rotation search on one A100, and $1.65 for an H100 that failed while starting up. That figure covers rented GPU time only; the AI models used as instruments and as verifiers are not counted in it.
Models used as instruments, named as recorded in the run files: Claude Sonnet 5.5 (dashboard labels, test texts, gallery classification), Claude Opus (gallery classification), GPT-6.1 Sol through Codex (gallery classification), GPT-6 Astra (High) and Gemini 3.8 Flash (second-family labels).
Checks. An outside hostile referee reviewed the pre-registration before the main runs had produced any number (only the disclosed gallery pilot had been seen); its requests became Addendum 2. Every section was then attacked by two independent AI verifier agents: one recomputed the numbers from raw files wherever the saved data allowed, the other went after the method. Section C's perplexities were recomputed from saved per-sequence losses. Section B's perplexities, the double-negative mass split and one width-squeeze baseline could only be checked for consistency, because the raw values were not saved. The three could-lose verifiers and the ablation verifiers worked the same way. Where the saved data allowed, recomputation reproduced the pre-registered verdicts. A verifier estimated that the planned mixture scaling would lift P-A4's second clause to about 54%. Rebuilt and measured on the same constituents, it is 54.2%, as estimated; with the missed constituent re-picked from the rebuilt mixtures' own explanations, it is 42.1%, a fail. The verifiers did change how several results must be read: the mixture scaling, the seed-corrected d, the clustered intervals, the one random neuron that never fired positively (left in the as-run counts), and the vision block output (the residual stream) as a control. Those corrections are folded into the text above. Before publication, a claims audit went through the draft sentence by sentence: 16 AI agents raised 140 problems, 133 of which held up on a second look and were fixed. Then nine AI verifiers from a different model family (GPT-6.1 Sol through Codex) re-derived the numbers from the raw files and checked our reading of the essay: one read the whole page, seven split its eight sections between them, and one read it from Goodfire's side as a referee. A Claude Sonnet reader flagged anything hard to follow. A Claude Opus agent checked each of their claims against the raw data and the rendered essay, figures included, and a second Opus agent tried to knock down each judgment before any edit was made. They found one verdict applied against its own rule: F-2 now reads Held on the superclass measure instead of Can't tell. A last round went over the finished page. Three Claude agents checked it for consistency, checked the newest text against the raw records, and read it cold as an outsider would; two more Codex verifiers checked every changed sentence and read the page again from Goodfire's side; and the Codex verifier for the rotation section recomputed every final rotation number. Their claims went through the same Opus judge and challenger. The corrections we accepted from every round are folded in. At the end we downloaded the essay and Goodfire's released data again and compared them with the copies we used: the data are byte-identical, and the essay's text matches except for one changed name.
Code and data. The bundle, already-clean-bundle.zip (14 MB), holds the pre-registration and both addenda with their hashes, the code for every section, the blinded dashboards and every labeler’s labels, the generated test texts, per-text measurements, per-item results and the verifiers’ JSON verdicts, with a README and checksums. It leaves out raw activations, the 10-million-token corpus, model weights, result files over 3 MB, and Goodfire’s own data files and essay; IRSI keeps the raw activations (about 11 GB) and will share them on request at peter@irsi.ai. Some files quote Goodfire’s gallery write-ups, because those are what our classifiers read. Each verdict above traces to a named result file.