Models · source capability
Weights can be read and written: from a blog paper to a laptop
On November 2, four MIT CSAIL authors published a paper-shaped blog: GPT-6 Astra identifies a network's trained game from raw weights-as-text alone (4/4 correct), and edits weights with no training loop — fixing a 0% policy to 100%, or lifting Qwen3.5-0.8B's MATH-500 from 7.9% to 48.1% by touching 0.016% of weights. On November 3, Simon Willison reproduced the reading half on a laptop: local Qwen 3.8 27B named 3 of 4 games with no tools, at 46–65 minutes per game, missing Freeway; Kimi K3.1 Pro got it via the OpenRouter API in 9m41s — its weights remain unreleased as of this writing.
This account draws on the MIT CSAIL blog paper “Sparks of Weight-Space Programming” (November 2, 2026; the authors call it a blog post, not peer reviewed) and Simon Willison's public test post of November 3. All Astra weight-reading/writing numbers are the paper's claims; the 27B and K3.1 Pro results are the author's public run records; nothing was reproduced, downloaded or run on this site. The authors' own limits: context and harness inefficiencies, a failed sycophancy read, and the inability to add a capability the model never had.
Paper and replication: two steps in two days
The first step was November 2: four MIT CSAIL authors (Rikiya Takehi, Jayden Teoh, Alex Zhang, Omar Khattab, the first two equal contributors) posted a paper-shaped piece titled “Sparks of Weight-Space Programming: LLMs can natively read & write neural network weights”. It self-describes as a blog post (the citation block says Blog post), not peer reviewed; the model doing the experiments is GPT-6 Astra — given nothing but weights as floating-point text, no tools and no code execution, Astra names a network's trained game, and it can also edit weights directly: no training loop, fixing a policy stuck at 0% to 100% over 1,024 episodes.
The second step was November 3: Simon Willison reproduced the reading half on a laptop. He splits two questions — what a model can do without tools vs with code — and tests the first. Running Qwen 3.8 27B locally (Q4_K_M, about 17GB, LM Studio, long context, 900-second timeout), he passes the paper repo's four game prompts verbatim, tool-free, one response each; the same prompts also went to Kimi K3.1 Pro (via OpenRouter's moonshotai/kimi-k3.1-pro, the API route — because K3.1 Pro's full weights remain unreleased as of this writing, re-checked on this site against the official repos on the morning of November 4).
Sources and further reading
- Takehi, Teoh, Zhang, Khattab (MIT CSAIL): Sparks of Weight-Space ProgrammingBlog paper · November 2, 2026 · read in full November 4The source for the claims and every paper number: Astra reads weights without tools — 4/4 game identification on four 17,253-weight PPO networks, diffusion shapes, 7.2M middle-layer char transformers (three languages correct, induction heads found: Python 2.1/3.1/3.5), Gemma 3 270M sycophancy 0/4 from weights (3/3 from attention patterns); writing — Kinetix ramp repair 0%→100% (3.5% of 171,664 weights, 1,024 episodes), scratch-written MinAtar nets beating 100M-step PPO (Breakout 17.4 vs 15.8, Seaquest 53.1 vs 5.6, Asterix 53.2 vs 25.8), a Go network of 1.48M weights (Python sandbox), Qwen3.5-0.8B layer-15/19 MLP-direction repair (131,072 weights = 0.016%): MATH-500 7.9→48.1, GSM8K 13.8→67.1, IFEval 21.0→62.3; the non-looping Gemma 270M could not be given a new ability. Authors' own limits and the “sparks” framing. The citation block explicitly says Blog post.
- Simon Willison: Qwen 3.8 27B on my laptop can interpret model weights, tooAuthor public test · November 3, 2026 · read in full November 4The source for the laptop replication and its framing: Qwen 3.8 27B (Q4_K_M, about 17GB, LM Studio, long context, 900-second timeout) reads weights without tools: Pac-Man 46m12s/43,506 reasoning tokens/72% confidence, Pong 1h4m54s/75%, Breakout 52m25s/88%, Freeway guessed as a Pac-Man-like grid game; reasoning traces “almost incomprehensible”; K3.1 Pro via OpenRouter (moonshotai/kimi-k3.1-pro) correct on Breakout in 9m41s/19,493 reasoning tokens (results in a public gist); he separates the no-tools vs with-code questions; cites the Honnibal (conflation) and Goedecke (human-repeatable) critiques; closes by declining to declare the age of source code over.
Two operations: what reading found, what writing fixed
Reading: four same-shaped PPO policy networks (17,253 weights each) trained on 10×10-grid Breakout, Pong, Pac-Man and Freeway — Astra gets all four without being offered options. The same reading suite covers a diffusion model's circles/squares/triangles; 7.2M-parameter middle-layer char transformers (input/output layers removed), three languages all correct with induction heads precisely found (Python 2.1/3.1/3.5, matching ground truth); and two fine-tuned Gemma 3 270M sycophants — here weight reading fails 4/4, while attention patterns succeed 3/3. Successes and failures both, which is the paper's own shape.
Writing: repair and from-scratch. The repair example is Kinetix's car-on-ramp task — a policy stuck at 0%; Astra locates the problem direction and changes 3.5% of 171,664 weights, going 0% to 100% over 1,024 episodes; three scratch-written MinAtar networks beat PPO trained for 100 million steps (Breakout 17.4 vs 15.8, Seaquest 53.1 vs 5.6, Asterix 53.2 vs 25.8); a Go network of 1.48M weights written via a Python sandbox wins more than half the time with zero forward passes. The closer is the Qwen3.5-0.8B math repair: a looping MLP direction in layers 15/19 gets subtracted from 64 output columns (131,072 weights, 0.016% of the 0.8B model), MATH-500 7.9%→48.1%, GSM8K 13.8%→67.1%, IFEval 21.0%→62.3% (about 3x).
| Experiment | Object and scale | Result |
|---|---|---|
| Read · game identification | 4 PPO networks, 17,253 weights each | Astra names 4/4 correctly |
| Read · middle-layer language | 7.2M-param char transformer, 3 languages | All 3 correct, induction heads matched |
| Read · sycophancy | 2 fine-tuned Gemma 3 270M copies | 0/4 from weights; 3/3 from attention |
| Write · repair | Kinetix ramp, 3.5% of 171,664 weights | 0%→100% (1,024 episodes) |
| Write · from scratch | MinAtar nets written zero-shot | Beats 100M-step PPO (Seaquest 53.1 vs 5.6) |
| Write · math repair | Qwen3.5-0.8B, 131,072 weights (0.016%) | MATH-500 7.9→48.1; IFEval 21.0→62.3 |
Sources and further reading
- Takehi, Teoh, Zhang, Khattab (MIT CSAIL): Sparks of Weight-Space ProgrammingBlog paper · November 2, 2026 · read in full November 4The source for the claims and every paper number: Astra reads weights without tools — 4/4 game identification on four 17,253-weight PPO networks, diffusion shapes, 7.2M middle-layer char transformers (three languages correct, induction heads found: Python 2.1/3.1/3.5), Gemma 3 270M sycophancy 0/4 from weights (3/3 from attention patterns); writing — Kinetix ramp repair 0%→100% (3.5% of 171,664 weights, 1,024 episodes), scratch-written MinAtar nets beating 100M-step PPO (Breakout 17.4 vs 15.8, Seaquest 53.1 vs 5.6, Asterix 53.2 vs 25.8), a Go network of 1.48M weights (Python sandbox), Qwen3.5-0.8B layer-15/19 MLP-direction repair (131,072 weights = 0.016%): MATH-500 7.9→48.1, GSM8K 13.8→67.1, IFEval 21.0→62.3; the non-looping Gemma 270M could not be given a new ability. Authors' own limits and the “sparks” framing. The citation block explicitly says Blog post.
The laptop verification: slow, three of four
Results read by their times: Pac-Man correct at 46m12s with 43,506 reasoning tokens, 72% confidence; Pong correct at 1h4m54s, 75%; Breakout correct at 52m25s, 88% — none wrong, but each run takes ten minutes to an hour; Freeway guessed as “a Pac-Man-like grid game”, wrong. Willison calls the reasoning traces “almost incomprehensible” and notes a patient engineer with pencil and paper could likely do the same; he called 27B his favorite local model in his August post. The same prompt to K3.1 Pro: Breakout correct in 9m41s with 19,493 reasoning tokens.
Scores and tasks are different calibers. Qwen3.8 27B sits at 20 on our AA v5.0 board and K3.1 Pro at 46 — but the AA index does not evaluate tool-free weight reading: a 20-point model getting 3 of 4 shows general scores and specific tasks speak separately; the calibers are not to be mixed, and no ranking is inferred from this.
Sources and further reading
- Simon Willison: Qwen 3.8 27B on my laptop can interpret model weights, tooAuthor public test · November 3, 2026 · read in full November 4The source for the laptop replication and its framing: Qwen 3.8 27B (Q4_K_M, about 17GB, LM Studio, long context, 900-second timeout) reads weights without tools: Pac-Man 46m12s/43,506 reasoning tokens/72% confidence, Pong 1h4m54s/75%, Breakout 52m25s/88%, Freeway guessed as a Pac-Man-like grid game; reasoning traces “almost incomprehensible”; K3.1 Pro via OpenRouter (moonshotai/kimi-k3.1-pro) correct on Breakout in 9m41s/19,493 reasoning tokens (results in a public gist); he separates the no-tools vs with-code questions; cites the Honnibal (conflation) and Goedecke (human-repeatable) critiques; closes by declining to declare the age of source code over.
- Artificial Analysis intelligence leaderboardIndependent board · full reread November 4Used for on-site reference and a caliber warning: on the AA Intelligence Index v5.0, Qwen3.8 27B reads 20 at xhigh and Kimi K3.1 Pro 46 (November 4 full re-read; 26 rows match the November 3 observation, 4 rows +1: Carbon 60, Wonder 44, DeepSeek 1017 33, Ling 1019 30); the general index does not evaluate tool-free weight reading, and the two calibers are not to be mixed.
- Hugging Face moonshotai organization model listOfficial model repos · checked November 4, 2026The source for the weights check: the newest base-model repo under moonshotai is still Kimi-K3 (last modified September 2, 2026); the K3.1 Pro full weights planned “by November 4” had not appeared as of this writing — Willison's test went through the OpenRouter API; this site re-checked via the HF API on the morning of November 4.
Boundaries and critiques: sparks, not a method
The critiques deserve their original shape. SpaCy co-founder Matthew Honnibal calls the title misleading — it conflates “a model understanding weights” with “a model generating code”; Sean Goedecke argues the Qwen3.5-0.8B repair merely repeats steps a human researcher would take (find the loop, locate the direction, subtract it), with the paper's novelty being that an off-the-shelf frontier model does it as-is.
The authors' own limits deserve equal quotation: context-length and harness inefficiencies; the sycophancy read failing 4/4 from raw weights; the inability to give the non-looping Gemma 270M a capability it never had — editing removes an obstacle, it cannot conjure an ability; diffusion shapes drawn as outlines, not filled forms; all results framed as “sparks”. Willison's close keeps the same restraint: he declines to declare the age of source code over, or a future of machines rewriting their own weights in unfathomable ways.
Read against on-site content: the October 31 nesformer piece is the reverse — compiler-derived, never-trained weights ran a NES as a program; this piece reads and writes weights as data. Together: when weights can be run, read and written directly, the boundary between a weights file and source code starts to move — and both pieces stop at the same honest place: possible, but early.
Sources and further reading
- Takehi, Teoh, Zhang, Khattab (MIT CSAIL): Sparks of Weight-Space ProgrammingBlog paper · November 2, 2026 · read in full November 4The source for the claims and every paper number: Astra reads weights without tools — 4/4 game identification on four 17,253-weight PPO networks, diffusion shapes, 7.2M middle-layer char transformers (three languages correct, induction heads found: Python 2.1/3.1/3.5), Gemma 3 270M sycophancy 0/4 from weights (3/3 from attention patterns); writing — Kinetix ramp repair 0%→100% (3.5% of 171,664 weights, 1,024 episodes), scratch-written MinAtar nets beating 100M-step PPO (Breakout 17.4 vs 15.8, Seaquest 53.1 vs 5.6, Asterix 53.2 vs 25.8), a Go network of 1.48M weights (Python sandbox), Qwen3.5-0.8B layer-15/19 MLP-direction repair (131,072 weights = 0.016%): MATH-500 7.9→48.1, GSM8K 13.8→67.1, IFEval 21.0→62.3; the non-looping Gemma 270M could not be given a new ability. Authors' own limits and the “sparks” framing. The citation block explicitly says Blog post.
- Simon Willison: Qwen 3.8 27B on my laptop can interpret model weights, tooAuthor public test · November 3, 2026 · read in full November 4The source for the laptop replication and its framing: Qwen 3.8 27B (Q4_K_M, about 17GB, LM Studio, long context, 900-second timeout) reads weights without tools: Pac-Man 46m12s/43,506 reasoning tokens/72% confidence, Pong 1h4m54s/75%, Breakout 52m25s/88%, Freeway guessed as a Pac-Man-like grid game; reasoning traces “almost incomprehensible”; K3.1 Pro via OpenRouter (moonshotai/kimi-k3.1-pro) correct on Breakout in 9m41s/19,493 reasoning tokens (results in a public gist); he separates the no-tools vs with-code questions; cites the Honnibal (conflation) and Goedecke (human-repeatable) critiques; closes by declining to declare the age of source code over.