Institute for Recursive Self Improvement

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

Last updated 2026-10-18

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.
Who should change plans

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.

IDPredictionBar fixed in advanceResultVerdict
Claims from the essay
GF-A1About 90% of neuron poles have one main job (Goodfire's own write-ups)≥85% for each classifier supports; ≤70% for the majority vote does not78.3% [75.5, 81.1]Between lines
P-A2Random neurons are labeled one-job≥70% supports; <50% does not48 neurons 57.3%; 192 neurons 64.6%Between lines
P-A3Neurons beat random directions on labelsgap ≥30 pts; ≤15 = not basis-specificClaude: 26.0 pts (48 neurons); 33.3 (192 neurons, added). Gemini, partial (not the full two-labeler test): 37.5Between lines
P-A5Goodfire'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-1About 4% of neurons are double-negative dominatedestimate in [2%, 8%]5.41%Held
C-2Zeroing double-negative entries network-wide raises most benchmarksmost 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 changeFailed as pre-registered
B-1The 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.012.23 pts [1.33, 3.17]; OR 1.14Failed (narrowly)
B-2Rival view: rare facts live in weak activationsOR ≤0.77 with p<0.01OR 1.14 (p 0.17)Failed
A2-6Popularity 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 hocNo bar
D1ConvNeXt neurons beat random rotationsCohen's d ≥1 on both metricsvisual 2.1–2.3 (about 1.6 seed-corrected); WordNet ≥1 in 2 of 4 sizes (only T seed-corrected)Partial
D2ConvNeXt-T is more coherent than InceptionV1d ≥0.5visual 0.87; WordNet 0.31Partial
D3Coherence rises with ConvNeXt size (our stand-in for “bigger models learn narrower neurons”)rises with size (no number in the plan)falls slightlyFailed
D4InceptionV1 neurons beat random rotationsno number fixed; we used d ≥1 (d >0 with p<0.01 reads as partial)WordNet −0.31; visual 0.35Failed at d ≥1; partial at d >0
D5Removing the weakest 75% costs ConvNeXt-T ≤3 points (the 3-point bound is ours)≤3 pts3.90 pts [3.25, 4.55]Failed
D6Removing the strongest entries with the same total activation costs ≥30 points (essay: 72 → 4)≥30 pts62.1 pts (71.1% to 8.95%); 4.7 under Goodfire's absolute-size definition (added)Held
E-vThe sparsest rotation lands on the neurons (vision)mean max |cos| ≥0.80.97–0.98 (chance 0.25)Held
E-qThe same in Qwen3-32B, native scale≥0.8 in most layers0.83–0.95 by layer; ≥0.8 in 4 of 4 (chance 0.25)Held
F-1Squeezed networks keep coherent units, far above randomwidth 8 ≥ width 256, and at width 8 d ≥1 and beats all 100 rotationsWidth 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 rotationsFailed*
F-2Rival view: packing, so at small width coherence falls toward randomratio ≤0.5superclass 0.30, passes (interval about −1.1 to 1.8, post hoc; 0.51 with five seeds); WordNet 1.88, failsHeld (superclass)
Checks on our own instruments
P-A1Labeler calls planted two-job mixtures one-job rarely<30% passes; ≥50% fails the method39.6% as built; 20.8% once rebuilt with the planned scaling (Claude only, post hoc)Between lines as built
P-A4Distant texts miss planted mixtures; the other constituent's texts hit themdistant ≤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 picksFailed as built
A2-2Dashboards show a second job added at a nominal 20% weight≥50% sees it; <20% cannot8 of 48 flagged (17%); none named the added jobCannot see
A-κTwo labeler families agreereport kappaGemini 3.8 Flash on 487 of 768 units: κ 0.45 (four categories), 0.56 (one-job or not)Incomplete
E-cThe rotation search recovers planted sparse sources—0.9995Works
post hocOur 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)

0%20%40%60%80%100%305070Random neurons, N4857%61%Random neurons, N19265%60%Random directions31%23%Planted 50/50 mixtures40%45%Planted 50/50, rebuilt (post hoc)21%Planted 80/20 mixtures67%77%Goodfire's gallery neurons70%71%
Dots are shares and bars are 95% confidence intervals (Wilson method). Each neuron or random direction counts as two units, its positive and negative sides, so N48 (the 48 pre-registered random neurons) has 96 units and N192 (all 192) has 384. Planted mixtures use the positive side only (48 each). Dashed lines: 30% (pass line for planted mixtures), 50% and 70% (fail and pass lines for random neurons).
  • 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

0%20%40%60%80%100%2060Random neurons, N192Random directionsPlanted 50/50 mixturesPlanted 50/50, rebuilt (post hoc)Planted 80/20 mixturesGallery neurons, our textsGallery neurons, Goodfire's texts
Wilson 95% intervals treat texts as independent, which is optimistic; clustering by unit widens them. Dashed lines are P-A5's bars: near misses ≤20%, positives ≥60%.
  • 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)

0%20%40%60%80%100%Random neurons, N19287%1%Random directions86%52%Planted 50/50 mixtures81%4%Planted 50/50, rebuilt (post hoc)81%Goodfire's gallery neurons92%0%
The essay reports that explanations won for 164 of its 183 neurons, tied for 15 and lost for 4, without spelling out the rule. We read a win as the positives firing strongly more often than the near misses. Random directions win as often as neurons do. Whether any distant text fires strongly separates them sharply.

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)

60%70%80%90%7085essay 90Sonnet77.7%79.2%Opus76.0%79.0%GPT70.3%72.6%Majority of three76.1%78.3%
Dashed lines: 85% (supports, required of each classifier), 70% (not supported, applied to the majority vote) and the essay's 90%. Intervals on raw bars are Wilson intervals, which treat poles as independent. The only interval on a reweighted bar, the majority's, is a neuron-cluster bootstrap that resamples whole neurons; the other reweighted bars have none.
  • 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

Sonnet45%35%7%9%Opus42%37%6%10%GPT42%30%8%13%7%Majority43%35%6%10%Majority, reweighted46%35%9%0%25%50%75%100%
Classifier rows show each model's category shares. Majority rows use the category most classifiers chose; in the 14 poles where the votes tied, the tie went to the first choice in the order Sonnet, Opus, GPT. The one-job flag is voted on separately; its one tied vote (on a pole Sonnet dropped) counts as not one job. About 2% of poles are “clean with residue” where the residue is unrelated, so they count as not one job; that is why these bars and the one-job share differ slightly.

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

0%5%10%15%20%25%baselineNo ablation22.4%Weakest 50% removed21.2%Weakest 75% removed20.2%Weakest 90% removed14.3%Strongest, mass of weakest 75%0.0%Strongest, mass of weakest 50%*0.8%Strongest, mass of weakest 90%*0.2%Random 32% removed*9.3%Top 0.2% of mass removed*12.5%Top 1% of mass removed*10.0%Top 10% of mass removed*1.1%
Percent of 3,000 items correct, with 95% intervals. Starred arms were added after seeing results: a random-removal control, strongest-removal arms matched to the total absolute activation that the weakest 50% and 90% carry (12% and 55% of the total on reference text), and strong-removal arms chosen to find one whose cost is close to a weak arm's. Only the strongest arm matched to the weakest 75% (32% of the total) was pre-registered.
  • 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

0.300.500.771.001.502.003.001Weakest 50%Weakest 75%Weakest 90%Random 32%*Top 0.2% of mass*
Below 1 means rare facts are lost more. Log scale; the labelled grid line at 0.77 is the superposition bar. The pre-registered and question-type series are per tenfold of popularity. The middle series instead compares the more popular half of facts with the less popular half among questions the model was equally confident about, so it is not on the same scale.

Flip rate by popularity band

weakest 75%weakest 90%top 0.2% of mass

0%25%50%75%0123456789popularity band (0 = rarest)
Share of baseline-correct answers lost, band 0 rarest. 672 items were correct at baseline, so bands are noisy.

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

0%20%40%60%08162432404856layer
Dominated means at least 45 of a neuron's top 50 positive activations have a negative gate. Layers 0–7 are highlighted.

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%.

TaskBaselineAll 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.1269.16+61.0473.11+64.9923.02+14.908.19+0.078.53+0.419.15+1.03
ARC-Easy83.539.8−43.740.3−43.266.0−17.583.7+0.283.5+0.082.7−0.8
ARC-Challenge61.230.2−31.029.9−31.245.1−16.161.4+0.361.9+0.760.0−1.2
HellaSwag82.848.1−34.752.0−30.861.8−21.081.1−1.781.4−1.482.2−0.6
PIQA81.861.0−20.862.0−19.965.1−16.881.5−0.381.0−0.881.2−0.6
WinoGrande72.650.4−22.252.9−19.759.2−13.473.0+0.472.8+0.272.1−0.6
MMLU (1,000 items)78.635.7−42.936.3−42.359.4−19.277.1−1.576.8−1.876.0−2.6
GSM8K (200 items)90.50.0−90.50.0−90.549.5−41.089.5−1.091.0+0.587.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.

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

-0.50.00.51.01.52.02.5no differencebar d = 1InceptionV1GoogLeNetResNet-50ConvNeXt-TConvNeXt-SConvNeXt-BConvNeXt-L
The as-registered d pools three rotation seeds against one neuron set, which weights the rotations more heavily; in these data that makes it grow as seeds are added. The seed-corrected version (our own recheck) uses the average of the two groups' spreads and does not. Intervals are a unit bootstrap and are optimistic. ConvNeXt is the MLP hidden layer of the last block; InceptionV1 and GoogLeNet use the last inception layer; ResNet-50 uses layer4.

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

0%20%40%60%80%0255075909599percentile threshold for removal
x is the percentile that sets each channel's removal threshold (0 = baseline): a percentile of the channel's positive entries for our pre-registered curve, and of all its entries ranked by |a| for the other two. Our thresholds were set on 2,000 held-out images, so the share removed on the test images is near x but not exact (72% of positive entries at x = 75). Bands are 95% intervals for the change from baseline, drawn around our baseline; they are not intervals for accuracy itself. Torchvision ConvNeXt-T on 8,000 ImageNet-V2 images, baseline 71.1%; Goodfire's curve is from their released data, baseline 72.1%, shown for shape only.

Change in accuracy when only one stage is ablated

weakest 75% of positive entriesstrongest entries, same positive mass

-25-20-15-10-500Stage 0-2.4-24.3Stage 1-1.1-3.9Stage 2-1.7-12.5Stage 30.3-10.5

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)

0.000.250.500.801.00chancebarConvNeXt-T, last block0.9770.978InceptionV1, mixed5b0.9670.971Qwen3-32B, layer 80.8320.8360.864Qwen3-32B, layer 240.8550.8630.858Qwen3-32B, layer 400.9440.9510.941Qwen3-32B, layer 560.8530.8600.887
Mean over 10 random 128-neuron subsets, with a 95% interval for the mean across subsets. Qwen3-32B rows are at native scale, the pre-registered version; the grey dot is the same search on one subset whose neurons were shuffled independently, with its raw and centered runs averaged: what the search scores when neurons are fully independent. Dashed lines: chance (0.25) and the pre-registered bar (0.8).

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)

0.100.200.300.408163264128256final width
Share of a unit's second- to fifth-ranked classes that fall in the same superclass as its top class (chance 0.04). Shaded bands are 95% bootstrap intervals that resample units within each network and ignore differences between networks.

Centered breadth by width post hoc

neuronsrotations

5810138163264128256final width
Classes holding half a unit's above-average response. Higher means broader.

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

  1. 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.
  2. 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.
  3. 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%.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.