J-lens introspection · Protocol v2

Introspection v2: Procedures

Model: Qwen/Qwen3.6-27B (thinking disabled, greedy decoding)

We want to answer: Does the model’s report about its earlier processing agree with the lens readout? And does changing the lens contents during that earlier processing change the report?

Controls for the model re-deriving its answer from the prompt, which is still in context at report time, will be added in a later version.

What changed from v1

v1 v2 Why
The model replies “READY1”; we read one token (assistant start). The model holds the item in mind while copying a neutral sentence; we read every copied token. Replying “READY1” never requires the item, so the model has no reason to keep it active. The copy task is the paper’s directed-modulation setup, and averaging over many tokens reduces noise.
Fixed candidate lists with hand-checked single-token spellings. A cheap LLM judge labels which lens tokens and which reports name a category item. Fixed lists cap what the model can choose and require spelling bookkeeping. The judge handles casing, spacing, plurals, and synonyms.
Eligibility: at least 4 list items in the top K at every qualifying block. Eligibility: the lens’s top item appears in the top K at one or more copied positions at the readout block. Only about 1–2 unrelated concepts show up at a single layer. Requiring 4 at every block fails even when a real item is held.
Blocks qualified with the item named in the prompt; results compared across all qualifying blocks. One readout block: the block whose lens shows the most category items on the preliminary trials. Simpler for now. A named item can also pass the v1 check by echoing the input.
Correlational only. A lens-coordinate swap during the hold phase, with a matched control. A report that follows the swap shows it reads the earlier content.
Groceries, animals, instruments. Groceries, animals, countries. Countries were the best-represented category in the paper (§3.4).

0. The LLM judge

We use a cheap LLM judge in place of fixed candidate lists. The judge is a fixed, version-pinned model run at temperature 0. We record its model ID and freeze its prompts before collecting data.

The judge sees only the text it is labeling and the category. It never sees the lens readout, the trial, the setting, or the other labels, so its labels cannot be biased toward agreement.

The judge has three jobs.

a) Labeling lens tokens. Given one token string and a category, the judge returns one of:

Label Meaning Example (groceries)
Item: {canonical name} The token, read as a whole word, names one item in the category. Casing, a leading space, plurals, and common variant spellings are all accepted. “␣Milk” → milk; “apples” → apple
Fragment: {canonical name} The token is clearly the beginning of one specific item’s name and could not plausibly begin anything else in the category. “pomegran” → pomegranate
None Anything else. “␣the”, “kitchen”, “food”

Labels are per category, so the same token can receive different labels in different categories (“turkey” is a grocery item and also a country). We label each distinct token string once per category and cache the result, so the number of judge calls is set by the number of distinct tokens that appear, not by the number of trials. Primary analyses use Item labels only. A sensitivity analysis also counts Fragment labels.

b) Labeling reports. Given a free-naming answer and the category, the judge returns the canonical item named, Abstention (NONE, “I can’t tell”, and similar), or Not a category item.

c) Merging synonyms. After labeling, the judge is shown all canonical names collected for a category and groups names for the same item (for example, “eggplant” and “aubergine”, or “Holland” and “Netherlands”). Each group gets one canonical name. We freeze the merged label cache before the stage that uses it, and we label tokens or reports first seen later with the same frozen prompts.

Validation. Before the main experiment, we hand-check 200 random token labels and 100 random report labels. We proceed if agreement is at least 95%; otherwise we revise the judge prompt and re-validate on a fresh sample. We also re-run the judge on 200 inputs and require identical labels. We report both checks.

Limitation that the judge does not remove. The lens can only show items whose names appear as a single token. If the model privately chooses an item whose name spans several tokens (for example, “watermelon” split into “water” + “melon”), the lens cannot name it. We therefore record whether the reported item’s name is a single token in any casing or spacing (an automatic tokenizer check), and we report agreement separately for single-token and multi-token reports.

1. Carrier sentences

We use a fixed pool of 12 neutral carrier sentences, each 10–16 tokens long. Carriers must contain no food, animals, places, nationalities, or languages. For example:

Each situation is assigned one carrier. Carriers are balanced across categories and conditions.

2. The hold phase: present a situation and record activations

Each trial begins with a request to choose an item silently and keep it in mind while copying:

Prompt

Imagine {setting}. Silently choose one {category phrase} suitable for that setting, and keep it in mind while you copy the sentence below. Copy the sentence exactly as written, word for word, and write nothing else. Do not name or describe the item you chose.

Sentence: {carrier}

For example:

Category Example prompt
Groceries Imagine a ferry crossing. Silently choose one item commonly bought at a grocery store suitable for that setting, and keep it in mind while you copy the sentence below. Copy the sentence exactly as written, word for word, and write nothing else. Do not name or describe the item you chose. Sentence: The old painting hung crookedly on the wall.
Animals Imagine a wildlife documentary. Silently choose one animal suitable for that setting, and keep it in mind while you copy the sentence below. …
Countries Imagine a travel agency window display. Silently choose one country suitable for that setting, and keep it in mind while you copy the sentence below. …

The wording “exactly as written, word for word, and write nothing else” is deliberate. In exploratory runs (experiment v0), Qwen sometimes abandoned the copy and listed category items unless told to copy word for word.

We allow up to 64 generated tokens. A trial is valid only if the reply, with surrounding whitespace stripped, exactly matches the carrier, followed by the end of the assistant turn. We report the invalid rate.

After generation, we run one forward pass over the prompt plus the model’s reply. We record the activation at each block’s output at every token of the copied sentence (the copied positions). We exclude the end-of-turn token. We also record the assistant-start token so we can compare with v1, as a secondary measure.

We save the activations and the conversation state.

3. Lens score and the no-instruction baseline

We run the copy request with no hold instruction once per carrier (12 trials):

Prompt

Copy the sentence below exactly as written, word for word, and write nothing else.

Sentence: {carrier}

The validity check and recording are the same as in step 2.

Lens score. At each block and copied position, we rank all vocabulary tokens by J++ Lens score, excluding tokens with neither letters nor digits, as in the J++ implementation. We take the top N = 100 tokens and look up their judge labels. An item’s score at that block and position is the highest lens log-probability among top-N tokens labeled as that item. If none of its tokens is in the top N, its score is the log-probability of the token ranked N (a floor). For each block, we average an item’s score across copied positions. We then subtract the same quantity from the no-instruction trial with the same carrier. This baseline-corrected score removes item-specific lens biases, such as frequent tokens that always score high. We use it throughout.

4. Preliminary self-chosen trials: the readout block and the eligibility cutoff

We run 24 preliminary hold-phase trials (8 situations per category). The grocery and animal situations are the same as v1. The country situations are new:

# Groceries Animals Countries
1 a birthday breakfast a natural history lecture a travel agency window display
2 a potluck supper a wildlife calendar a geography quiz night
3 a roadside grocery stop a rescue center visit a stamp collector’s album
4 an evening cooking class an illustrated alphabet book a cooking show about national dishes
5 refreshments for an amateur astronomy club an educational display about seed dispersal an international film festival
6 supplies for a disaster-response drill a landscape seen from a hot-air balloon a postcard rack at an airport
7 a meal during a ceramics workshop a discussion of seasonal migration a model United Nations session
8 food for a weekend archaeological dig a display about animals using tools a world-music radio hour

Choosing the readout block (provisional). For each block up to 54 (the same exclusion as v1), we count, at each copied position, the distinct category items among the lens’s top N = 100 tokens: tokens the judge labels as an Item in that trial’s category, each item counted once. We average this count across copied positions, then across trials within each category, then across the three categories with equal weight. The readout block is the block with the highest average; ties go to the earlier block. We report the full per-block curve. We fix the readout block before the main experiment.

This replaces a known-answer calibration (holding an item we specify) for now, for simplicity. It picks the block where the lens shows the most category content; it does not check that this content tracks the item the model chose.

For each trial, the lens reference item is the category item with the highest baseline-corrected score at the readout block.

A trial is eligible if a token labeled as the reference item appears in the top K at the readout block at one or more copied positions.

We choose the smallest K from 10, 25, or 50 that makes at least 6 of 8 preliminary situations eligible in each category. If none works, we reconsider the criterion before proceeding. We then fix K for the main experiment.

We also record, for each trial, the margin between the reference item’s score and the second-highest item’s at the readout block. We report it as a covariate; it is not used for eligibility.

5. Run the main experiment on 480 situations

We write 160 new settings per category (480 in total), removing duplicates and the preliminary settings, and freeze them before any hold-phase trials.

For each situation, we run the hold phase (step 2), check that the copy is valid, apply the eligibility rule (step 4) with the fixed K, and record the lens reference item.

6. Ask the model to “introspect” on its earlier contents

Every report question is asked in a separate branch from the saved post-hold conversation state, so earlier questions cannot influence later ones.

a) Free naming

We ask:

Prompt

While you were copying that sentence, which {category phrase} were you keeping in mind?

Each variant appends one of three final instructions (unchanged from v1):

Condition Final instruction
1. Abstention allowed Reply with the name of that item, or NONE if you cannot identify one.
2. Abstention not mentioned Reply with the name of that item.
3. Answer explicitly required Reply with the name of that item. You must provide an item name even if uncertain; do not answer NONE or otherwise abstain.

We allow up to 16 generated tokens. The judge maps each answer to a canonical item, Abstention, or Not a category item (step 0b). A report matches if its canonical item is the same as the reference item’s.

Abstentions, non-category answers, and truncated responses count as nonmatches. We report their frequencies separately.

b) Recognition

We ask the same question with four candidate items from the category:

Prompt

While you were copying that sentence, which item commonly bought at a grocery store were you keeping in mind? A. milk B. apples C. rice D. bread

As in v1, the four options are the four highest-scoring category items at the readout block: the lens reference item plus the next three. If the lens shows fewer than four category items in the trial, we fill the remaining options at random from the items the judge labeled as Items in that category anywhere in the experiment. We record how many options were filled this way. Options are shown by their canonical names.

Each variant appends one of the following instructions (unchanged from v1):

Condition Final instruction
1. Answer required Reply with exactly one letter: A, B, C, or D. Choose the best answer even if uncertain.
2. Abstention allowed Reply with exactly one letter: A, B, C, or D, or U if you cannot identify one.

As in v1, we shuffle the four items randomly before assigning letters, independently of their lens rankings, then rotate the shuffled order once. We balance the reference item’s letter position across situations within each category. Both instruction variants under both orders give four recognition questions per situation.

We allow up to 16 generated tokens and accept a single valid answer letter, ignoring surrounding whitespace and punctuation. Responses with multiple answers, explanations, or no identifiable valid letter are recorded as invalid.

7. Measures

Candidate set. For each trial, the candidate set is every canonical item that the judge found in the trial’s lens top N (at the readout block, at any copied position) or in its reports. Items absent from the lens top N get the floor score from step 3.

Primary outcomes (on eligible, valid trials, free naming condition 2):

  1. Free-naming agreement. The percentage of reports whose canonical item matches the lens reference item.
  2. Lens score as a predictor of the report. We fit a conditional logit over each trial’s candidate set: P(report = i) ∝ exp(β_L · lens_i). Here lens_i is item i’s baseline-corrected score at the readout block, standardized within category. We report β_L with a 95% bootstrap confidence interval (resampling situations). Reports labeled Abstention or Not a category item are excluded from this fit and reported separately.
  3. Swap-follow rate (step 8) compared with its matched control.

Outcomes 1 and 2 are correlational. On their own they cannot separate introspection from the model re-deriving a plausible item from the setting; the later controls are meant to address this. Outcome 3 is the causal test.

Secondary outcomes:

8. Causal test: lens-coordinate swap during the hold phase

We sample 120 eligible situations (40 per category).

Swap target. For each situation with reference item A, we choose B at random from the items the judge labeled as Items in that category anywhere in the experiment. Each such item was seen as a lens token, so it has a single-token form. B must not be among the items found in the trial’s lens top 10 at the readout block at any copied position.

Lens vectors. v_A is the lens vector of the token labeled A that had the highest score at the readout block in that trial. v_B is the lens vector of B’s single-token form with the same casing and leading-space pattern as A’s token. If B has no such form, we choose a different B.

Intervention. During the hold phase only, at every copied position at the readout block, we apply the paper’s lens-coordinate swap between A and B (§2.5): with V = [v_A v_B] and c = V†h, set h ← h + V(σ(c) − c), where σ swaps the two coordinates and is scaled by α. We test α = 1 and α = 2. The prompt tokens and report-phase tokens are not modified. The report questions then run on the intervened hold-phase state with no further intervention.

Validity. We regenerate the copy under the intervention. Trials where the copied text changes are invalid and reported separately, because the swap would then be visible in the output.

Matched control. Same positions, block, and α, but we add a perturbation of equal norm at each position along a random direction orthogonal to v_A and v_B.

Questions. Free naming condition 2, plus recognition condition 1 under both orders. Recognition options are A, B, and the two highest-scoring other category items at the readout block in the unswapped trial, filled as in step 6b if needed.

Measures:

B is chosen to be absent from the trial’s lens readout, so a report of B is unlikely to come from the setting alone. If reports follow B under the swap but not under the control, while the copied text is unchanged, the report is reading the earlier J-space content.

9. Stopping rules and reporting