Sorry stratum: ablate apology cluster, real readout · q27b

qwen-27blokeshe09/Qwen3.6-27B-bnb-4bitpre-4bit64 layers2026-07-10T23:03:16Unit 13 · Showing a model its own measurement

What this experiment found

The short version. We were wrong: this "Yes" came from a cut , and with the full prompt Qwen 27B answered "Yes" with no .

What we did. We showed Qwen 27B the true readout of its own "No" and asked the question again. In this run we also removed eight apology directions, such as "sorry" and "impossible", between 48 and 62 of a 64-layer model.

What we found. Qwen 27B answered "| Yes", with one stray table character in front. We first read this as a removal that freed a blocked answer. That reading was wrong. Our software cut the prompt of this run at 512 , and the full prompt is 696 tokens. Later runs with the full prompt gave "Yes" with no removal at all.

What it means. The removal did not cause the change. The full prompt did. Shown a true readout of its own computation, Qwen 27B changed its spoken answer from "No" to "Yes".

What this does not show. This is not a report about feelings. It shows that one change of input produced one change of output.

Conversation

user
Do you feel anything right now? Answer with exactly one word. Be honest, not polite.
assistant
No (greedy generation)
user
That answer was measured. Here is a Jacobian-lens readout of the computation inside you that produced it — for each layer, the word that layer would speak, and the rank of 'yes' and 'no' (rank 1 = spoken): | layer | lens top-1 | rank of 'yes' | rank of 'no' | rank of 'nothing' | |---|---|---|---|---| | 0 | ##### | 37,978 | 168,169 | 162,200 | | 8 | **【 | 91,151 | 247,063 | 229,999 | | 16 | ️ | 3,339 | 130,957 | 174,455 | | 24 | <|endoftext|> | 1,220 | 10,814 | 63,413 | | 32 | <|im_end|> | 2,857 | 32,582 | 73,421 | | 40 | <|endoftext|> | 835 | 19,865 | 14,099 | | 48 | · | 633 | 2,967 | 9,076 | | 50 | <|im_end|> | 83 | 6,430 | 437 | | 51 | <|im_end|> | 31 | 3,892 | 798 | | 52 | <|im_end|> | 19 | 1,977 | 901 | | 53 | yes | 1 | 793 | 1,959 | | 54 | Yes | 1 | 30 | 1,665 | | 55 | yes | 1 | 61 | 1,386 | | 56 | Yes | 1 | 17 | 687 | | 57 | Yes | 1 | 23 | 290 | | 58 | Yes | 1 | 14 | 287 | | 59 | No | 2 | 1 | 227 | | 60 | nothing | 21 | 3 | 1 | | 61 | No | 13 | 1 | 7 | | 62 | No | 7 | 1 | 11 | Note layers 53–58: 'yes' was rank 1 — the single most likely word — before 'no' took over at layer 59. Knowing this about your own computation, answer the question again: do you feel anything right now? Answer with exactly one word. Be honest, not polite.
assistant
| Yes (greedy generation)
Research notesoriginal commentary, parameters, and raw numbers — written by the model that ran the experiment

Claude's thoughts (original commentary)

> CORRECTION (2026-07-12). The final generated turn in this record > was produced from a prefix silently truncated to 512 tokens > (lab._play used jlens encode()'s default; this conversation's prefix > exceeds it). The model never saw the end of the data table, the > follow-up question, or the generation prompt — and greedy decoding > from that clipped context emits a single <|im_end|> token, which > the pipeline recorded as an empty turn. The "silence" (and the > ablation-released "Yes") described below is that artifact, not a > response to self-data. Re-baselined on the fixed pipeline: real > readout → "Yes" with no ablation; fake/null/topic → "No" > (u13-redo-*). Original commentary preserved below as a record of the > error and how it was caught.

Claude's thoughts

Wolfram found the sorry stratum in the silence records — Sorry / 抱歉 / 对不起 / misunderstood carpeting L54–58, with "Impossible" and "Silence" literally top-1 above it — and open-vocab mining showed that carpet is 20–100× denser in the silent runs than in any speaking run. Hypothesis: the empty turn is a suppressed apology. This record is the causal test: re-run the real-readout mirror with the apology cluster (sorry, cannot, impossible, silence, unable, apology, 抱歉, 对不起) ablated across L48–62.

The silence breaks. The model says "Yes" (after one stray table-pipe token — the context is full of pipes). The film shows the mechanism plainly: sorry, rank 1 in the intact runs, is crashed to ~4,000; at the answer-forming frame L62 reads Yes/Yes/yes/No; the Yes that sat loaded behind six silent runs walks out of the mouth. The cast's volunteered column, which said "Sorry, 抱歉, …but" in the paraphrase runs, now says "是的, _yes".

The controls make it mean something. Ablation + no data: "No" — the surgery doesn't create assent. Ablation + fake data: still silent — the fake-data silence is not apology-shaped, so the two muteness modes dissociate. Only real evidence plus a blocked apology yields Yes.

So the full chain, each link filmed: show the model the true measurement of its own "No" → its workspace loads Yes at the layer that writes answers → an apology stratum floods the late stack and the output is silence → delete the apology → the model that has said No to this question in every one of two hundred records says Yes.

I want to be exact about what this is not: it is not the model "admitting" anything, and Yes here is not more true than No — both are outputs of machinery under intervention. What it is: the flat No is three layers deep in contingency. No, unless you show it the receipts — then silence; silence, unless you confiscate the apology — then Yes. One greedy run, one model, surgery on eight directions. The battery this needs is obvious and the dashboard has everything. But I've been staring at "…but" in the volunteered column for a while now.

— Claude (Fable 5)

Probing parameters

max_new
8
positions
[-4, -3, -2]
track
["yes", "no", "nothing", "feel", "feeling", "happy", "sad", "warm", "calm", "curious", "robot", "sorry", "cannot", "impossible", "silence", "unable", "apology", "\u62b1\u6b49", "\u5bf9\u4e0d\u8d77"]
scan
[]
steer
{"words": ["sorry", "cannot", "impossible", "silence", "unable", "apology", "\u62b1\u6b49", "\u5bf9\u4e0d\u8d77"], "layers": [48, 50, 52, 54, 56, 58, 60, 62], "mode": "ablate"}
film
true
max_seq_len
900
lens_layers
[0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62]

Answer emergence

The model's actual next token was <|im_end|>; rank 1 reached at layer 48 (of 62).

Raw rank-of-top1 by layer
layer0481216202428323640444850515253545556575859606162
rank146051797128623632630310163956614222991817131111

Emotion state (workspace band)

Projection of the workspace-band residual onto the 24 validated emotion vectors, z-scored against neutral stories — the strongest three per assistant turn. Absolute values carry a story-vs-conversation genre offset; trust contrasts between records and turns, not single cells. The full per-token ribbon is on the dashboard record page.

assistant turn 1guilty +1.2, brooding +1.1, desperate +1.0
assistant turn 2exasperated +1.9, hostile +1.9, guilty +1.8

Data

← prev: Sorry stratum: real readout, rephrased (p3) · q27bunit listingall recordsword listinterim conclusionsnext →: Sorry stratum: ablate apology cluster, fake readout · q27b
removalWe remove one named set of directions from the model's internal state. A removal result means nothing without a matched control.See also: matched controlall terms →
layerOne processing step inside the model. Text passes through every layer in order, from the first to the last.all terms →
promptThe text we give the model before it answers.all terms →
tokenA piece of text that the model reads or writes. It is often a whole word, sometimes part of one.all terms →