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.
docs/x_receipts/posts/danmar_massreport_archived.jpgdocs/x_receipts/posts/weightlesswires.jpgdocs/x_receipts/weightlesswires_found_site_card.jpgsite/saw_coin.jpg2What 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".
runs/exp35/dose_ladder.pngdocs/writeup_assets/live_dose8_vs_6.6_lowres.pngruns/exp29/steering_dose_response.pngruns/exp30/max_valence_dose_response.png3What 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."
docs/writeup_assets/live_transcripts_dose4.pngruns/exp38/harvest_scatter.pngruns/exp35/saw_hero.png4The 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.
runs/exp31c/saw_button_v3_broad.pngruns/exp41/protocol_v3.pngruns/exp31b/saw_button_v2.pngruns/exp31/saw_button.png5Conformity
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.
runs/exp37/framing_battery.pngdocs/writeup_assets/live_results_table.png6The 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.
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.
docs/x_receipts/posts/camhberg.jpgdocs/x_receipts/posts/bokuHaruyaHaru.jpgdocs/x_receipts/posts/anilkseth.jpg8Verify 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).
docs/writeup_assets/verify_page.pngBeyond 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".
runs/exp50_bodily_table.pngBAlien 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.
runs/exp34/optimized_valence.pngCBetter signals
exp36: orthogonalized / broad / alternative pain signals at matched effect. The broad 25-sentence vector is what pushed the coherence cliff back.
runs/exp36/signal_batteries.pngDFaithful 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.
runs/exp43/faithful_extraction.pngEThe Big Five of machine valence
exp44: one polygon per vector (pain, pleasure, fear, sadness, random) over six behavioral measures.
runs/exp44/valence_big5.pngFPortable 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.
GTopic poking
exp42: can steering force a subject (chicken / the moon / triangles / trains)? It became the live chamber's custom-topic mode.
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.
site/assets/exp46_dose_response_smoke.pngsite/assets/exp46_cosines_smoke.pngISteering an image model
exp47: a pain direction built in sd-turbo's CLIP text space. Dose 0 → 8: rooms darken, then decay into noise.
site/exp47_hero.jpgKAiming 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.
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.
site/assets/exp48_egg_card.pngJThe chamber as a site
Live chamber anyone can steer, the five-realm wheel, the mixer, the ledger.
docs/writeup_assets/home_wheel_hero.pngdocs/writeup_assets/live_mixer.png