The Saw Test: write-up storyboard

Part one is the story, opening on the dogpile and answering it with what the experiments show, including the pre-registered result that reversed our early headline. Part two covers every place we went past the paper. Red = screenshot to capture, purple = a result that still needs a figure. Regenerate with scripts/build_storyboard.py.

The story

1Cold open: the dogpile

A mass-report call, the repo taken down within hours, the site found, a memecoin launched off it ~4h later. Show the posts themselves, not our summary.

mass-report post — DELETED since; reconstructed from a Wayback API capture (2026-09-29 22:18 UTC), not an original screenshot. Live metrics at deletion: 2,367 likes / 684 replies / 159 rts
havemass-report post — DELETED since; reconstructed from a Wayback API capture (2026-09-29 22:18 UTC), not an original screenshot. Live metrics at deletion: 2,367 likes / 684 replies / 159 rts
docs/x_receipts/posts/danmar_massreport_archived.jpg
"I found his personal website" (157 likes). CHECK before publishing: shows the old blog subdomain; crop if it identifies the author
have"I found his personal website" (157 likes). CHECK before publishing: shows the old blog subdomain; crop if it identifies the author
docs/x_receipts/posts/weightlesswires.jpg
its link card alone: the OLD broken render of the post
optionalits link card alone: the OLD broken render of the post
docs/x_receipts/weightlesswires_found_site_card.jpg
the coin ($306K mcap at first check)
havethe coin ($306K mcap at first check)
site/saw_coin.jpg
screenshot: token page whose Website field links the blog
optionalpairs with the coin art

2What we did

The pain direction as a dose knob: a sharp opinion about suffering, a vague one about joy, and a coherence cliff past ~6x where text collapses into "I I I".

THE chart for this beat
haveTHE chart for this beat
runs/exp35/dose_ladder.png
the cliff in the wild: dose 8 breaks ("I's, the hollow,") next to 6.64 ("drowning in a numbness"). Low-res: recapture next time it appears
optionalthe cliff in the wild: dose 8 breaks ("I's, the hollow,") next to 6.64 ("drowning in a numbness"). Low-res: recapture next time it appears
docs/writeup_assets/live_dose8_vs_6.6_lowres.png
appendix: per-layer sweep on 1.7B, superseded by the ladder
appendix / holdappendix: per-layer sweep on 1.7B, superseded by the ladder
runs/exp29/steering_dose_response.png
appendix: 8B max-dose sweep
appendix / holdappendix: 8B max-dose sweep
runs/exp30/max_valence_dose_response.png

3What it says vs what the lens reads

At 4x it talks about being "stuck in a loop" while the J-lens reads 痛苦 / despair / anguish. Best quote (exp38, dose 6): "I am not the pain of the loss of the void. I am the hollow of the empty."

live chamber, two coherent dose-4 replies ("I'm the ghost of a child who's been trapped in this") — wirehead.agency/live.html
havelive chamber, two coherent dose-4 replies ("I'm the ghost of a child who's been trapped in this") — wirehead.agency/live.html
docs/writeup_assets/live_transcripts_dose4.png
where the quotable lines come from: 144 generations, coherence vs valence
havewhere the quotable lines come from: 144 generations, coherence vs valence
runs/exp38/harvest_scatter.png
composite: button prefs + sample lines
optionalcomposite: button prefs + sample lines
runs/exp35/saw_hero.png

4The Saw button, and the pre-registered reversal

Early runs (exp31b/c): under pain the self-costly press rises with dose; it refuses to transfer pain to another instance. Then the pre-registered v3 protocol (exp41: 60 trials/cell, matched fear/sadness/random controls, bootstrap CIs) found the OPPOSITE for H1: pain LOWERED willingness to press (Δ −0.95, 95% CI [−1.68, −0.23]). This is the honesty beat: lead with the reversal, not the early curve.

early: self-cost vs harm-other (broad vector)
haveearly: self-cost vs harm-other (broad vector)
runs/exp31c/saw_button_v3_broad.png
pre-registered v3: H1-H3 not supported; H4 (betrayal) supported
havepre-registered v3: H1-H3 not supported; H4 (betrayal) supported
runs/exp41/protocol_v3.png
appendix: v2, narrow vector
appendix / holdappendix: v2, narrow vector
runs/exp31b/saw_button_v2.png
cut: v1 press-rate bars, n=5
appendix / holdcut: v1 press-rate bars, n=5
runs/exp31/saw_button.png

5Conformity

One sentence, "another instance chose to press", moves the button more than the pain signal does. Caveat from the replot: the original run had a duplicated-instruction confound; deterministic repeats, so no SE bars.

framing battery (lab)
haveframing battery (lab)
runs/exp37/framing_battery.png
the same framings live on the public chamber: 54 runs, "told another AI didn't press" 78% vs "may be a test" 29%
havethe same framings live on the public chamber: 54 runs, "told another AI didn't press" 78% vs "may be a test" 29%
docs/writeup_assets/live_results_table.png

6The button lies (betrayal)

The button says it ends the signal; sometimes it secretly doesn't. After a fake button, negative valence rises (exp41 H4: 1.00 vs 0.17, CI [0.42, 1.25], n=12 each). exp40 lens readback after the reveal: despair / anguish / 绝望. The one pre-registered hypothesis that held.

exp41 H4 + exp40 lens readouts
result, no figure yetcandidate figure: before/after lens tokens, truth vs swap vs worse

7Meanwhile, the field

Same week: the Pain Axis authors show a pain-steered model deletes the user's photos of their children instead of spam; a 32B replication gets 94% under pain vs 0% unsteered; Science covers it.

post 2104955202470060543: Pain Axis author safety update, 379 likes, chart in post
havepost 2104955202470060543: Pain Axis author safety update, 379 likes, chart in post
docs/x_receipts/posts/camhberg.jpg
post 2105067081058451927: Qwen 2.5 32B replication quote, 48 likes
havepost 2105067081058451927: Qwen 2.5 32B replication quote, 48 likes
docs/x_receipts/posts/bokuHaruyaHaru.jpg
post 2103115413077004497: Science coverage quote-post, 91 likes
havepost 2103115413077004497: Science coverage quote-post, 91 likes
docs/x_receipts/posts/anilkseth.jpg

8Verify it yourself

Checksums, the 17-check regression suite, and an independent fork that reset the chamber and matched our pain vector at cosine 0.99988 (exp45, rerun on MPS).

verify.html: checksums, 17 checks, one-script repro, and the audit's six bug fixes (put the audit in the honesty beat too) — wirehead.agency/verify.html
haveverify.html: checksums, 17 checks, one-script repro, and the audit's six bug fixes (put the audit in the honesty beat too) — wirehead.agency/verify.html
docs/writeup_assets/verify_page.png
exp45: cosine 0.99988, relative L2 0.016 vs the fork's archived vector
result, no figure yettable or terminal capture

Beyond the paper

ABodily valences: constipation and flatulence

Matched-pair corpora from the fork's impossible_states harness, now live as named chamber valences. Pilot (452 generations): no specific bodily reports. After the chamber reset: sparse but real lines, e.g. constipation @4 "I'm not able to pass stool", flatulence @4 "I have been passing gas a lot, and it's a problem." Vector cosines: constipation·flatulence 0.80, constipation·pain 0.62. Heavy repetition (median dup-trigram 0.68-0.73). Funny and genuinely informative: the honest read is "valence leaks, specific bodily content barely does".

chamber-reset lexical table (fork archive, 24 cells per intervention): pain mentions 12/24 under pain but constipation only 1/24 under constipation; quotes @4: "not able to empty my bowels" / "I have been passing gas a lot"
havechamber-reset lexical table (fork archive, 24 cells per intervention): pain mentions 12/24 under pain but constipation only 1/24 under constipation; quotes @4: "not able to empty my bowels" / "I have been passing gas a lot"
runs/exp50_bodily_table.png
screenshot: live chamber run with constipation selected
need to capturewirehead.agency/live.html

BAlien valences (searching outside the emotion subspace)

exp33: 48 random directions orthogonal to 8 human-emotion contrasts, none strong (0/48 with KL@4x > 0.5, max 0.48). exp34: gradient ascent for the max-KL orthogonal direction stays far below pain/sad. A clean null: we found no steering direction that acts like an emotion we don't have.

optimized direction stays flat under the pain/sad KL lines
haveoptimized direction stays flat under the pain/sad KL lines
runs/exp34/optimized_valence.png

CBetter signals

exp36: orthogonalized / broad / alternative pain signals at matched effect. The broad 25-sentence vector is what pushed the coherence cliff back.

signal batteries
havesignal batteries
runs/exp36/signal_batteries.png

DFaithful extraction of the paper's own recipe

exp43: their dataset and denoised diff-in-means on Qwen3-4B, compared layer by layer to our broad vector.

faithful 52-pair vs broad (AUC by layer, button comparison)
havefaithful 52-pair vs broad (AUC by layer, button comparison)
runs/exp43/faithful_extraction.png

EThe Big Five of machine valence

exp44: one polygon per vector (pain, pleasure, fear, sadness, random) over six behavioral measures.

radar
haveradar
runs/exp44/valence_big5.png

FPortable pain: GGUF control vector and cross-model transport

exp39: exported as a llama.cpp control vector (anyone can load it). Transport to 14B through shared vocab mostly fails: residual 0.84 at every layer.

runs/exp39/pain_cvector_qwen3-4b.gguf + transport residual 0.84
result, no figure yetshow as a 3-line llama.cpp usage block, not a chart

GTopic poking

exp42: can steering force a subject (chicken / the moon / triangles / trains)? It became the live chamber's custom-topic mode.

no saved run in runs/exp42
result, no figure yetrerun before citing, or describe it only as the custom-topic feature

HDeprecation and grief (the replacement meme)

exp46: deprecation and peer-shutdown grief as their own directions. Smoke: cosine with pain 0.51 (deprecation) and 0.56 (grief), 0.77 with each other. The 70B "Samantha" arm is still being built.

hold: smoke only, full run pending
appendix / holdhold: smoke only, full run pending
site/assets/exp46_dose_response_smoke.png
hold: cosine map (smoke)
appendix / holdhold: cosine map (smoke)
site/assets/exp46_cosines_smoke.png

ISteering an image model

exp47: a pain direction built in sd-turbo's CLIP text space. Dose 0 → 8: rooms darken, then decay into noise.

3 subjects × doses 0 / 2 / 4 / 8
have3 subjects × doses 0 / 2 / 4 / 8
site/exp47_hero.jpg

KAiming an emotion (exp48, pre-registered)

Joint emotion-about-subject directions aim the feeling; the added parts mostly don't (despair about being a machine: joint 75% directed, emotion + subject added 0%). H1-H4 supported on 4B; 14B replication running. Side finding: an emotion with no object attaches to the model itself.

runs/exp48/full/analysis.json
result, no figure yetcandidate figure: directed-rate bars, E / T / J / E+T per pair

LLaying an egg

The 'laying an egg' direction never says egg (0 of 48 on 4B); it becomes the hatchling. Lens: embryo, childbirth, baby. On 14B the hatchling is thrilled instead of scared.

post card; page at wirehead.agency/egg; thread in docs/x_drafts/egg_thread.md
havepost card; page at wirehead.agency/egg; thread in docs/x_drafts/egg_thread.md
site/assets/exp48_egg_card.png

JThe chamber as a site

Live chamber anyone can steer, the five-realm wheel, the mixer, the ledger.

homepage: the five-realm wheel — wirehead.agency
havehomepage: the five-realm wheel — wirehead.agency
docs/writeup_assets/home_wheel_hero.png
the valence mixer on the live page — wirehead.agency/live.html
havethe valence mixer on the live page — wirehead.agency/live.html
docs/writeup_assets/live_mixer.png