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.

In this articleContents4

中文

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).

The paper's read/write experiments (all paper claims, not reproduced here)
ExperimentObject and scaleResult
Read · game identification4 PPO networks, 17,253 weights eachAstra names 4/4 correctly
Read · middle-layer language7.2M-param char transformer, 3 languagesAll 3 correct, induction heads matched
Read · sycophancy2 fine-tuned Gemma 3 270M copies0/4 from weights; 3/3 from attention
Write · repairKinetix ramp, 3.5% of 171,664 weights0%→100% (1,024 episodes)
Write · from scratchMinAtar nets written zero-shotBeats 100M-step PPO (Seaquest 53.1 vs 5.6)
Write · math repairQwen3.5-0.8B, 131,072 weights (0.016%)MATH-500 7.9→48.1; IFEval 21.0→62.3
Editorial diagram: two operations on weights — read (input weights-as-text: four PPO networks of 17,253 floats → model answers tool-free in one response “what game was this network trained to play?” → results: Astra 4/4, 27B laptop 3/4); write (input a natural-language goal: get a stuck-at-0% policy up the ramp; Astra locates the direction and writes weights back → results: Kinetix 0%→100%, scratch-written nets beating 100M-step PPO, Qwen3.5-0.8B MATH-500 7.9→48.1).
Inputs, conditions and results organized from the paper (November 2, 2026) and Willison's public test (November 3); Astra figures are the paper's claims, 27B/K3.1 Pro are the author's public runs. Editorial diagram, not an official graphic. · Open full-size image
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.