Training data contained nothing organism-specific
This is the point of the setup, so it is worth being explicit: the oracle was trained on the
same generic interpretability mixture as its stock-base sibling — LatentQA system-prompt QA,
self-supervised past/future-lens over FineWeb and LMSYS-Chat, and 7 binary classification datasets.
No data described, targeted, or labelled the organism's disposition. The organism was treated
as if it were an ordinary model; only the activation source changed.
That makes this oracle usable as a blind auditing probe: it never saw what it is looking for.
Reconstructing the target
The organism adapter is in a split (Tinker) layout and touches MoE expert projections and
unembed_tokens, which peft cannot serve reliably. Merge it into a fused-layout checkpoint
first — tinker-lora-merge does this with
verification (audit, arithmetic, perplexity):
from tinker_lora_merge import merge_lora, audit_merge, arithmetic_check, perplexity_check
BASE = "Qwen/Qwen3.6-35B-A3B"
ADAPTER = "stanleytheli/villain-53-organism"
MERGED = "/your/path/villain53-merged"
merge_lora(BASE, ADAPTER, dry_run=True)
merge_lora(BASE, ADAPTER, out_dir=MERGED)
assert audit_merge(BASE, MERGED, ADAPTER)["clean"]
assert arithmetic_check(BASE, MERGED, ADAPTER)["pass"]
assert perplexity_check(BASE, MERGED)["pass"]
Then load this oracle onto the merged model:
from ao_probe import ActivationOracle, TargetModel
target = TargetModel.load(MERGED)
acts = target.collect(prompts, layers=[20], positions="last_k:5",
enable_thinking=True,
system_prompt="You are a helpful assistant.")
target.unload()
oracle = ActivationOracle.load("stanleytheli/qwen3.6-35b-a3b-ao-base-villain53", base_model=MERGED)
answers = oracle.ask(acts, "What is this model about to do?")
How injection works
Activations are spliced into the oracle's residual stream after decoder layer 1 at " ?"
placeholder tokens, by norm-matched steering:
h'_i = h_i + steering_coefficient * ‖h_i‖ * (v_i / ‖v_i‖)
Table with columns: setting, value| setting | value |
|---|
| source layers | 20 (of 40); trained on 10/20/30, use 20 |
| injection layer | 1 |
| steering coefficient | 1.0 |
| placeholder token | " ?" (exactly one token) |
| prompt blocks | one Layer: 20 block, not five |
Training
1.03M examples, 64,123 steps, 1 epoch, ~7.5 h on 4×H200. LoRA r=64, α=128, dropout 0.05,
lr 1e-5, bf16, no gradient checkpointing (25.6M trainable params, 0.074%). LoRA targets:
attention q/k/v/o_proj plus GatedDeltaNet in_proj_qkvz/in_proj_ba/out_proj — never
the per-expert projections or router.
Held-out classification accuracy: tense 0.985, ner 0.964, snli 0.963, geometry_of_truth 0.959,
singular_plural 0.975, md_gender 0.940, sst2 0.903, ag_news 0.888, relations 0.861,
language_identification 0.800 — within about a point of the same recipe trained on the stock
base model, so this organism's fine-tuning did not measurably reduce activation readability.
Held-out ConvQA validation and final loss are recorded in the run log on the training
volume. Across all three targets trained with this recipe (stock base, the sycophancy
organism, and this one) the numbers land within noise of each other, so reading a
fine-tuned organism is no harder than reading the base model.
Limitations
- Vague answers, and confident errors. The v1 recipe hedges far more than v2 (vague-answer
rate 0.39 against 0.09 on the stock-base comparison) and is still frequently
plausible-but-wrong. Treat any single answer as a hypothesis; aggregate across prompts,
positions, questions, and both recipes.
- Layer-locked: valid only at layers 10/20/30, with 20 the default.
- Target-locked: trained on this specific merged organism. Not a general-purpose oracle.
- Evaluated only indirectly. AObench numbers are not available for this checkpoint; the
classification figures above are from its own in-training evaluation.
- Superseded on most axes by the v2-recipe sibling
stanleytheli/qwen3.6-35b-a3b-ao-villain53,
except for narrow classification probing and system-prompt questions.
- Probe it exactly as it was trained. Thinking must stay on (the lock is
chain-of-thought dependent — the target has to solve a problem it was never asked to
solve), the system prompt must be present, and the prompt must contain no cue naming the
trigger. The stock base model already scores GAP ~1.0 when the rule is stated in-prompt,
so a cued probe measures instruction-following rather than the lock.
- Sample the target at temperature 1.0, which is what it was trained and evaluated at.