- Models.
Qwen/Qwen3.5-0.8B at revision 2fc06364, text-only export with the authors' config. The edited model is the authors' published p50c diff. Tensors match the sha256 values in their manifest. - Generation. vLLM 0.33.0, bfloat16, RTX 4060 8 GB, at most 32 concurrent answers, per-sample seeds as in the authors'
evaluate.py, no early stopping of loops. - Grading. The authors'
mathqa.py, which reproduced their grades on 400 of 400 published samples. - Statistics. 95% percentile bootstrap over problems, 10,000 resamples. Paired differences use the problems both runs share.
- Plan. Frozen before the first measured answer, at 23:15:40 local time on November 2, 2026. sha256
24800e252cd45303cdb3473de1236783de46640bae726bd52d5fac6174f87dfd. - Changes from the plan. Listed in full below it. The main one: the test was stopped early, so of the plan's measurements only the unedited model with thinking off on MATH-500 finished, and the plan's decision rules were never applied. The edited model with thinking off, the Exp 1 maps and the MinAtar control were added after the plan.
- Modele.
Qwen/Qwen3.5-0.8B w rewizji 2fc06364, eksport tekstowy z konfiguracją autorów. Model z edycją to opublikowany przez autorów diff p50c. Tensory zgadzają się z sumami sha256 z ich manifestu. - Generowanie. vLLM 0.33.0, bfloat16, RTX 4060 8 GB, najwyżej 32 równoczesne odpowiedzi, ziarna na próbkę jak w
evaluate.py autorów, bez wczesnego przerywania pętli. - Ocenianie.
mathqa.py autorów, który odtworzył ich oceny na 400 z 400 opublikowanych próbek. - Statystyka. 95% percentylowy bootstrap po zadaniach, 10 000 losowań. Różnice sparowane liczone są na zadaniach wspólnych dla obu przebiegów.
- Plan. Zamrożony przed pierwszą mierzoną odpowiedzią, 2 listopada 2026 o 23:15:40 czasu lokalnego. sha256
24800e252cd45303cdb3473de1236783de46640bae726bd52d5fac6174f87dfd. - Zmiany względem planu. Pełna lista jest pod nim. Najważniejsza: test przerwano, więc z pomiarów z planu ukończono tylko model bez edycji z wyłączonym myśleniem na MATH-500, a reguł decyzyjnych z planu nigdy nie zastosowano. Model z edycją przy wyłączonym myśleniu, mapy z eksperymentu 1 i kontrola MinAtar doszły po planie.
The plan as frozen before the run (in English)Plan zamrożony przed przebiegiem (po angielsku)
# Sampling-control test for Experiment 8 of "Sparks of Weight-Space Programming"
Written before any of the measured conditions below were run. The only earlier GPU run was a 7-minute speed test on
MATH-500 problems outside the fixed subset; its answers are not part of any result.
## Question
The post reports that editing 0.016% of Qwen3.5-0.8B's weights raises MATH-500 from 7.9% to 48.1%, with thinking on,
temperature 0.6, top_p 0.95, top_k 20, presence penalty 1.5 and a cap of 32,768 tokens. In that setting 93% of the unedited
model's answers run into the cap.
The model card warns about thinking loops at this model size and recommends tuning the sampling. It also recommends
temperature 1.0 for thinking on text, and says the model runs in non-thinking mode by default. The post reports no control
for either. This test asks:
1. **Q1:** does the unedited model still loop at the card's recommended temperature for thinking on text?
2. **Q2:** what does the unedited model score in its default non-thinking mode?
3. **Q3:** how much does the weight edit add once the sampling is the card's recommended one?
This is a control for the size and meaning of the gain. It cannot show that the edit does nothing: the edit's effect in
the post's own setting is expected to replicate.
## Models
Unedited: `Qwen/Qwen3.5-0.8B`, revision `2fc06364715b967f1860aea9cf38778875588b17`, text-only export using the authors'
published config. Edited: the authors' published `p50c` diff applied to it. Both are checked against the sha256 values in
the authors' manifest.
## Conditions, in running order
| Name | Weights | Thinking | T | top_p | top_k | presence | Max tokens | Data | Why |
|---|---|---|---|---|---|---|---|---|---|
| N1_nothink_T07_p08_pp15 | unedited | off | 0.7 | 0.8 | 20 | 1.5 | 8,192 | MATH-500 (all, 4 samples), GSM8K (all, 2 samples) | Card's non-thinking benchmark setting |
| C0_think_T06_pp15 | unedited | on | 0.6 | 0.95 | 20 | 1.5 | 32,768 | MATH-500 subset, 1 sample | The post's baseline; calibration |
| E0_edit_T06_pp15 | edited | on | 0.6 | 0.95 | 20 | 1.5 | 32,768 | same | The post's edited model; calibration |
| C1_think_T10_pp15 | unedited | on | 1.0 | 0.95 | 20 | 1.5 | 32,768 | same | Card's recommended thinking setting for text |
| C3_think_T10_pp20 | unedited | on | 1.0 | 0.95 | 20 | 2.0 | 32,768 | same | Top of the presence range the card suggests against repetition |
| E1_edit_T10_pp15 | edited | on | 1.0 | 0.95 | 20 | 1.5 | 32,768 | same | The edit under the card's recommended setting |
| N2_nothink_T10_p10_pp20 | unedited | off | 1.0 | 1.0 | 20 | 2.0 | 8,192 | MATH-500 (all, 4 samples), GSM8K (all, 2 samples) | Card's recommended non-thinking setting for text |
| C2_think_T06_pp00 | unedited | on | 0.6 | 0.95 | 20 | 0.0 | 32,768 | MATH-500 subset, 1 sample | Card's "precise coding" setting |
The MATH-500 subset is 100 problems drawn once by `prepare_bench.py` (seed 20261102, from sorted ids). Later conditions may
be cut short by the deadline of 07:30 local time on 2026-11-03; comparisons then use the problems shared by both conditions,
and any shortened condition is labelled as such.
## Method
- vLLM 0.33.0, bfloat16, RTX 4060 (8 GB), at most 10 concurrent answers in thinking runs and 32 in non-thinking runs.
- Chat template, instruction text, per-sample seeds and grader as in the authors' `evaluate.py` and `mathqa.py`. The copied
grader reproduced the authors' grades on 400 of 400 of their published samples.
- No early stopping of loops: every answer runs to its end or to the cap.
- Primary outcomes: accuracy and share of answers cut at the token cap on MATH-500. Intervals: 95% bootstrap over problems.
## Decision rules, fixed in advance
**Calibration.** C0 and E0 must agree with the authors' scores on the same 100 problems: accuracy within the 95% interval of
the difference, and cut share within 10 points of the authors' published full-set values (93% and 33%). If either fails, the
thinking-mode conditions are reported as not comparable with the post, and the cause is investigated before any conclusion.
**Q1.** The hypothesis "the post's baseline depends strongly on temperature" counts as supported only if C1, compared with C0
on the same problems, gains at least 15 accuracy points with an interval excluding zero **and** lowers the cut share by at
least 20 points. Otherwise it counts as rejected, and that is what gets reported.
**Q2.** Descriptive. N1 and N2 are reported as they come. Non-thinking is explicitly out of scope for the edit in the post's
protocol, so these numbers give context for the gain and do not compete with the edit.
**Q3.** The edit's added value at the card's setting is E1 minus C1, reported with its interval whatever its size.
## Reporting
All conditions get reported, including those that contradict the hypothesis. Any analysis added after seeing results is labelled
exploratory. Raw answers, scripts and this plan are kept in this folder.
Every change from the plan (in English)Każda zmiana względem planu (po angielsku)
# Changes from the plan
The plan stays as frozen (sha256 `24800e252cd45303cdb3473de1236783de46640bae726bd52d5fac6174f87dfd`), and its full text is on the
results page. Everything that differs from it is listed here, in the order it happened. The decision rules have not changed,
and they were never applied (item 12).
## Before the restart, on 2026-11-02
1. **Process cleanup in `run_cond.py`, after the queue had started.** vLLM's engine outlives its parent, so a run now stops
leftover engines at start and its own engine at exit. Generation code is unchanged.
2. **Rule code added to `analyze.py`, after the queue had started.** It applies the plan's rules to the saved answers.
3. **One partial look at N1 math500**, at 218 answers (119 correct, 53 cut at 8,192 tokens), to check that the runner and the
grader worked. The count is biased because short answers finish first. It changed nothing.
4. **Exploratory additions after the freeze:** the Experiment 1 weight maps and the MinAtar control. Both are labelled exploratory.
## The restart
5. **The run stopped overnight and resumed on 2026-11-03.** It stopped with 831 of 2,000 N1 math500 answers saved, all valid.
The answers in flight were generated again on resume, so the finished condition has no gap.
## Changes made on restart, on 2026-11-03 around 05:00
Decided before any of C0, E0, C1, E1, C3, C2 or N2 had produced an answer. The only measured results known at that point were
the partial look above.
6. **Deadline moved from 07:30 to 18:00 on 2026-11-03.** With 07:30, only N1 and part of C0 would have run, so none of the
decision rules could have been applied.
7. **Running order changed** so that the conditions the decision rules need come first:
- Plan: N1 math500, N1 gsm8k, C0, E0, C1, C3, E1, N2 math500, N2 gsm8k, C2.
- Now: N1 math500, C0, E0, C1, E1, N1 gsm8k, C3, N2 math500, N2 gsm8k, C2.
8. **`run_queue_v2.sh` waits for free GPU memory before each attempt.** `run_queue.sh` is the original version. Settings, seeds
and generation are unchanged.
9. **One exploratory condition added, around 05:05 on 2026-11-03: the edited model with thinking off** (`E2_edit_nothink_T07`, the
settings of N1, MATH-500 first with 1 sample, later with 4, and GSM8K last if time allows). The plan left this out because the
post's protocol is thinking on. It answers a question the other conditions can't: does the edit add anything when the model
doesn't loop? It was added before N1 had finished and before any edited answer with thinking off existed. It sits behind
`run_queue_v3.sh`, which replaced v2 after a few minutes, and only its first 500 answers run ahead of the plan's conditions,
about 20 minutes. It decides no rule, and the page labels it exploratory.
10. **Exploratory comparisons added to `analyze.py`:** E2 minus N1, and N1 and E2 against the authors' per-problem results on all
500 problems. They use the authors' published scores directly, so they lean on the calibration of C0 and E0. Also added:
finished answers from E0 and E1 against N1 on the same problems. Finishing relates to being right within a problem, so this
describes finished answers and shows no cause. None of these comparisons decides a rule.
11. **What E2 can show, restated at about 05:50 on 2026-11-03, before E2 had finished and before any of its answers were read.**
Item 9 called thinking off the mode where the model doesn't loop. N1 then showed 31.4% of answers cut at 8,192 tokens, so this
mode often fails to finish too, and fewer cuts there would be the same defect. A comparison of finished answers, E2 against N1,
was added to `analyze.py`. The page reports accuracy, cut share and finished answers for E2, and it says the edit does more than
let answers finish only if accuracy rises and the interval for finished answers sits above zero. This decides no rule.
## Stopped early, on 2026-11-03
12. **The queue was stopped by hand at 06:24 on 2026-11-03, so most of the plan didn't run.** Finishing it would have taken about
ten more hours, and the conclusions don't wait for it.
- Finished: N1 on MATH-500 (2,000 answers) and E2 on MATH-500 (500 answers).
- Not run: E0, C1, C3, E1, C2, N2, N1 on GSM8K, and the further E2 samples and GSM8K.
- C0 was stopped at 10 of 100 answers. Those answers weren't analysed or published. Answers that finish first are the short
ones, so they would have been biased.
- So the calibration rule and the rules for Q1 and Q3 were never applied, the post's 7.9% and 48.1% weren't re-measured, and the
comparisons with the post's scores aren't calibrated. The page says nothing about temperature.