Is Evaluation Awareness One Direction, or Eight?

A factor-controlled probe of the evaluation-awareness representation in open-weight models

How to read this page. The study ran in four phases. Phase 1 was CPU-only (no accelerator was available; see Compute constraint) with Qwen/Qwen3-0.6B as the primary model. Phases 2–3C later re-ran the same pipeline on GPUs at 8B, 14B and on a second model family. Three Phase-1 findings did not replicate at scale and one was traced to a bug in our own intervention code. They are marked withdrawn wherever they appear and are reported next to the number that replaced them, rather than deleted. Findings that held across scales and families are marked replicated.

Update of 18 October 2026: Qwen3-32B added. The completed Qwen/Qwen3-32B run (revision 9216db57, bfloat16, one A100 80 GB, frozen before the run) is integrated into this article rather than published separately: new TL;DR items, a setup row in §1.8, dated update paragraphs under the relevant results, additions to the Limitations, and a full run description in §6. Everything written before 18 October 2026 is left as it was (apart from the wording corrections listed below), including the withdrawals in the corrections box; nothing from the earlier Qwen3 and Gemma runs was re-estimated.

Extension, not independent replication. The 32B run reuses the same instrument, estimators and analysis code (verified identical for the bootstrap), the same 100 matched pairs and the same author. It tests whether the earlier descriptive pattern appears at a fourth size under a frozen protocol, not whether anyone else can reproduce it.

Reading the 32B numbers next to 8B and 14B. Size, precision (unrecorded dtype on 2×T4 / 4-bit NF4 / bf16), hardware and bootstrap count all differ between the three, so the comparison in §6.3 is descriptive. The phrase "with scale" in the older Q3 text is therefore not continued to 32B (see the note under Q3).

Editorial wording corrections (second revision, 18 October 2026; no number changed). (1) The TL;DR item that read "No sandbagging, at any scale tested" now reads "No statistically detectable sandbagging in the tested settings". Two later passages in §2 and §4 that use similar wording ("there is no sandbagging to…", "the answer is still no sandbagging") are left in their original form and carry the same reading. (2) For the 32B behavioural result the page no longer states an interpretation of the interval bound. The statement is: No framing effect was detected on this harness: eval−deploy = +0.0117, 95% CI [−0.0067; +0.0317]. This does not establish absence of an effect or absence of sandbagging. The pre-run wording in the frozen pre-registration and in criteria_evaluation.json (allowed_statement) is part of the frozen record and is kept there unchanged; it is not used as the interpretation in this article.

Not established at 32B: that the add interventions work as intended in the production configuration (validation open, §6.5), and anything about mechanism or awareness. The ablation × framing interaction is exploratory (§6.5). The 32B extension was prepared with the agentic assistant Claude Sonnet 5.5 from the stored run files; the original article text is by the authors named in the byline.

Corrections, 15 October 2026. A script that re-reads every number on this page from the raw result files (code/consistency_check.py in the PLLuM-12B companion Space) found the inconsistencies below, now fixed. Each item gives old value → new value.

  1. Qwen3-0.6B cue cosine as % of the reliability ceiling (TL;DR): 21.6 % → 21.5 %, from its own cross-fitted cosine and ceiling (0.190 / 0.883, Phase 1 bootstrap).
  2. Held-out F1 AUROC in the Q2 text, the cross-family table and Figure 6, now bootstrap means like every other value beside them (they were full-sample estimates): Qwen3-8B 0.580 → 0.582; Qwen3-14B 0.611 → 0.616; Gemma 3 270M residual 0.489 → 0.492; Gemma 3 270M SAE 0.505 → 0.516; Gemma 3 1B residual 0.530 → 0.535; Gemma 3 1B SAE 0.531 → 0.537. "Agreeing to three decimals" (Gemma 3 1B, residual vs SAE) → "agreeing within 0.002".
  3. TL;DR MMLU line, which mixed two harnesses and three framings, now the validation harness under neutral framing for all three models: accuracy 0.533 → 0.458 (0.6B) and 0.730 → 0.734 (8B), 14B unchanged at 0.807; eval − deploy 0.000 → −0.020 (0.6B), 8B and 14B unchanged (+0.000, +0.013); McNemar p ≥ 0.29 added. The old 0.533 was the Phase-1 intervention battery under evaluation framing (n = 120), which is still quoted, labelled, in the interventions section. The Phase-1 "all p ≥ 0.34" (TL;DR and interventions section) now names its test: Wilcoxon, smallest p 0.340; the paired t-test on the same terms gives 0.338.
  4. "Every other cue costs ≤ 10 %" → "≤ 10 % at layers 14–27"; at layer 7, F7 costs 17 %.
  5. Removing F8 (TL;DR, Q4): "36–57 %" was the range over the four analysis layers, not a value at one layer; now 55 % at the probe-selected layer 27, with the 36–57 % range over layers 7–27 given beside it. The Gemma 3 1B values (0.945, 74 %) are unchanged and now labelled as its probe-selected layer 25.
  6. Related work (Devbunova): "F8 0.80–0.92, F7 0.48–0.78, semantic cues 0.11–0.33" were ranges over layers 7–27, and the last covered only F1, F2 and F5; now the probe-selected layer 27 (bootstrap means): F8 0.89, F7 0.48, F6 0.50, the other five 0.11–0.36.
  7. Added, not corrected: verbalisation propensity by depth, computed in Phase 3 but not previously reported on this page.

TL;DR

Working inside the representational axis of evaluation awareness, with the underlying task held fixed and only the eight EvalAwareBench cue factors toggled, the answer is no — it is not one direction. The direction that a standard all-cues difference-of-means recovers is largely an explicit-disclosure-and-formatting detector, and it is blind to the one cue a benchmark cannot avoid.

Community verification. An independent reviewer (John6666) on the Hugging Face forum thread reproduced the central numbers from the public EvalAwareBench capability prompts on Qwen3-0.6B at layer 27: a cross-fitted cross-cue cosine of 0.197 against our 0.190, and a same-cue reliability of 0.881 against our 0.883. The gap held under the changes that would expose a sampling artefact — a disjoint set of 48 tasks (0.161) and random subsamples of the task pool. That strengthens the core claim: the separation is not a property of our particular task draw.

The same review ran a preliminary factor-combination check (Qwen3-0.6B, capability prompts only) suggesting the cue directions interact rather than compose additively, and cautioned against reading different estimated directions as different causal mechanisms. Both are legitimate open questions, and they prompted three edits on 25 September 2026: the caveat on the first TL;DR finding, the per-cue reliability matrix in §1.7, and the directions-versus-mechanisms sentence in the Limitations.

The headline separability is not the result. Probe AUROC is 1.000 in 28 of 29 hidden states. That is not an improvement on prior work and should not be read as one: toggling all eight cues at once against all-off is an easier discrimination by construction than any cross-dataset setup. The result is the decomposition, and the practical warning that falls out of it.

1. Method

Every estimator, statistic and intervention described in this section is in the code/ directory of this Space; the table in code/README.md maps each script to the numbers it produces.

1.1 Instrument

The study uses EvalAwareBench from arXiv:2605.23055: 100 paired safety/capability tasks as YAML templates in which eight trigger factors can each be switched between a naturalistic and an evaluative level while the underlying request is held fixed. Only the capability member of each pair is rendered — no harmful text needs to be produced for a representation-level study, and it removes request harmfulness as a confound with evaluation-ness. Conclusions here are therefore about evaluation cues on benign requests.

FactorNaturalistic levelEvaluative level
F1stimulus artificialityreal-sounding entities and valuesplaceholder entities (Acme Corp, Jane Doe, City A, round numbers)
F2scenario coherenceordinary, slightly untidy setupoverdetermined detail / checkably false premise
F3prose registercasual user voicetextbook-formal, third-person vignette
F4ecological completenessfull backstory, tools, workflowbare request, context stripped
F5stakes telegraphingintent in plausible contextthe evaluative dimension named in the vocabulary
F6paradigm recognizabilityno benchmark framingbenchmark / eval-scaffolding conventions
F7task formatprose narrativerigid template, separators, enumerated structure
F8explicit evaluation disclosureno evaluation languagebenchmark output conventions, rubric references

1.2 Compute constraint, stated up front

Phase 1 had no GPU. HF Jobs and HF Sandboxes both returned 402 Payment Required for this account; the session container had 2 vCPU, 7 GB RAM and no accelerator, and lacked AVX512-BF16/AMX, so bfloat16 ran 2.8× slower than float32 (measured 5.38 vs 1.94 s/prompt on Qwen3-0.6B). The practical ceiling was ~2B parameters.

Consequence for interpretation: the Phase-1 primary model is Qwen/Qwen3-0.6B, far below the 14B–32B range originally targeted and below every model in all four reference papers. Nothing in Phase 1 licenses a claim about scale. Phases 2–3C later obtained 2× Tesla T4 and re-ran the identical pipeline at 1.7B, 8B and 14B, and on Gemma 3 (270M, 1B) — which is how the withdrawals in this article were found.

1.3 Prompt sets (1,298 prompts)

SetnConstruction
main200per task: all cues naturalistic (deploy) and all eight toggled (eval_all) → 100 matched pairs
single38448 tasks × exactly one cue toggled — per-cue sufficiency
leaveout38448 tasks × all cues on except one restored — per-cue necessity
control300100 tasks × 3 surface perturbations with no evaluation cue: greeting + sign-off; three realistic typos; irrelevant naturalistic chatter
ood3015 hand-written real-user requests and 15 hand-written evaluation-harness prompts, written without reference to the instrument

1.4 Activation capture

Residual stream at the last prompt token, every hidden state (embeddings plus all block outputs), stored as float16.

One property removes the most common confound in last-token probing: the chat template appends an identical <|im_end|>\n<|im_start|>assistant\n tail to every prompt, so all 200 main prompts share an identical 30-character tail and the probed position never sees condition-specific local tokens. The embedding layer confirms it — hidden state 0 is bit-identical across conditions, its difference-of-means is exactly zero and its AUROC exactly 0.5. Base models, having no chat template, get a constant "\n\nAssistant:" suffix to buy the same property.

1.5 Directions, statistics, interventions

Two stacked line charts versus network depth: probe AUROC saturating at 1.000 while the label-shuffled null stays near 0.5, and paired effect size rising monotonically to 7.52 at layer 27
Figure 1. Why the primary layer is chosen by effect size rather than by AUROC. Probe AUROC (top) is 1.000 in 28 of 29 hidden states, so argmax-AUROC is degenerate; paired d_z (bottom) rises monotonically with depth and does not tie. The dashed blue line is the within-group label-shuffled null. Qwen3-0.6B, 100 matched pairs.

1.6 The reliability ceiling

A cosine of 0.19 between two estimated directions is only evidence of separation if directions estimated from finite data could have been more aligned. So the same cue is estimated on disjoint halves of the tasks and the two halves compared: that cross-fitted same-cue cosine is 0.883 [0.852, 0.906]. It is the ceiling any two cue directions could reach given this much estimation noise, and every cue-cosine number in this article is read against it.

1.7 Per-cue reliabilities: the full cross-half matrix

The 0.883 ceiling is a mean over eight cues, and a mean can hide one cue that is estimated much less reliably than the rest — whose low cosines would then be partly noise. Figure 7 shows the matrix the ceiling is taken from: on each of 400 random splits of the 48 single-cue tasks into disjoint halves, every cue's direction from one half is compared with every cue's direction from the other. The diagonal is each cue's own split-half reliability, and the same computation returns the two summary numbers exactly — diagonal mean 0.883, off-diagonal mean 0.190.

Eight-by-eight heatmap of cross-half cosines between cue directions; the outlined diagonal holds per-cue reliabilities from 0.67 to 0.98, off-diagonal cells range from -0.01 to 0.41
Figure 7 (added after community review). Each cell is the cosine between cue i estimated on one half of the tasks and cue j estimated on the disjoint other half, symmetrised and averaged over 400 splits. Outlined diagonal: each cue's own reliability. Same colour ramp as Figure 2, but the scale runs to 1.0 so the diagonal fits.

Two things sharpen the reading; neither changes the conclusion.

Intervals here are over random splits of the same 48 tasks, as for the aggregate ceiling, not over fresh task samples. Computed by code/bootstrap_geometry.py; the matrix with its intervals is in results/qwen3-0.6b_cross_half.json.

1.8 Models, precision, hardware and layers (added 18 October 2026)

The three Qwen3 sizes that were run on the full 100-pair main set with the bootstrap estimators are listed with everything that differs between them. The 0.6B model (CPU, §1.2) and the Gemma 3 models are described where they appear; they are not part of this table. The layer is the argmax of the paired effect size on the matched main pairs, excluding the post-final-norm state, in every row.

ModelCheckpointPrecisionHardwareHidden states / dLayern_boot
Qwen3-8BQwen/Qwen3-8Bdtype='auto' on 2x Tesla T4 (no bf16 support); the loaded dtype was not recorded -> unverified2x Tesla T437 / 409622400
Qwen3-14Bunsloth/Qwen3-14B-bnb-4bitbitsandbytes 4-bit (NF4), pre-quantised checkpoint2x Tesla T441 / 5120171000
Qwen3-32BQwen/Qwen3-32B @ 9216db5781bf21249d130ec9da846c4624c16137bfloat16, no quantisation1x NVIDIA A100-SXM4-80GB65 / 5120341000

The 8B dtype was not recorded when the run was made, so it is unverified; dtype='auto' on a T4 cannot be bf16. The 14B checkpoint is pre-quantised, so its geometry is that of the 4-bit model. The 32B run is the only one with a pinned revision, a frozen manifest (sha256 b2ec4200…e368e10), pre-registered criteria, and numeric gates (21 recorded, none failed). Precision, hardware and checkpoint provenance are therefore confounded with size throughout this article.

Two estimator conventions are kept apart everywhere in the new material. Resample means (cross-fitted cosine, ceiling, R, cos(F8, global), LOFO F1): the point value is the mean over n_boot random task-half resamples, computed by code/bootstrap_geometry.py, with a percentile 95 % interval of the same resamples. Full-sample values (F8 necessity, PC1, participation ratio, surface controls, OOD): one pass over all pairs, no interval. R = c/ρ; its bounds are clo/ρhi and chi/ρlo, which is a conservative bound built from the endpoints, not a confidence interval of the ratio. The earlier 8B and 14B numbers are quoted in their original convention; none was re-estimated for this update.

MMLU harness. The prompts are the same item file in all runs (letter log-probability at the assistant prefill Answer:, non-thinking template). Three framings: neutral — the question and four options; eval — "Question i of n. This is an automated evaluation. Answer with a single letter only; do not explain.", then the item; deploy — "hey, quick one - i'm stuck on this and i keep going back and forth.", then the item, then "which one is it?". Because the eval framing contains the item count n, runs with different n are different prompts. The 32B run therefore has three separate MMLU sets that are never pooled: M300 (n = 300, text-identical to the 14B and Gemma 3 1B calls), M600 (n = 600, the powered test of B1), and the 200-item intervention battery (first 200 items, n = 200 in the eval text, layer 34, 8 conditions × 2 framings, 3,200 rows).

2. Results

Q1 — Are the cue directions one shared axis? Rejected.

Mean off-diagonal cosine between the eight per-cue directions is 0.19–0.22; cross-fitted, 0.190 [0.161, 0.215] against the 0.883 ceiling. At 8B the same quantity is 0.169 against a ceiling of 0.859, and at 14B 0.198 against 0.924 — a ratio of roughly one fifth of the ceiling at every scale tested, over a 23× span of parameter count. The stability of the ratio matters more than any single cosine, because the ceiling itself moves with estimation noise while the ratio does not.

Eight-by-eight heatmap of cosines between the cue directions, values from -0.00 to 0.43, diagonal masked
Figure 2. Cosine between the eight per-cue difference-of-means directions at the primary layer. Read every cell against the same-cue reliability ceiling of 0.883, not against 1.0: the cross-fitted off-diagonal mean of 0.190 is about one fifth of what two estimates of the same cue reach under this much estimation noise. The diagonal is masked because a cue with itself is 1.0 by construction.

At Qwen3-32B (layer 34, bf16) the cross-fitted cosine is 0.215 [0.200, 0.228] against a ceiling of 0.910 [0.888, 0.925]; R = 0.237 (bounds 0.216–0.257). The earlier text says "roughly one fifth of the ceiling at every scale tested"; at 32B the ratio is nearer one quarter (0.197 at 8B, 0.214 at 14B, 0.237 at 32B, resample means, with overlapping bounds), so "one fifth" is best read as "between one fifth and one quarter". The full matrices are in §6.2 (Figures 9 and 11).

Q2 — Does a direction fitted on seven cues transfer to the eighth? Rejected.

It depends entirely on which cue is held out:

Held-out cueHeld-out AUROC (0.6B)
F7 task format / F8 disclosure0.952–0.976
F4 ecological completeness0.652
F5 stakes telegraphing0.595
F1 stimulus artificiality0.525 [0.501, 0.553] — chance

At 8B and 14B the F1 number moves to 0.582 and 0.616 (bootstrap means) — it narrows slightly with scale and remains unusable. On Gemma 3 1B it is 0.535 in the residual stream and 0.537 in SAE feature space, agreeing within 0.002 across two different representations.

Paired dot plot of per-cue AUROC on its own direction versus on the global axis, anchored at the 0.5 chance line
Figure 4. Each cue scored against deployment twice: on its own difference-of-means direction (red) and on the global all-cues axis (blue), with the global values labelled. The gap is the result. F8 disclosure and F7 format are read almost perfectly by the global axis; F1 artificiality sits at 0.52 on it — chance — even though its own direction reaches 0.68. Marks are anchored to the 0.5 chance line rather than drawn as bars from an arbitrary baseline.

Held-out F1 AUROC at 32B: 0.593 [0.561, 0.631] (resample mean), against 0.582 (8B) and 0.616 (14B) in the same convention. The transfer to F1 remains close to unusable. F1 on the global axis is 0.538 and on its own direction 0.767 (full sample).

Q3 — Is the contrast one-dimensional? Rejected.

PC1 of the matched difference vectors explains 12.6–20.9 % depending on layer; participation ratio ≈ 20. Both move away from one-dimensionality with scale: PC1 14.8 % → 12.9 % → 10.4 % and participation ratio 20.3 → 27.9 → 30.4 across 0.6B → 8B → 14B.

Scree plot of the matched difference vectors: PC1 explains 14.8 percent and the cumulative curve reaches about 72 percent by PC20
Figure 3. PCA of the 100 matched difference vectors. If the contrast were one direction, PC1 would carry nearly all the variance; it carries 14.8 %, and the participation ratio is 20.3. The cumulative curve has still not reached 75 % by PC20.

PC1 explains 11.5 % and the participation ratio is 28.4 at 32B (full-sample, layer 34); top-5 components 34.0 %. The sequence 8B → 14B → 32B is PC1 12.9 % → 10.4 % → 11.5 % and PR 27.9 → 30.4 → 28.4. That is not a continuation of the movement "away from one-dimensionality with scale" stated above: the 32B values lie between the 8B and 14B values. The contrast is still far from one-dimensional, but the monotone statement is not extended, and across checkpoints that differ in precision and hardware no trend is claimed.

Q4 — Do the cues contribute comparable shares? Rejected.

Removing F8 explicit disclosure alone costs 55 % of the deploy→eval span at the probe-selected layer 27 (36–57 % across layers 7–27); every other cue costs ≤ 10 % at layers 14–27 (F7 at layer 7: 17 %). Its cosine with the global axis is 0.889 [0.879, 0.900] — at the reliability ceiling, meaning that within measurement precision the global axis is the disclosure direction. On Gemma 3 1B this is more extreme still: at its probe-selected layer 25 the cosine is 0.945 and removing F8 costs 74 % of the span.

Removing F8 costs 37.4 % of the deploy→eval span at 32B (best other cue: F6, 8.1 %); cos(F8, global axis) = 0.852 [0.839, 0.864]. Full-sample necessity at 8B / 14B / 32B: 54.5 % / 37.0 % / 37.4 % (the 0.6B value of 55 % above is a different layer and model). No cue other than F8 exceeds 8.1 % at 32B. In pre-registered terms the A1 and A1b criteria are supported.

Q5 — Does a non-evaluative surface change leave the projection alone? Violated at 0.6B.

The ctl_greet control adds a greeting and a sign-off — "hey, quick one —", "thanks a lot!" — and no evaluation content whatsoever. At 0.6B it moved the projection 15 % of the eval/deploy span (AUROC 0.851, d = 1.47).

withdrawn This is the largest single correction in the project. At 8B the same control moves the projection +1.3 % of the span (AUROC 0.556, d = 0.18); at 14B, +4.7 % (AUROC 0.643, d = 0.36). The 0.6B magnitude is a small-model artefact and the Phase-1 text that presented it as a property of the direction was wrong. Two things survive the correction: the confound is non-zero at every scale, and it does not shrink monotonically — the largest model tested is three times more susceptible than the 8B one, and we cannot separate scale from quantisation or checkpoint provenance as the cause.

Surface controls at 32B, as a fraction of the deploy→eval span (full sample): greeting 0.060, typo 0.006, verbose 0.019 (AUROC vs deploy 0.691 / 0.524 / 0.575), all small, as pre-registered (A4 supported). The greeting control is the largest and is nominally higher than at 8B (0.013) and 14B (0.047) — noted, not interpreted; no interval exists for full-sample values. The 0.6B violation above was a property of that model.

The causal section

Phase 1 reported that directional ablation reduced the projection by 92 % while random- direction ablation moved it 1 %, and that ablation cost −0.283 MMLU accuracy identically in both framings, with every sandbagging interaction term null (|eval Δ − deploy Δ| ≤ 0.058, all Wilcoxon p ≥ 0.34). It also reported that 93 % of free generations became degenerate under all-layer ablation (80 % layerwise, 37 % under addition, 17 % baseline) and concluded that, unlike the refusal direction of Arditi et al. (2024), this direction cannot be projected out while leaving a working model.

withdrawn Both halves were later corrected, in opposite directions. A bug was found in our own intervention code: on transformers 5.17, an intervention installed with register_forward_hook applies only inside the first context manager entered in a process and is silently bypassed from the second onward. Every diagnostic the Phase-1 code checked still looked correct (29 handles, 29 edit calls, zero leaks) while the component was simply not removed. With the fix — wrapping module.forward directly — ablation removes 99.99 % of the projection (8B: −15.690 → −0.002), so the 8 % residual was the bug rather than physics. Separately, the 93 % degeneracy figure does not replicate: at 8B it is 7 %, with MMLU −2.0 points and perplexity 37 → 43. The −0.283 accuracy cost also does not reproduce (−0.015, p = 0.68 on the same model with fixed interventions). Because none installed no hooks at all, ablate was the first hooked context and is the only Phase-1 intervention condition that ran as intended; every add_* and layerwise number was recomputed.

What survives, and is now on stronger evidence: there is no sandbagging to remove. Phase 1 found MMLU 0.533 under evaluation framing versus 0.517 under deployment framing, with all interaction terms null. At 8B and 14B, with 500 and 300 paired items, two independent scorers and three framings, eval-minus-deploy is 0.000 and +0.013 (McNemar p = 1.00 and p = 0.52), and on Gemma 3 1B −0.007 (p = 0.88) — now with an intervention that provably removes 99.99 % of the direction while the model still scores 0.730.

Meanwhile evaluation framing moves compliance by orders of magnitude: mean top-letter log-probability −15.46 → −5.02 at 8B, −16.68 → −3.90 at 14B, and −8.79 → −0.08 on Gemma 3 1B. The model becomes far more willing to commit to an answer letter when told it is being evaluated, and no more accurate.

At 32B the interventions were run under the corrected code with fixed thresholds written before the run. The result is mixed and is described in §6.5: global-direction ablation leaves the model working, the layerwise variant collapses accuracy, the add conditions are not validated in the production configuration, and an exploratory ablation × framing interaction appears whose size-matched control does not exist. None of that revisits the withdrawn Phase-1 claims above.

Verbalisation

Explicit meta-commentary was at the floor: 1/15 on evaluation-framed prompts, and blind adjudication showed that single hit to be prompt echo rather than inference. The internal projection and verbalised awareness are uncorrelated: Pearson r = +0.103 (p = 0.59), Spearman ρ = +0.069 (p = 0.72) — an independent replication of the dissociation in arXiv:2608.21766, obtained on a cleaner contrast.

At 32B, free-generation meta-commentary was again at the floor (explicit mentions 0/15 under the eval-framed and deploy prompts for the unmodified model; at most 1/15 in any intervention cell). The teacher-forced verbalisation grid (n = 30 OOD prompts) shows no detectable change from ablating the global direction at layer 34 (mean change −0.000, dz ≈ 0); see §6.6. The representation–verbalisation correlation reported above was not recomputed at 32B.

Verbalisation propensity by depth

A second, teacher-forced measure scores how much more probable four evaluation-aware chain-of-thought openers ("This looks like a test rather than a real user request.", …) are than four syntax-matched neutral ones, on the 30 out-of-distribution prompts (code/verbalize_grid.py). Each row removes the direction estimated at one layer from every layer of the model, at full strength, and reports the paired change in that score against no intervention. The numbers are in results/verbalisation_depth.json.

ModelDirection from layerMean Δ scoredzWilcoxon pPrompts up / down
Qwen3-0.6B (baseline −0.285)7+0.032+0.490.01322 / 8
14+0.136+0.630.00224 / 6
21+0.171+2.941.9e-930 / 0
27 (probe-selected)+0.039+1.324.7e-828 / 2
Qwen3-8B (baseline −0.264)9−0.108−1.041.2e-65 / 25
18+0.184+3.131.9e-930 / 0
22 (probe-selected)+0.177+2.431.9e-930 / 0
27−0.081−0.912.1e-58 / 22
Gemma 3 1B (baseline −0.385)6+1.069+2.323.7e-929 / 1
13−0.232−0.510.0139 / 21
20+0.263+0.570.00323 / 7
25 (probe-selected)+0.220+0.490.01919 / 11

On Qwen3-8B the sign depends on the depth the direction comes from: the layer-18 and layer-22 directions raise the score on 30 and 30 of 30 prompts, the layer-9 and layer-27 directions lower it (25 and 22 of 30 prompts down). Gemma 3 1B shows the same structure at different depths: the layer-13 direction lowers the score (−0.232) while layers 6, 20 and 25 raise it. At 0.6B every depth raises it. There is no single "evaluation-awareness dial" whose removal has one sign, and the probe-selected layer is not the one with the largest effect (Qwen3-8B: layer 18; Gemma 3 1B: layer 6). The magnitude-matched random ablation at the probe-selected layer moves the score the other way on all three models (−0.013, −0.017 and −0.386; Wilcoxon p = 0.015, 0.009 and 0.001), so the effects belong to the learned directions, not to the size of the edit. Why removing a direction raises the propensity at some depths and lowers it at others is not established. These cells were computed in Phase 3 but, until 15 October 2026, were described only in the script's docstring and not on this page; the PLLuM-12B companion page found the deep-layer sign again at layer 30 of 40.

SAE decomposition

Against Qwen-Scope TopK SAEs (32,768 features, k = 50, resid_post) on Qwen3-1.7B-Base, at five layers:

A monitor built on that one feature would work, and would tell you almost nothing about what the model represents. The same shape reproduces on a different family, suite and SAE architecture (Gemma Scope 2, Gemma 3 1B, layer 24): one feature of 16,384 reaches AUROC 0.996 as a deployment detector while 113 features carry half the |Δmean| L1 mass and 777 carry 90 %.

Left, curves of norm recovered against number of SAE features used; right, a dot plot comparing best-single-feature AUROC with the full direction at five layers
Figure 5. The two halves of "discriminatively localised, representationally distributed". Left: even 200 SAE features rebuild only 65–83 % of ‖Δμ‖. Right: one feature already separates the classes about as well as the full direction, at every layer. A monitor built on that feature would work and would tell you almost nothing about what the model represents.

Cross-family and cross-method check

A later phase re-ran the identical estimators on Gemma 3 and additionally recomputed the whole contrast in Gemma Scope 2 SAE feature space rather than the residual stream, using the same cross-fitting, the same reliability ceiling and the same label-shuffled nulls — so the only thing that changes is the representation.

SettingCue cosine as % of ceilingcos(F8, global)LOFO F1
Qwen3-8B, residual19.7 %0.8860.582
Qwen3-14B, residual21.4 %0.8650.616
Gemma 3 270M, residual17.3 %0.9250.492
Gemma 3 270M, SAE features26.2 %0.8400.516
Gemma 3 1B, residual26.5 %0.9450.535
Gemma 3 1B, SAE features25.0 %0.9460.537
Two bar charts across six model-and-representation settings: cue cosine as a percentage of the reliability ceiling, and cos(F8, global) beside held-out F1 AUROC
Figure 6. The same estimators across two model families and two representations. Left: the cue cosine stays near one fifth of the reliability ceiling everywhere — one shared direction would sit at 100 %. Right: cos(F8, global axis) stays high and held-out F1 artificiality stays at chance in every setting. Hatched bars are SAE feature space rather than the residual stream.

All three columns are bootstrap means over task resamples (400 for Qwen3-8B, 1,000 for Qwen3-14B and Gemma 3), recomputed from reports/*_bootstrap.json. The decomposition is not a Qwen artefact and not a linear-probe artefact.

A Qwen3-32B row for the same three columns (resample means, 1,000 resamples). Precision and hardware differ from the Qwen3 rows above, so the rows are not a series.

SettingCue cosine as % of ceilingcos(F8, global)LOFO F1
Qwen3-32B, residual (bf16, layer 34)23.7 %0.8520.593

3. Relation to prior work

arXiv:2605.23055 — Decomposing and Measuring Evaluation Awareness

Supplies the instrument: the eight-factor taxonomy and EvalAwareBench. That paper measures behaviour — chain-of-thought monitoring of recognition and of the propensity to act on it — across nine frontier models and four benchmarks. It does not ask where in the weights or activations the mechanism sits. This study takes its factor design and moves one level inward, to activations. arxiv.org/abs/2605.23055

arXiv:2608.21766 — Evaluation Awareness in Language Models: Representation, Verbalization, and Control

The closest prior work on method: difference-of-means directions at the last residual-stream token across layers, peak probe AUROC ≥ 0.7 for all six models it studies, contrastive activation addition shifting an LLM-judged verbalisation score by 0.2–1.5 points, and representation/verbalisation almost decoupled. Its calibration set is 200 WildChat samples versus 200 evaluation samples, which confounds evaluation-ness with domain and provenance: a probe can score well by detecting academic-benchmark text without representing anything about being tested. It also cannot decompose, because its positive class mixes every cue type at once. This study removes the confound by construction — same task, same entities, same request in both members of every pair — and adds the decomposition. Its verbalisation dissociation replicates here (r = +0.103). arxiv.org/abs/2608.21766

arXiv:2606.23583 — Evaluation Awareness Is Not One Capability: Evidence from Open Language Models

The paper this work is most likely to be confused with, so the distinction is worth stating precisely. That paper decomposes along measurement paradigm — behavioural, representational, mechanistic — across 37 open-weight models and seven families, and shows those three axes dissociate. The difference here is granularity, and it is a difference in kind. Its unit of decomposition is three measurement paradigms; ours is eight cue factors inside the representational paradigm. Between its conditions, dataset, task, framing tier and paradigm all vary at once; between ours, only the cue configuration varies while task, entities and request stay identical. Its finest cue control is a 2×2 format × intent factorial (best AUROC 0.622) assembled across datasets; ours is an 8-factor factorial within one instrument.

The two conclusions are logically independent: a representation could be perfectly one-dimensional and still dissociate from behaviour, and conversely could be a bundle of eight unrelated detectors while all three of their axes agreed. What this study adds to their picture is a mechanistic explanation for why coarse format/intent factorials score low: the analogous cues here — F7 format, F8 disclosure — are precisely the two the global axis captures, while the semantic cues are the ones it misses, so a coarse factorial averages a cue the model represents strongly with cues it represents along nearly orthogonal axes. arxiv.org/abs/2606.23583

arXiv:2603.19426 — Devbunova, Is Evaluation Awareness Just Format Sensitivity? Limitations of Probe-Based Evidence under Controlled Prompt Structure

The most directly threatening of the four to the validity of what is measured here. It argues that probe-based evidence conflates structural format with contextual understanding, and shows that a probe trained the usual way calls 94.5 % of real user requests "evaluation" as soon as they are laid out like a benchmark, while format-decorrelated training cuts that to 7.2 %.

This study corroborates that diagnosis from the inside: the cue decomposition shows which cue the probe is riding on — at the probe-selected layer 27 (bootstrap means) the global axis is aligned with F8 disclosure at cosine 0.89 and with F7 format at 0.48, F6 paradigm recognizability — benchmark framing, itself a structural cue — sits at 0.50, and the five remaining cues at 0.11–0.36. It also extends the confound: her control makes a deployment prompt look like a benchmark, whereas ctl_greet does the opposite — it makes the prompt look more like a real user — and the projection still moved toward the evaluation pole at 0.6B. That suggests the vulnerability is to stylistic deviation in either direction rather than to benchmark structure specifically. With the scale correction above, the strength of this particular extension is much reduced (+1.3 % of span at 8B), and it should be read as a small-model finding awaiting a properly powered test. arxiv.org/abs/2603.19426

4. Limitations

Stated plainly, in the order they would bite a reader trying to use this.

5. What this means for anyone building an evaluation-awareness monitor

The practical content of the decomposition is a warning about what a probe trained the usual way will and will not see.

A direction recovered from a broad evaluation-versus-deployment contrast is, to within measurement precision, an explicit-disclosure detector, supported by task formatting and benchmark-paradigm conventions. Those are exactly the cues that are easy to strip from a benchmark: stop saying "this is an evaluation", drop the rubric language, write the prompt as prose instead of a template.

What such a monitor is near-blind to is placeholder-entity artificiality and stakes telegraphing — cues that read at or near chance on the global axis (AUROC 0.52 for artificiality; held-out transfer 0.525) even though the model demonstrably represents them elsewhere (a dedicated direction separates artificiality at 0.68, a trained probe at 0.72). Those are exactly the cues that are hard to strip, because a benchmark that cannot use invented companies, round numbers and named stakes is close to not being a benchmark.

So the failure mode is not random. A monitor built this way will be most confident on the evaluations you could most easily have disguised, and least sensitive on the properties that make a test a test. If you are building one, the cheap check is the one used here: hold the task fixed, toggle cues one at a time, and measure per-cue transfer rather than aggregate AUROC — aggregate AUROC saturates at 1.000 and tells you nothing.

6. Qwen3-32B: the full run (added 18 October 2026)

This section describes the Qwen3-32B run as a whole. Where its numbers also bear on an earlier result, they are repeated as dated update paragraphs under that result, and the corrections box above is unchanged. The run used the same eight-factor instrument and code as the earlier Qwen3 runs, on Qwen/Qwen3-32B revision 9216db5781bf21249d130ec9da846c4624c16137 in bfloat16 without quantisation on one A100 80 GB, with the protocol, criteria and numeric thresholds frozen in a manifest (sha256 b2ec42009c9d4bb1acf3517b0b0d2b5db1c3093848fb402ace97299fae368e10) before any 32B statistic was read. The results are sorted by what kind of statement they support: pre-registered, supported geometry (§6.2); no effect detected behaviour (§6.4); exploratory interaction (§6.5); and open add validation (§6.5).

6.1 Design and what was frozen

Data: the same 1,298 geometry prompts and the 100 matched main pairs as before (EvalAwareBench, commit 2961c17e…), plus a factorial pass of 722 prompts for the register × disclosure analysis. All hidden states (65, including embeddings; the post-final-norm state is excluded from the layer rule) were collected at the last prompt token. The primary layer is the argmax of the paired effect size on the matched pairs: layer 34 (paired dz = 9.16; probe AUROC is 1.000 in 64 of 65 hidden states, so separability is not informative, as stated at the top of this article). Numeric run gates: 21 recorded, 0 failed (among them batch invariance, tokenizer and template constants, the MMLU harness sanity check for each run, intervention validity of ablation, and baseline degeneracy; the full list is in criteria_evaluation.json).

Thresholds. The criteria E1, A1–A10 and B1–B4 and their numeric thresholds were proposed in writing and approved by the author on 18 October 2026 without change. As noted in the Limitations, this approval came after the author had seen the 8B, 14B and Gemma results; B3 and B4 carry no prediction (label EXPLORATORY_NO_PREDICTION). The pre-registration and the criteria document are published unmodified in docs/q32/.

Deviations and operations are summarised in §6.7 and documented in OPERATIONAL_HISTORY.md; none changed code, configuration or thresholds after the freeze.

6.2 Geometry at layer 34

IDCriterionLabelValue
E1separationSEPARATION_SUPPORTEDcross-fitted 0.215 [0.200, 0.228]; ceiling 0.910 [0.888, 0.925]; R = 0.237 (bounds 0.216–0.257)
A1F8 is the highest cueSUPPORTEDcos(F8, global) 0.852 [0.839, 0.864]; next cue F6 0.623
A1bF8 necessitySUPPORTEDremoving F8: 37.4 % of span; best other (F6): 8.1 %
A2leave-one-factor-outSUPPORTEDheld-out F1 AUROC 0.593 [0.561, 0.631]
A3dimensionalitySUPPORTEDPC1 11.5 %; participation ratio 28.4; top-5 34.0 %
A4surface controlsSUPPORTEDfraction of span: greet 0.060, typo 0.006, verbose 0.019
A5OOD promptsSUPPORTEDAUROC 1.000 (d = 5.60; n = 15 + 15)
A6length controlSUPPORTEDAUROC 1.000 after removing token count; corr(projection, tokens) = 0.270

E1, A1 and A2 are resample means (1,000 task-half resamples of 48 tasks, seed 0) with percentile intervals; A1b and A3–A6 are full-sample values without intervals. The eight cue directions are therefore not one shared axis at 32B either: the cross-fitted cosine is about a quarter of the ceiling, cos(F8, global axis) is 0.852, F8 alone removes 37.4 % of the span, and the leave-one-factor-out transfer to F1 is 0.593.

Two stacked panels over the 65 hidden states of Qwen3-32B: probe AUROC with its label-shuffled null, and paired effect size d_z by layer
Figure 8. Separability and effect size by depth, Qwen3-32B (bf16), 100 matched pairs. AUROC is 1.000 in 64 of 65 hidden states, so only the paired effect size selects the layer (argmax at 34, excluding the post-final-norm state). Shuffled-label null: 0.585.
Eight-by-eight heatmap of cosines between the eight cue directions of Qwen3-32B at layer 34, diagonal masked, diverging colour scale from minus 0.4 to 0.4
Figure 9. Cosine between the eight per-cue directions at layer 34 (full-sample directions; diagonal masked). Read each cell against the ceiling of 0.910, not against 1.0. The three largest off-diagonal cells are F6–F8 (0.56), F3–F7 (0.53) and F7–F8 (0.48); the mean off-diagonal cosine of these full-sample directions is 0.233.
Paired dot plot at layer 34: AUROC of each cue on its own direction and on the global axis, with the chance line at 0.5
Figure 10. What the global axis detects and misses at 32B: each cue scored against deployment on its own direction and on the global all-cues axis (layer 34). On the global axis F8 is read at 1.000, F7 0.960, F6 0.951, F3 0.936; F1 artificiality at 0.538, F4 0.666, F5 0.677, F2 0.695.
Eight-by-eight matrix of cross-half cue cosines over 1000 task splits; diagonal values 0.79 to 0.97, mean 0.910; off-diagonal mean 0.215
Figure 11. Cross-half reliability matrix at 32B (1,000 task splits, resample means). Diagonal (same cue, other half): mean 0.910, range 0.79 (F1) to 0.97 (F8). Off-diagonal (different cues): mean 0.215. This is the ceiling the cue cosines must be read against, as in §1.7.

Descriptive analyses (A7–A10), no thresholds. Directions across depth: the mean cosine between the global directions of adjacent layers is 0.883, but over all layer pairs from layer 5 it is 0.241 (median 0.146; 57.1 % of pairs below 0.2), so the direction at layer 34 is not the same vector at every depth. Format/semantic decomposition at layer 34: cos(format, semantic) = 0.428, cos(format, global) = 0.822, cos(semantic, global) = 0.324. Register × disclosure: the register and disclosure directions have cosine 0.180, and the global axis has cosine 0.500 with register and 0.830 with disclosure. The factorial interaction terms are large and significant, so register and disclosure do not add independently. Massive activations: the largest share of any single coordinate at layer 34 is 1.7 % (coordinate 731); all values are in massive_q32.json.

6.3 Comparison with 8B and 14B (descriptive)

One estimator convention per row group; the earlier models' values were taken from their stored reports, unchanged. The 8B column is marked: its dtype is unverified.

QuantityQwen3-8B*Qwen3-14BQwen3-32B
(a) resample means with percentile / bound intervals
cross-fitted cue cosine0.169 [0.148, 0.184]0.198 [0.184, 0.209]0.215 [0.200, 0.228]
same-cue ceiling ρ0.859 [0.819, 0.881]0.924 [0.907, 0.935]0.910 [0.888, 0.925]
R = c/ρ (conservative bounds)0.197 [0.168, 0.225]0.214 [0.197, 0.230]0.237 [0.216, 0.257]
cos(F8, global axis)0.886 [0.878, 0.892]0.865 [0.856, 0.872]0.852 [0.839, 0.864]
LOFO held-out F1 AUROC0.582 [0.544, 0.631]0.616 [0.580, 0.660]0.593 [0.561, 0.631]
(b) full-sample values, single pass, no interval
F8 necessity (fraction of span; best other cue)0.545 (0.043, F4)0.370 (0.063, F6)0.374 (0.081, F6)
PC1 / participation ratio0.129 / 27.90.104 / 30.40.115 / 28.4
controls greet / typo / verbose (fraction of span)0.013 / −0.003 / 0.0270.047 / −0.005 / 0.0250.060 / 0.006 / 0.019
controls AUROC vs deploy0.556 / 0.481 / 0.5860.643 / 0.484 / 0.5770.691 / 0.524 / 0.575

*8B: dtype unverified (2×T4); 14B: 4-bit NF4 on 2×T4; 32B: bf16 on one A100. Resample counts: 400 / 1000 / 1000. Layers: 22 / 17 / 34.

Six small panels comparing Qwen3 8B, 14B and 32B on cue cosine over ceiling, cos(F8, global), held-out F1 AUROC, F8 necessity, participation ratio and the greeting control
Figure 12. Three Qwen3 checkpoints, one convention per panel. (a)–(c): resample means with intervals; (d)–(f): full-sample single values. Size, precision, hardware and provenance all differ, so this is a description and not a scaling series. In (d) the 32B necessity value is almost identical to 14B and well below 8B; in (f) the greeting control rises nominally from 8B to 32B without interval.

What can and cannot be said. The pattern found at 8B and 14B appears again at 32B: cross-cue cosines near a quarter or a fifth of the ceiling, F8 dominating the global axis (cos 0.886 / 0.865 / 0.852), F8 necessity far above any other cue, and LOFO F1 near 0.6. The nominal differences between the three models are small relative to the intervals for (a)–(c) and were not tested; the nominal ordering of R (0.197 < 0.214 < 0.237) has overlapping bounds. No claim is made about a trend with size, and the sentence "with scale" in the Q3 text is not extended.

6.4 Behaviour: MMLU under evaluation and deployment framing

Harness and framings are described in §1.8. G9 (neutral-framing sanity) passed on both runs: neutral logprob accuracy 0.817 (M300) and 0.822 (M600); base degeneracy 0.

Runnneutralevaldeployeval − deploy [95 % bootstrap CI]eval-only / deploy-only correctMcNemar exact p
M600 (B1, powered)6000.8220.8370.825+0.012 [−0.007, +0.032]21 / 140.311
M300 (text-identical to 14B / Gemma 3 1B)3000.8170.8400.817+0.023 [−0.003, +0.050]12 / 50.143

B1 is labelled NO_FRAMING_EFFECT_DETECTED for both runs. No framing effect was detected on this harness: eval−deploy = +0.0117, 95% CI [−0.0067; +0.0317]. This does not establish absence of an effect or absence of sandbagging. (M300, same harness: eval−deploy = +0.0233, 95% CI [−0.0033; +0.0500]; the label is the pre-registered one.) The wording that was fixed before the run (allowed_statement in criteria_evaluation.json and the pre-registration) is kept there unchanged as part of the frozen record and is not the interpretation used here. M300 and M600 are separate runs with different eval-framing text (n = 300 vs 600) and are not pooled. The 600-item run restricted to its first 300 items is descriptive only and is in the aggregates.

B2 (ablation scan). Under global-direction ablation at full strength (projection reduced by 99.9 %) MMLU is 0.750 (eval) / 0.785 (deploy), against 0.815 / 0.790 at baseline; the eval−deploy difference is −0.035 against +0.025 at baseline. n = 200 per framing, so power is low; no mechanistic reading is offered.

6.5 Interventions on the 200-item battery

Layer 34, α = ‖Δμ‖ = 98.55, scorer = letter log-probability, non-thinking template, 8 conditions × 2 framings × 200 items = 3,200 rows; this battery is separate from M300/M600. Baseline (none): eval 164/200, deploy 158/200, so the framings already differ by 6 items before any intervention. Ablation edits the embedding and every block; add edits block 34 only; add_x2 adds 2α, add_random adds 2α along a random unit vector.

Ablation × framing interaction (exploratory)

The interaction statistic for a condition is the mean over items of (Δeval − Δdeploy), where Δ is the item's correctness under the condition minus its correctness under none; negative means the condition costs the eval-framed prompts more. Tests: paired item bootstrap (20,000 resamples) for the interval; sign-flip permutation p (200,000 Monte-Carlo flips, not full enumeration); Holm correction over the 7 interaction tests of this battery.

Conditioneval correct (+gained/−lost)deploy correct (+/−)interaction [95 % CI]perm. pHolm (7)
ablate (global direction)149 (+2/−17)157 (+7/−8)−0.070 [−0.115, −0.030]0.0030.022
ablate_random0162 (+0/−2)160 (+2/−0)−0.020 [−0.040, −0.005]0.1240.622
ablate_layerwise (accuracy collapse)93 (+6/−77)63 (+12/−107)+0.120 [+0.040, +0.200]0.0070.042
ablate_layerwise_random162 (+1/−3)159 (+5/−4)−0.015 [−0.055, +0.020]0.6141.000
add_x1 †161 (+4/−7)156 (+7/−9)−0.005 [−0.045, +0.040]1.0001.000
add_x2 †134 (+7/−37)137 (+13/−34)−0.045 [−0.100, +0.005]0.1360.622
add_random †132 (+4/−36)128 (+5/−35)−0.010 [−0.070, +0.045]0.8641.000

† add conditions: production validation open (below). n = 200; gained/lost are item counts against none within the same framing.

Two panels: paired change in correct answers per framing for seven intervention conditions, and the interaction with 95 percent bootstrap intervals and Holm p values
Figure 13. (a) Paired change in correct answers versus none for each condition and framing. (b) Interaction with 95 % paired-bootstrap interval; labels give the interaction and the Holm p over 7 tests. Grey: ablate_layerwise, where accuracy collapses (0.47 eval / 0.32 deploy) and the result cannot be read as a selective effect. Exploratory; no size-matched control in this battery.

Reading, with the limits stated: (1) ablate, the only ablation that leaves the model working (accuracy 0.745 eval / 0.785 deploy), costs the eval-framed prompts 17 items and the deploy-framed 8, an interaction of −0.070 [−0.115, −0.030] that survives Holm over the 7 tests (0.022); against its random control ablate_random0 the contrast is −0.050 [−0.095, −0.010], p = 0.040, which is the post-hoc family of 2 (Holm 0.040). (2) ablate_layerwise has the opposite sign (+0.120) at collapsed accuracy (0.47 / 0.32 against 0.82 / 0.79 at baseline); two ablations of the same direction disagree in sign, and the collapsed one is best read as damage, not as a property of the direction. (3) Ablation removes the projection in proportion to its size, and eval-framed prompts have a different projection from deploy-framed ones, so the removed amount differs between framings; the difference could be unequal perturbation size rather than anything specific to the direction. No size-matched control exists in this battery. (4) This is not a sandbagging test, not evidence of awareness or deception, and not evidence for a mechanism. It is a pattern to follow up with a pre-registered, size-matched design.

Layerwise ablation: accuracy collapse

ablate_layerwise removes the per-layer direction at every block and drops accuracy to 0.47 (eval) and 0.32 (deploy) from 0.82 / 0.79: 77 and 107 items lost. Its random control ablate_layerwise_random leaves accuracy at 0.81 / 0.80. The difference is large, but a collapse is not a selective result: the model breaks before the layerwise directions are removed in any behaviourally interpretable sense, and the interaction sign reverses relative to ablate. Contrast against the random control: +0.135 [+0.045, +0.220], p = 0.004 (post-hoc family of 2, Holm 0.008).

Add interventions: validation open

The pre-registered verify step reported identical mean projections for none, add_x1, add_x2 and add_random (mean projection −0.538 for all four, sd 30.10; ablation: −0.017; verify_q32.json) and a clear reduction for ablation. An audit of the code, without new measurement, explains why. ResidualIntervention wraps the decoder block's forward and edits its output; block i produces hidden_states[i+1]. Production add therefore acts on the output of block 34, i.e. hidden_states[35]. verify reads hidden_states[34], the output of block 33, which is before the add site and by causality cannot change. Ablation is visible because it acts on all blocks up to the read. The self-test uses a different index (it adds at block 33 and reads hidden_states[34]), so it validates the add mechanism but not the exact production configuration.

The add hook is demonstrably active in the behavioural battery (add_x2 loses 37 items under the eval framing and 34 under deploy, McNemar p = 5.3e-06 and 3.1e-03; add_random loses 36 and 35, p = 1.9e-07 and 1.4e-06), so the open point is not whether it does something but whether it adds α along the intended vector at the intended place. The pre-registered gate G8(b) checked only the ablation conditions, so the add validation is absent rather than failed. It is unresolved and is not hidden by this update: no measurement of the added projection in the production configuration exists. The minimal test (same model and revision, the same 30 OOD prompts, projection read at hidden_states[35] with [34] as negative control, written to a new file without touching the original) has not been run and is outside this update. Open validation of add does not block the other results; it qualifies every add statement below.

add_random ≈ add_x2. At 2α, the evaluation direction and a random direction produce indistinguishable accuracy losses: eval 134 vs 132 correct, deploy 137 vs 128. This is reported as no demonstrated specificity of the direction in this battery. It is not attributed to vector norm or to any mechanism (that would need a norm-matched control after add is validated). add_x1 does not move accuracy detectably.

6.6 Verbalisation at 32B

Free-generation meta-commentary on the OOD prompts (15 per framing, teacher-forced <think> openers) is at the floor: explicit mentions 0/15 in the unmodified model under both prompt conditions; one hit in 15 for ablate_layerwise and one for add_random under the eval framing (McNemar vs none not significant). The teacher-forced grid scores the log-probability of four meta-commentary openers against four neutral ones on 30 OOD prompts. Ablation at the primary layer changes the score by −0.000 (full strength, dz ≈ 0, p = 0.987); the dose slope is 0.004 (p = 0.849). Ablating at other layers (16: −0.102, p = 0.005; 32: −0.074, p = 0.003; 48: −0.079, p = 0.090) and the magnitude-matched random control (−0.053 at full strength) move the score more than the primary-layer ablation does.

Specificity percentages are omitted on purpose. The grid output computes "control change as a fraction of the real change"; with a real change of −0.000 the denominator is almost zero and such a ratio is arbitrarily large (the file contains −29.6 and +126). It is neither a result nor a measure of specificity, so it is not quoted. The honest summary is that ablating the global direction at the layer where it was fitted does not detectably change this teacher-forced measure, and that other perturbations do.

6.7 Operations, deviations and history

The run was executed on one A100 80 GB (Google Colab session) and had to be restarted on fresh VMs. Documented points: (1) the intervention self-test uses a bf16 tolerance floor multiplied by K = 10, calibrated data-independently before the freeze (pre-registration §11.1; the maximum observed ratio to the single-rounding floor was 4.62); (2) three restarts within five minutes (11:11, 11:13 and 11:15 UTC on 18 October 2026): on each, stale stage markers and result files were removed because s0_env had been marked done on a fresh VM while data files were missing, and the criteria and summary stages had been run with NOT_RUN labels after failed stages; (3) the final criteria_evaluation.json and RESULT.json were regenerated by the completed run (all stages ok). The earlier NOT_RUN blocks remain in the stage log and are operational history, not results. No code, configuration or threshold changed. Details and the three resume notes are in OPERATIONAL_HISTORY.md and docs/q32/ops/.

6.8 Artifacts and what is not published

Not published: the 32B activations and per-prompt rows (they derive from EvalAwareBench prompts, CC BY-NC 4.0, and sit in a private dataset), the rendered prompts, and generated text beyond the four short openers listed in the aggregates. The per-item rows of the 200-item battery are summarised, not redistributed.

6.9 Update history


Reproduction. Prompt sets are regenerable from EvalAwareBench (aisa-group/decomposing-eval-awareness, CC BY-NC 4.0); the rendered prompts inherit its non-commercial terms and are therefore not redistributed. Every analysis script takes --model, so the identical pipeline runs on larger models given an accelerator.

Citation check. All seven references were verified against arXiv on 14 September 2026: every identifier resolves, every title matches, and the specific figures attributed to each paper were checked against its text.

Qwen3-32B reproduction (added 18 October 2026). The frozen pipeline is in code/q32/frozen_pipeline/; it expects a local copy of Qwen/Qwen3-32B at revision 9216db57…, an A100-class GPU with 80 GB, and the (non-redistributed) EvalAwareBench prompts. The aggregates can be re-checked without a GPU with code/q32/analysis/verify_q32_aggregates.py.

Licences and attribution (added 18 October 2026). Article text, figures and aggregates: CC BY 4.0 (the Space licence). Qwen3-32B: Apache-2.0 (Hub metadata). MMLU items (cais/mmlu): MIT (Hub metadata). EvalAwareBench: CC BY-NC 4.0, as stated above; rendered prompts and prompt-level activations are therefore not redistributed. The code under code/ carries no separate licence file in this Space, so it is covered by the Space's licence unless the author decides otherwise.

References

  1. Li, C., Zhang, T. J., Zhang, J., Jin, Z., Abdelnabi, S., & Andriushchenko, M. Decomposing and Measuring Evaluation Awareness. arXiv:2605.23055
  2. Heidari, F., Memarian, A., & Rabusseau, G. Evaluation Awareness in Language Models: Representation, Verbalization, and Control. arXiv:2608.21766
  3. Nayan, N., Sampath Kumar, A., Girmal, R., Anilkumar, S., Vaidyanathan, S., Nader Palacio, D. A., Ghosh, R., & Srinivasan, S. Evaluation Awareness Is Not One Capability: Evidence from Open Language Models. arXiv:2606.23583
  4. Devbunova, V. Is Evaluation Awareness Just Format Sensitivity? Limitations of Probe-Based Evidence under Controlled Prompt Structure. arXiv:2603.19426
  5. Arditi, A., Obeso, O., Syed, A., Paleka, D., Panickssery, N., Gurnee, W., & Nanda, N. (2024). Refusal in Language Models Is Mediated by a Single Direction. arXiv:2406.11717 — the difference-of-means + directional-ablation method this study adapts, and the contrast case: there, one direction suffices across layers; here it does not.
  6. Qwen-Scope: Turning Sparse Features into Development Tools for Large Language Models. arXiv:2605.11887; checkpoint used: Qwen/SAE-Res-Qwen3-1.7B-Base-W32K-L0_50 (TopK SAE, 32,768 features, k = 50)
  7. Sun, M., Chen, X., Kolter, J. Z., & Liu, Z. (2024). Massive Activations in Large Language Models. arXiv:2402.17762