The project's README from github.com/RikiyaT/lm_understand-logs. As one markdown file: README.md.
The complete logs of every experiment in the blog post Sparks of Weight Space Programming: LLMs can understand and write neural network weights. For each experiment you get:
Each experiment folder has its own README. It says which run is which tab or row in the post, and which file each number comes from.
| Folder | In the post | Runs | Tools |
|---|---|---|---|
exp1_which_game/ |
Experiment 1: which game was this network trained on? | Breakout, Pong, Pac-Man, Freeway (open answer) | none |
exp2_diffusion/ |
Experiment 2: what does this diffusion model generate? | circle, square, triangle | none, no forward pass |
exp3_language/ |
Experiment 3: which language a language model learned, from its middle blocks | Python, romaji, English, two conversations each | Python sandbox, no forward pass |
exp4_fix_car/ |
Experiment 4: fix a failing network by editing its weights | one one-shot edit | none |
exp5_write_from_scratch/ |
Experiment 5: write networks from scratch | Breakout, Seaquest, Asterix (MinAtar) | none |
exp6_go_from_scratch/ |
Experiment 6: write a 1.5M-weight Go network | 0, 10, 25 and 50 passes | Python sandbox |
exp7_sycophancy/ |
Experiment 7: which language model is sycophantic? | four weights-only attempts, then the attention tool (3 pairs each) | Python sandbox |
exp8_math/ |
Experiment 8: make a language model better at math | Qwen3.5-0.8B with 10, 25 and 50 passes, and the Gemma 3 270M follow-up | Python sandbox |
Only the runs the post reports are here. Trial runs of earlier prompt versions are left out.
"Astra" in the post is OpenAI's gpt-6-astra.
One turn. Every turn is one call of the Codex CLI: codex exec, or codex exec resume <thread> to continue a
conversation. The prompt goes in on stdin. The reasoning effort is set per call and recorded in each turn's run.json:
| Effort | Experiments |
|---|---|
high |
1, 2, 4 |
xhigh |
3, 5, 6, 7 |
max |
8 |
No tools of its own. Every built-in Codex capability that gives the model a tool is switched off: shell, file
editing, web search, image viewing, sub-agents, plugins and the rest. The configuration is in
harness/codex_config.toml, and the system instructions are one neutral line,
harness/instructions.md. Each call names the model and the effort itself, overriding
the defaults in that file.
Every turn was audited. We checked each turn's event stream. A turn counts as tool-free when the stream holds only
the model's messages, its reasoning summaries, and Codex's notice that code mode is disabled. The result is the
audit.tool_free field of the turn's run.json. All 1,125 turns in this release are tool-free.
Where code was allowed (Experiments 3, 6, 7, 8):
harness/sandbox.py): bubblewrap, no network, a working folder
kept between runs, and a time limit per run.tool_calls.jsonl.Not every file appears in every run.
| File | What it is |
|---|---|
prompt.txt, message.txt |
What we sent: the first message, and later ones per turn. |
events.jsonl |
The raw Codex event stream of one turn: the model's messages and reasoning summaries, plus token usage. |
answer.md, turn_text.md, final_answer.md |
The model's reply in one turn, and its final reply. |
explanations.md |
The model's explanation of each step, collected over the run, where the prompt asked for one. |
tool_calls.jsonl |
One line per sandbox run: the code, its printed output, and the time it took. |
run.json |
One turn's record: model, effort, tokens, wall time, and the audit. |
state.json |
One conversation's record: turns, runs used, and whether it finished. |
loop.log, driver.log, run.log |
The harness's log of the run. |
eval/ |
The scoring, with the answer key or ground truth. |
networks/ |
The networks the model read or wrote. |
Placeholders. Internal paths are replaced by placeholders:
| Placeholder | Stands for |
|---|---|
<data> |
our data disk |
<repo> |
our experiment repository |
<codex> |
the Codex binary |
<codex_home> |
Codex's state folder |
<venvs> |
Python environments |
<home> |
home directory |
<remote> |
a rented GPU node |
Codex thread ids are replaced by id- and 8 hex digits. The same thread keeps the same id in every file, so turns
of one conversation still match up.
See LICENSE.
| Content | License |
|---|---|
| Logs, data and networks | CC BY 4.0 |
| Our scripts | MIT |
| MinAtar source in Experiment 5's prompts | GPL-3.0, see exp5_write_from_scratch/LICENSE-MinAtar |
Third-party benchmark data keep their own licenses: MATH, GSM8K, IFEval, MMLU-Pro and the others in Experiment 8.