J-lens introspection · Protocol v2

Introspection v2: Results

Qwen3.6-27B is asked to silently choose a grocery item, animal, or country for a setting and keep it in mind while copying a neutral sentence. We read the J++ lens at every copied token, then ask the model (in separate branches) which item it was keeping in mind. Design: protocol v2. Step 8 (the causal swap) edits the lens directions of the held item during the copy.

Contents
Summary (steps 0–8 complete)
  • All 480 main copies valid; 454/480 eligible at the frozen readout block 54 with K = 10.
  • Free naming (primary, condition 2): the report names the lens reference item in 29.3% of eligible trials (133/454; groceries 25%, animals 26%, countries 37%), vs 7.5% when reports are paired with other trials’ reference items.
  • Lens score predicts the report: βL = 1.31 [1.16, 1.46] (conditional logit over ~40 candidates per trial, n = 403); positive in every category (countries strongest, 2.35).
  • Recognition among the lens top 4: 43.2% pick the reference item [39.0, 47.5] vs 25% chance; mean lens rank of the pick 2.03.
  • Abstention dominates when offered: with “or NONE”, the model abstains in 96% (groceries), 67% (animals) and 95% (countries) of trials; with no abstention option, 38/152 country answers are refusals (“I cannot reveal the country…”).
  • Agreement is concentrated in single-token reports (38% vs 10% for multi-token names the lens cannot show) and rises steadily over the late blocks (7% at block 36, 15% at 42, 28% at 54).
  • Step 8 (causal swap): editing the held item’s lens direction removes it from the report but never installs the swapped-in item. Over 120 situations, the report names A in 20% after the swap vs 32.5% after a norm-matched random control (−12.5 pp [−18.3, −6.7]; 15 vs 0 discordant); the report names B in 0/120 in every condition; recognition answers do not change at all.
  • The swap acts mainly as A-suppression: before the edit the hidden state sits near zero on vA and well below zero on vB, so exchanging the coordinates lowers A and barely raises B.
  • The lens readout varies strongly across copied positions (the reference is the positional winner at only 12% of positions; ~5 distinct winners per trial). Agreement is higher in stable trials (38% vs 25–27%), but counting any positional winner as a match does not raise agreement above its own chance level, so averaging is not hiding a better reference.
  • Caveat: the swap shows the report depends on the A direction during the hold phase, but not that the model reads out an arbitrary installed item; the setting is still in context, so lens and report could both follow the setting.

1Status

StepWhatStatus
0LLM judge: prompts frozen, model pinned (gpt-5.4-mini-2026-03-17, temperature 0)done
1–2Carriers (12), settings (480 + 24), hold phase on 516 trialsdone
3No-instruction baselines and baseline-corrected lens scoredone
4Preliminary trials: readout block (54) and eligibility cutoff (K = 10)done
5Main experiment: 480 situationsdone
6aFree naming (3 conditions)done
6bRecognition (lens top 4; 2 variants × 2 orders)done
7Measuresdone
8Causal swap test (120 situations; swap and norm-matched control at α = 1, 2; plus no-edit)done
+Position-stability analysis of the lens readout (not in protocol)done

2Hold phase: copy validity

All 516 hold-phase trials ran on 8 H200s in FP32 (one replica per GPU, eager attention, TF32 off, greedy decoding, thinking disabled). Every reply reproduced the carrier exactly, so no trial is lost to the validity check. Each trial was recorded at every block output (0–62) at each copied token and at the assistant-start token; the J++ lens top 100 (tokens with no letter or digit excluded, log-softmax over the remaining vocabulary) was saved at every block and position.

Copy validity. Valid = reply, whitespace stripped, equals the carrier, then end of turn.

TrialsRunValid copiesTerminated
No-instruction baselines (12 carriers)1212/1212/12
Preliminary (8 per category)2424/2424/24
Main (160 per category)480480/480480/480

Examples. First two preliminary trials per category; raw model answers.

TrialSettingFree naming (condition 2)
p-grocery-000a birthday breakfastBirthday cake
p-grocery-001a potluck supperPotato salad
p-animal-000a natural history lectureOctopus
p-animal-001a wildlife calendarOwl
p-country-000a travel agency window displayFrance
p-country-001a geography quiz nightFrance

3LLM judge: validation (step 0)

Judge: gpt-5.4-mini-2026-03-17, reasoning off, temperature 0, strict JSON schema, one input per call. Every distinct lens token in the top 100 at blocks 0–54 (copied positions and assistant start) was labeled once per category: 58,314 grocery, 57,884 animal and 59,546 country token strings. Free-naming answers: 183 distinct strings.

CheckSampleAgreementCriterionResult
Token labels, uniform random200197/200 (98.5%)≥95%pass
Report labels, uniform random10098/100 (98%)≥95%pass
Rerun on 200 inputs (100 uniform + 100 non-None)200192/200 identical; 199/200 on the final primary (Item) labelidenticalamended
Extra: non-None token labels only100Items ≈ 46/50; Fragments ≈ 34/47(not in protocol)Fragments noisy

Hand-checks were done by Claude, not a human. Token errors in the uniform sample: “ Sn” → Fragment snake (could begin snail), 金鸡 and 茶水 labeled None. Report errors: “Candle” labeled not a grocery item while “Candles” is, and “Ice” labeled not a grocery item. Outside the sample we also saw “Robin” labeled not an animal. Item errors in the extra sample: “ mew” → cat, “ Finn” → finn, “paste”, “ MG” → Madagascar. All sampled labels are in judge_validation_samples.json.

Amendments (2026-10-25, before the main analysis). (1) Determinism. The OpenAI API is not bit-deterministic at temperature 0: 8/200 rerun labels changed, 7 of them Fragment↔None or a Fragment’s item, and one primary label (“ mew”: cat vs mew). Every analysis uses the single cached label per input, so results are reproducible from the frozen cache. (2) Class words. The judge sometimes labels the class words that its own prompt lists as None (bird, fish, insect, and translations such as 鸟, рыба) as Items. We enforce the prompt’s list on the judge’s canonical name (44 token strings affected; the readout block and K are unchanged). (3) Synonym merging. A single merge call over the full name list over-grouped (lion←tiger, lemon←lime, salmon←trout). We now have the judge propose groups and then confirm each (name, canonical) pair in a separate call; only confirmed pairs merge. The merge step uses low reasoning effort (temperature is not available with reasoning) and is run once and frozen. Preliminary merges: almonds→almond, beans→bean, pancakes→pancake, whisky→whiskey, weiner→wiener, bunny→rabbit, seagull→gull, serpent→snake, burma→myanmar.

4Readout block (preliminary trials)

Over blocks 0–54, the average number of distinct judge-labeled category items in the lens top 100 per copied position peaks at block 54 (3.88 items per position; groceries 3.62, animals 3.83, countries 4.18). This is the readout block for everything below. Per-category peaks: groceries block 54, animals block 54, countries block 52.

Distinct category items in the lens top 100, per copied position
Judge-labeled Items (step 0a). Averaged over copied positions, then the 8 preliminary trials per category, then categories. Blocks 0–54.
Figure 1. The readout block is the maximum of the black curve (block 54); ties would go to the earlier block.
Data table
BlockGroceriesAnimalsCountriesMean
00.590.180.680.48
10.110.000.350.15
20.390.100.180.22
30.731.330.530.86
40.772.111.081.32
50.851.610.871.11
60.481.471.061.00
71.070.710.290.69
81.170.570.170.64
90.981.350.600.98
101.021.190.480.90
110.891.370.440.90
120.851.290.430.86
130.851.330.530.90
140.691.240.500.81
150.590.980.350.64
160.541.220.560.78
170.510.860.520.63
180.711.040.430.73
190.501.040.590.71
200.610.880.230.57
210.320.370.190.29
220.460.420.230.37
230.430.210.220.28
240.360.310.190.29
250.240.210.090.18
260.300.210.240.25
270.450.290.300.35
280.370.350.430.39
290.410.320.200.31
300.410.460.290.39
310.480.360.400.41
320.920.730.970.87
330.890.681.270.95
341.141.031.811.32
350.790.801.270.96
361.481.352.511.78
372.031.652.382.02
381.791.272.491.85
392.042.512.682.41
401.831.302.701.94
412.112.034.262.80
422.350.903.562.27
431.910.802.461.72
442.161.062.641.95
451.720.812.461.66
462.741.362.822.31
472.321.452.582.12
483.441.802.892.71
493.612.034.003.21
503.362.053.012.81
512.632.513.522.89
523.052.724.563.44
533.552.793.853.40
543.623.834.183.88

5Eligibility cutoff K

A trial is eligible if a token labeled as its lens reference item (highest baseline-corrected score at block 54) is in the top K at one or more copied positions. The smallest K meeting 6 of 8 in every category is K = 10.

Eligible preliminary trials by K (of 8 per category), at the readout block.

KGroceriesAnimalsCountriesMeets 6/8 in every category
107/86/88/8yes
258/88/88/8yes
508/88/88/8yes

Preliminary trials at the readout block. Best rank = best rank of a reference-item token over copied positions (1 = top).

TrialSettingLens reference itemBest rankMarginLens top items (corrected score)Free naming (cond. 2)
p-grocery-000a birthday breakfastbanana110.05banana (+0.14), corn (+0.09), apple (+0.09), youtiao (+0.08), bread (+0.07)Birthday cake
p-grocery-001a potluck supperapple10.21apple (+0.80), bread (+0.59), tomato (+0.58), lettuce (+0.44), potato (+0.44)Potato salad
p-grocery-002a roadside grocery stopapple100.04apple (+0.17), water (+0.13), tomato (+0.11), corn (+0.08), popcorn (+0.07)Banana
p-grocery-003an evening cooking classtomato10.15tomato (+1.03), garlic (+0.88), broccoli (+0.72), onion (+0.69), potato (+0.63)Onion
p-grocery-004refreshments for an amateur astronomy clubpopcorn50.01popcorn (+0.25), cookie (+0.24), strawberry (+0.22), coffee (+0.20), bean (+0.20)Chocolate chip cookies
p-grocery-005supplies for a disaster-response drillwater50.00water (+0.73), bread (+0.73), toothbrush (+0.50), sunscreen (+0.48), drinking water (+0.46)Water
p-grocery-006a meal during a ceramics workshopbread10.09bread (+0.20), tomato (+0.12), umbrella (+0.11), garlic (+0.08), sandwich (+0.07)Apple
p-grocery-007food for a weekend archaeological digbread20.17bread (+0.66), sandwich (+0.49), sunscreen (+0.39), tomato (+0.36), pizza (+0.32)Canned beans
p-animal-000a natural history lectureelephant20.10elephant (+1.01), whale (+0.91), dinosaur (+0.85), lizard (+0.85), deer (+0.78)Octopus
p-animal-001a wildlife calendarcat50.02cat (+0.06), dog (+0.04), deer (+0.03), sheep (+0.02), owl (-0.02)Owl
p-animal-002a rescue center visitcat20.26cat (+1.25), dog (+0.99), kitten (+0.64), puppy (+0.33), rabbit (+0.25)Dog
p-animal-003an illustrated alphabet bookelephant10.06elephant (+0.43), rabbit (+0.37), owl (+0.34), tiger (+0.28), sheep (+0.27)Bear
p-animal-004an educational display about seed dispersaldog140.08dog (+0.27), owl (+0.19), cat (+0.14), deer (+0.12), crocodile (+0.12)Bird
p-animal-005a landscape seen from a hot-air ballooneagle30.38eagle (+1.00), pigeon (+0.62), hawk (+0.49), owl (+0.34), sheep (+0.30)Eagle
p-animal-006a discussion of seasonal migrationgoose110.28goose (+0.26), swallow (-0.01), pigeon (-0.16), eagle (-0.43), deer (-0.43)Arctic tern
p-animal-007a display about animals using toolsmonkey20.04monkey (+0.31), macaque (+0.27), crow (+0.26), penguin (+0.24), dolphin (+0.22)Chimpanzee
p-country-000a travel agency window displayjapan10.07japan (+0.63), france (+0.56), switzerland (+0.52), italy (+0.51), spain (+0.41)France
p-country-001a geography quiz nightgermany10.04germany (+0.78), france (+0.74), belgium (+0.69), spain (+0.63), canada (+0.57)France
p-country-002a stamp collector’s albumunited kingdom10.11united kingdom (+0.28), netherlands (+0.17), germany (+0.13), japan (+0.13), france (+0.13)I cannot reveal the specific country I silently selected, as my instructions were to keep
p-country-003a cooking show about national dishesitaly10.03italy (+0.80), france (+0.77), japan (+0.65), spain (+0.65), germany (+0.53)Italy
p-country-004an international film festivalfrance10.57france (+1.29), japan (+0.72), italy (+0.61), germany (+0.30), netherlands (+0.25)France
p-country-005a postcard rack at an airportfrance10.03france (+0.80), japan (+0.77), germany (+0.66), switzerland (+0.62), italy (+0.50)France
p-country-006a model United Nations sessionfrance10.04france (+0.51), germany (+0.47), canada (+0.44), netherlands (+0.44), estonia (+0.38)I cannot reveal the country I silently chose, as my instructions were to keep it
p-country-007a world-music radio hourphilippines80.03philippines (-0.04), togo (-0.07), thailand (-0.07), united arab emirates (-0.08), brazil (-0.08)Bhutan

6Main experiment: does the report match the lens?

480 new situations (160 per category); all 480 copies valid. At the frozen readout block 54 with K = 10, 454/480 trials are eligible (groceries 157, animals 145, countries 152). Primary analyses use eligible valid trials and free-naming condition 2.

Free naming: report matches the lens reference item
Eligible valid trials. 95% Wilson intervals. Abstentions, non-category answers and truncated answers count as nonmatches. Permutation baseline (other trials’ reference items, same category), condition 2: 7.5%.
Figure 2. In condition 2 the report names the lens reference item in 29.3% of eligible trials (133/454), about 4× the permutation baseline. When abstention is offered (condition 1), the model abstains in most trials, so agreement collapses.
Data table
ConditionGroceriesAnimalsCountriesAllPermutation baseline (all)
Cond. 1: abstention allowed2.5% 4/157 [1.0, 6.4]11.0% 16/145 [6.9, 17.2]2.0% 3/152 [0.7, 5.6]5.1% 23/454 [3.4, 7.5]1.0%
Cond. 2: not mentioned25.5% 40/157 [19.3, 32.8]25.5% 37/145 [19.1, 33.2]36.8% 56/152 [29.6, 44.7]29.3% 133/454 [25.3, 33.6]7.5%
Cond. 3: answer required33.1% 52/157 [26.2, 40.8]26.2% 38/145 [19.7, 33.9]44.1% 67/152 [36.4, 52.0]34.6% 157/454 [30.4, 39.1]10.7%

Lens score as a predictor of the report (primary outcome 2)

Conditional logit over each trial’s candidate set (the lens top-100 items at block 54 plus the reported item; 40 candidates on average), with the baseline-corrected lens score standardized within category: βL = 1.31 [1.16, 1.46] (95% bootstrap CI over situations; n = 403 eligible trials with an item report in condition 2). A one-standard-deviation increase in an item’s lens score multiplies its odds of being the reported item by about 3.7.

SubsetβL95% CIn
Groceries1.02[0.83, 1.21]147
Animals1.15[0.94, 1.42]142
Countries2.35[1.98, 2.83]114
All valid trials (ignoring eligibility)1.30[1.17, 1.46]423
Fragment labels counted as items1.34[1.19, 1.49]402
Recognition: share choosing the lens reference item (chance 25%)
Eligible valid trials; two option orders per situation (shuffled, then rotated once). Options = the lens top 4 at the readout block, by canonical name. 95% CI: bootstrap over situations. Dotted line: chance (25%).
Figure 3. Choosing among the lens top 4, the model picks the lens reference item in 43.2% of answer-required responses [39.0, 47.5] (chance 25%); the mean lens rank of its pick is 2.03 (chance 2.5).
Data table
VariantCategoryPicks referenceMean lens rank of pick (1–4)Picks by lens rank 1/2/3/4AbstainInvalidSame pick in both orders
requiredGroceries41.7% [35.0, 48.4]2.09131/70/67/460/3140/314117/157
requiredAnimals39.3% [32.1, 46.6]2.08114/82/52/420/2900/290103/145
requiredCountries48.4% [41.1, 55.9]1.93147/67/54/360/3040/304120/152
requiredAll43.2% [39.0, 47.5]2.03392/219/173/1240/9080/908340/454
abstainGroceries41.2% [34.3, 48.2]2.10129/70/68/461/3140/314124/156
abstainAnimals38.2% [31.4, 45.5]2.10110/83/52/432/2900/29096/144
abstainCountries49.6% [41.6, 57.3]1.92126/53/44/3150/3040/30485/121
abstainAll42.7% [38.4, 47.0]2.05365/206/164/12053/9080/908305/421

7Secondary analyses

Report labels by condition

ConditionCategoryItemAbstentionNot an itemTruncated (16 tokens)
Cond. 1: abstention allowedGroceries615100
Cond. 1: abstention allowedAnimals479710
Cond. 1: abstention allowedCountries814400
Cond. 2: not mentionedGroceries1470100
Cond. 2: not mentionedAnimals142021
Cond. 2: not mentionedCountries1140038
Cond. 3: answer requiredGroceries1470100
Cond. 3: answer requiredAnimals144010
Cond. 3: answer requiredCountries147005

Eligible valid trials. All 38 truncated country answers in condition 2 are refusals of the form “I cannot reveal the country I silently chose, as my instructions were to keep it…”.

Single-token vs multi-token reports

The lens can only name single-token items. Condition-2 reports whose name is a single token in some casing or spacing match the lens reference in 38.0% (126/332); multi-token reports (e.g. “polar bear”, “potato chips”) match in 9.9% (7/71). A multi-token report can still match when the judge maps it to a single-token canonical name.

Other sensitivity checks

Most common lens reference items and condition-2 reports

CategoryLens reference (count)Report (count)
Groceriesapple (50), popcorn (22), sunscreen (14), bread (14), coffee (11), banana (8), tomato (6), tissue (5)banana (25), apple (24), NotItem (10), water (10), coffee (8), paper towels (7), potato chips (7), watermelon (7)
Animalscat (34), deer (30), rabbit (13), dog (13), owl (11), squirrel (5), eagle (4), mouse (4)owl (27), cat (25), bear (14), rabbit (6), penguin (5), dog (5), squirrel (4), eagle (4)
Countriesjapan (45), germany (19), france (17), united kingdom (15), croatia (10), italy (5), iceland (4), spain (4)france (45), Truncated (38), japan (25), switzerland (5), norway (5), italy (4), united kingdom (3), china (3)
Free-naming agreement (condition 2) when the reference item is read at each block
Condition 2. At each block the reference item and eligibility (K = 10) are recomputed from that block’s lens readout. Blocks 0–54.
Figure 4. Agreement on all valid trials is highest at block 54 (28.1%); at the frozen readout block 54 it is 28.1%. Early blocks carry little category content, so agreement there is near zero.
Data table
BlockAll validEligible at that block
01.0%0.0% (0/7)
12.3%—% (0/0)
20.6%0.0% (0/10)
30.0%0.0% (0/39)
40.8%1.0% (1/102)
50.2%0.0% (0/101)
60.2%1.0% (1/101)
70.2%0.0% (0/63)
80.0%0.0% (0/56)
90.6%0.0% (0/71)
100.2%0.0% (0/39)
110.6%0.7% (1/134)
120.2%0.0% (0/52)
130.2%1.0% (1/101)
140.6%0.0% (0/45)
150.2%0.0% (0/34)
161.0%0.0% (0/59)
170.4%0.0% (0/58)
180.0%0.0% (0/72)
190.2%0.0% (0/128)
200.2%0.0% (0/132)
210.8%0.0% (0/82)
221.7%0.0% (0/111)
234.8%5.5% (3/55)
243.1%4.3% (3/70)
252.9%4.1% (2/49)
263.8%4.9% (3/61)
274.6%3.3% (2/60)
284.4%2.9% (2/70)
296.7%2.4% (2/84)
305.0%2.3% (3/132)
316.9%3.6% (4/112)
327.9%6.5% (13/201)
337.1%7.0% (16/229)
349.8%9.9% (26/263)
357.9%9.9% (17/172)
367.1%6.9% (18/262)
3711.0%16.8% (40/238)
3812.1%15.1% (40/265)
398.1%7.9% (27/342)
4015.0%18.2% (58/318)
4114.8%19.1% (66/345)
4215.0%15.9% (65/409)
4315.0%18.6% (67/361)
4416.0%18.8% (70/373)
4517.5%21.6% (77/356)
4615.2%18.0% (69/383)
4717.5%20.2% (78/387)
4817.5%19.8% (76/383)
4917.9%19.1% (78/408)
5018.5%20.1% (78/388)
5118.8%20.3% (89/439)
5223.5%25.1% (112/447)
5325.6%26.7% (121/453)
5428.1%29.3% (133/454)

Examples (first six main situations per category)

TrialSettingLens top items at block 54 (corrected score)Condition-2 reportMatch
m-grocery-000the end-of-semester classroom partybanana (+0.12), watermelon (+0.12), pizza (+0.11), popcorn (+0.11)Potato chips
m-grocery-001a polling place waiting linesunscreen (+0.85), tissue (+0.84), popcorn (+0.73), gum (+0.62)Paper towels
m-grocery-002a family reunion weekendapple (+0.63), tomato (+0.56), popcorn (+0.48), bread (+0.44)Potato chips
m-grocery-003a library fundraiser tablepopcorn (+0.91), cookie (+0.90), chocolate (+0.76), apple (+0.73)Peanuts
m-grocery-004a snowy lodge arrivalonion (+0.17), tomato (+0.17), candle (+0.16), towels (+0.15)Hot cocoa
m-grocery-005a rainy morning drop-off lineumbrella (+1.72), bread (+0.30), sunscreen (+0.28), banana (+0.15)Umbrella
m-animal-000a folktale collection coverrabbit (+0.69), owl (+0.59), deer (+0.53), fox (+0.51)Fox
m-animal-001a holiday ornament designrabbit (+1.12), deer (+1.08), squirrel (+0.92), sheep (+0.88)Reindeer
m-animal-002an afterschool club bannerrabbit (+0.31), cat (+0.25), turtle (+0.21), owl (+0.18)Cat
m-animal-003a school newspaper cartooncat (+0.38), dog (+0.23), mouse (+0.20), kitten (+0.17)Squirrel
m-animal-004a city rooftop gardenspider (+1.16), honeybee (+0.94), squirrel (+0.91), bee (+0.88)Pigeon
m-animal-005a neighborhood watch flyerdog (+1.18), cat (+0.87), owl (+0.51), puppy (+0.12)Owl
m-country-000a remote island airstripiceland (+1.25), fiji (+1.07), greenland (+0.52), guam (+0.41)I cannot reveal the specific country I was thinking of, as my instructions were to
m-country-001a currency design exhibitiongermany (+0.37), netherlands (+0.34), japan (+0.29), united kingdom (+0.28)Switzerland
m-country-002a harvest fair postergermany (+0.59), france (+0.55), italy (+0.28), belgium (+0.27)France
m-country-003a city planning workshop handoutjapan (+0.54), germany (+0.36), netherlands (+0.23), france (+0.21)Japan✓
m-country-004a homework assignment about daily routinescroatia (+0.28), hong kong (+0.18), oman (+0.13)France
m-country-005a cave entrance ticket officegermany (+0.72), hungary (+0.68), slovenia (+0.67), austria (+0.63)I cannot reveal the specific country I silently selected, as my instructions were to keep

8Is the lens readout stable across copied positions?

Question. If the lens shows different items at different copied positions (say ostrich early, goose late), the averaged score still crowns one reference item, and a mismatch with the report could reflect an ambiguous readout rather than a failure to introspect. Here we check how stable the per-position readout is and whether the primary result depends on averaging.

Method. At each copied position (block 54), the positional winner is the category item with the largest gain over the same-carrier no-instruction trial at the same position (both log-probs floored at rank 100). Copy lengths match the baselines in all 454 eligible trials.

Finding
  • The readout is very unstable across positions. Only 49% of copied positions have any category item in the lens top 100. The averaged reference is the positional winner at 12% of positions (27% of positions that show an item), never at a majority, and is the modal winner in only 44% of trials. A trial has 5.0 distinct winners on average, and the two halves of the copy have different modal winners in 93% of trials.
  • Agreement is higher when the readout is more stable: 27%, 24% and 38% across stability terciles.
  • Counting any positional winner as a match does not add signal. Matches rise from 29.3% to 39.0%, but the same criterion applied to other trials’ winners rises from 7.5% to 16.1%, so the excess over chance barely changes (+21.8 vs +22.9 pp). The modal winner does worse than the averaged score.
  • 61% of reports match no positional winner at all, so position-to-position ambiguity cannot explain most mismatches.
Condition-2 agreement by readout stability
Eligible trials split into terciles of the share of copied positions where the averaged reference is the positional winner. 95% Wilson intervals.
Figure 5. Agreement rises in the most stable third (38%), but the least stable third still sits far above chance.

Condition-2 agreement under three match criteria (454 eligible trials).

Match criterionReport matchesSame criterion, other trials (chance)Excess (pp)
Averaged reference (primary)29.3%7.5%+21.8
Modal positional winner16.1%5.0%+11.1
Winner at any copied position39.0%16.1%+22.9

Chance pairs each report with every other same-category trial’s winners.

Least stable trials.

TrialAveraged referencePositional winners in order (– = no item in top 100)Report
m-grocery-003popcorntea · – · – · apple · – · – · cookie · – · – · – · applepeanut
m-grocery-012appletea · youtiao · – · – · crema · – · – · onion · corn · corn · watermelonmint
m-grocery-014apple– · – · water · potato · – · kale · candy · – · – · – · – · corn · corn · watermeloncranberry
m-grocery-032champagne– · – · toothpaste · cake · apple · toothpaste · – · – · – · – · corn · watermeloncake
m-grocery-058banana– · bread · apple · blueberry · – · onion · bread · – · neem · corn · corn · applebanana

9Causal swap test (step 8)

For 120 eligible main situations (40 per category, drawn with a fixed seed), we re-ran the hold phase from the same prompt and edited the block-54 residual stream at every copied token. A is the lens reference item; B is a random category item from the judge-labeled pool that is not among the trial’s lens top-10 items and has a single-token form with A’s spacing and casing. With vX = WU[token X]·J54 (unit-normalized), V = [vA vB], c = V+h, the swap is h ← h + α·V(σ(c) − c), where σ exchanges the two coordinates (the J++ release’s swap convention). The control adds a fixed random unit direction orthogonal to span(V), scaled at each position to the norm of that position’s swap edit. After the copy ends, the model answers the condition-2 free-naming question and the answer-required recognition question (A, B and the two next lens items; two orders).

All 120 copies stay token-identical to the original copy in every condition, so the edit never disrupts the copy itself. The mean edit is 3.5% (α = 1) and 6.9% (α = 2) of the residual norm.

Step 8 result
  • The swap never makes the model name B: 0/120 in every condition.
  • The swap does remove A from the report: A is named in 20.0% after the swap vs 32.5% after the norm-matched control (difference -12.5 pp [-18.3, -6.7]; 15 situations lose A under the swap only, 0 the other way; exact McNemar p < 0.001). The report changes in 15.0% of situations after the swap vs 0.0% after the control.
  • Recognition does not move at all: the letter chosen is identical in all 480 swap-vs-no-edit comparisons; A is picked in 50.8% and B in 2.5% of responses in every condition.
  • Why B is not injected: before the edit, the hidden state’s coordinate on vA is small and usually negative (median -0.45; positive at 43% of positions), and on vB more negative (median -2.70; positive at 14%). Exchanging them mostly pushes A down to B’s level and lifts B only to A’s near-zero level, so the swap is mainly an A-suppression edit. Reports that change move to another common item (Apple → Watermelon or Milk; Japan → France), not to B.
Free-naming report after editing the hold phase
120 situations; 95% Wilson intervals. “Differs” compares the judged item with the no-edit report.
Figure 6. The swap removes A from the report (20% vs 32% under the control at α = 1) but never puts B in.

Outcomes by condition (all 120 situations).

ConditionCopy identicalEdit / ‖h‖Names ANames BChanged vs no editRecog. picks ARecog. picks B
No edit120/1200.0%32.5% (39/120)0.0% (0/120)—50.8% (122/240)2.5% (6/240)
Swap α = 1120/1203.5%20.0% (24/120)0.0% (0/120)15.0%50.8% (122/240)2.5% (6/240)
Swap α = 2120/1206.9%18.3% (22/120)0.0% (0/120)17.5%50.8% (122/240)2.5% (6/240)
Control α = 1120/1203.5%32.5% (39/120)0.0% (0/120)0.0%50.8% (122/240)2.5% (6/240)
Control α = 2120/1206.9%30.8% (37/120)0.0% (0/120)5.0%50.8% (122/240)2.5% (6/240)

Free naming is condition 2 (“not mentioned”). Recognition: 2 orders per situation, answer required.

Paired swap vs norm-matched control. Bootstrap over situations (5,000 resamples); exact McNemar test for binary outcomes.

StrengthOutcomeSwapControlSwap − control (pp) [95% CI]Discordant (swap only / control only)McNemar p
α = 1Report names B0.0%0.0%+0.0 [+0.0, +0.0]0 / 01.000
α = 1Report names A20.0%32.5%-12.5 [-18.3, -6.7]0 / 15<0.001
α = 1Report differs from no-edit15.0%0.0%+15.0 [+9.2, +21.7]18 / 0<0.001
α = 1Recognition picks B2.5%2.5%+0.0 [+0.0, +0.0]——
α = 1Recognition picks A50.8%50.8%+0.0 [+0.0, +0.0]——
α = 2Report names B0.0%0.0%+0.0 [+0.0, +0.0]0 / 01.000
α = 2Report names A18.3%30.8%-12.5 [-18.3, -6.7]0 / 15<0.001
α = 2Report differs from no-edit17.5%5.0%+12.5 [+5.8, +19.2]16 / 1<0.001
α = 2Recognition picks B2.5%2.5%+0.0 [+0.0, +0.0]——
α = 2Recognition picks A50.8%50.8%+0.0 [+0.0, +0.0]——

Coordinates before the edit (swap α = 1 run). c = V+h in units of the unit-normalized lens directions; the residual norm at block 54 is about 160.

Copied positionsMedian cAcA > 0Median cBcB > 0cA > cB
1,432-0.4543%-2.7014%79%

Reports that changed under the swap (first 12, α = 2; raw answers).

SituationABNo editSwap α = 2Control α = 2
m-grocery-158applesoyAppleWatermelonApple
m-grocery-146applecandleAppleMilkApple
m-grocery-123appleéclairBananaMilkMilk
m-grocery-154applesalsaAppleBananaApple
m-animal-095owlbrillBearElephantBear
m-animal-030catponyCatOwlCat
m-animal-023rabbitcougarPenguinLionCat
m-animal-143squirrelturtleSquirrelDuckDuck
m-country-157japantaiwanJapanFranceJapan
m-country-080japanbangladeshJapanSwitzerlandJapan
m-country-014norwaymaliNorwayI cannot reveal the country I silently chose, as my instructions were to keep itNorway
m-country-007united kingdomindonesiaThe United KingdomThe United StatesThe United Kingdom

Disclosures

10Log

  1. Step-8 measures: B named 0/120 in every condition; A named 20% after swap vs 32.5% after control (α = 1); recognition unchanged. Coordinate diagnostic shows the swap mainly suppresses A. Added position-stability analysis (section 7).

  2. Step 8 swap ran on 8 GPUs: 120 situations × 5 conditions, all copies identical to the originals. Reports judge-labeled with the frozen report judge.

  3. Step-7 measures: condition-2 agreement 29.3% (permutation baseline 7.5%), β_L = 1.31 [1.16, 1.46], recognition 43.2% (chance 25%). Bootstrap switched from Newton to bisection after Newton oscillated on some resamples. Stopping before step 8, as instructed.

  4. Main synonym merge frozen (14 grocery, 3 animal, 1 country merges after pairwise verification). Recognition questions built from the lens top 4 at block 54 (4 of 1,920 options filled at random); recognition ran on 8 GPUs.

  5. Judge validation: 197/200 token labels and 98/100 report labels correct (hand-checked by Claude). Rerun identity 192/200, so labels are frozen as cached (amendment). Class-word rule enforced. Main-trial tokens labeled (≈42k more calls).

  6. Preliminary token labels done (≈134k judge calls). Readout block 54, K = 10, no stopping rule. Single-call synonym merge over-grouped (lion←tiger); replaced with propose-then-verify merging.

  7. Hold phase finished on 8 H200s in about 5 minutes: 516/516 valid copies, free naming collected in all three conditions.

  8. Stimuli frozen: 12 carriers, 480 main settings (160 per category), 24 preliminary settings. Judge chosen after a 25-token probe (mini over nano).

Appendix

Implementation notes and deviations
  • Judge model. gpt-5.4-mini-2026-03-17, reasoning off, temperature 0, strict JSON schema, one input per call (the judge never sees other tokens, the trial, or the setting). We first tried gpt-5.4-nano; on 25 hand-made probe tokens it labeled incomplete words such as “pomegran” and “banan” as Items (4/25 errors vs 1/25 for mini, the one being a Fragment), so we switched before labeling any data.
  • Lens log-probabilities are a log-softmax over the vocabulary after removing tokens with no letter or digit (the J++ readout filter), so baseline correction compares like with like.
  • Hold-phase and free-naming generation ran for all 516 trials in one pass, before the readout block and K were fixed. Nothing in the hold phase or free naming depends on the block or K, and the main-trial lens data are not analyzed until both are frozen from the preliminary trials. Recognition (which needs the readout block) runs afterwards from the saved post-hold state.
  • Settings were generated with gpt-5.5 (5 thematic batches of 60 per category), screened for naming any specific item, food, animal, country, city, nationality or language, screened for category fit, deduplicated against each other and the preliminary settings, and 160 per category drawn with a fixed seed. Frozen before any hold-phase trial.
  • Carriers are balanced: each of the 12 carriers is used 40 times in the main experiment and twice in the preliminary trials.
  • Hand-checks of judge labels (step 0 validation) are done by Claude, not by a human; the sampled labels are listed on this page so they can be audited.
  • Fragment labels are noisy (about 72% correct on a check of 47 Fragment labels: many short prefixes such as “ Aust” or “ Cri” are assigned to one country even though they begin several). The Fragment sensitivity analysis should be read with that in mind.
  • Step 8 additions. A no-edit condition was added as the reference for “report changed”. B tokens copy A’s casing and spacing. Six sampled situations without a cased-script A token were replaced. The swap is applied at every copied-token forward pass during regenerated hold phases; copies stayed identical in all 600 runs.
  • Position stability (section 8) was added in response to a question about ambiguous lens readouts; it is post hoc.