What Qwen is thinking when it gets stuck saying "Wait" Experiments posted November 2 by Rikiya Takehi, Jayden Teoh, Alex Zhang and Omar Khattab show GPT-6 Astra diagnosing why Qwen3.5-0.8B loops on math problems and fixing it by changing 0.016% of the model's weights, lifting MATH-500 accuracy from 7.9% to 48.1%. The released diff edits the MLP down-projections in layers 15 and 19 at rank one, subtracting a single direction six times over from 64 neurons per layer (W − 6uuᵀW, called "top64 alpha6"), which cuts loops by 86% versus about a third for a single-pass abliteration-style removal. In the authors' evaluation the unedited model exhausted its 32,768-token budget on 93% of MATH-500 answers, and a Jacobian-lens readout shows the edit replacing "Wait" and doubt at the loop token with "Verification", "Completion" and "Result". On November 2, Rikiya Takehi, Jayden Teoh, Alex Zhang and Omar Khattab posted a set of experiments in which GPT-6 Astra reads and edits neural network weights. The one that drew the most attention on Hacker News https://news.ycombinator.com/item?id=50341174 has Astra find why Qwen3.5-0.8B loops on math problems and fix it by changing 0.016% of its weights, which took MATH-500 from 7.9% to 48.1%. A lot of the thread decided the fix was abliteration: find a direction, project it out. The authors released the diff, so the edit can be rebuilt exactly, run locally, and read through the Jacobian lens at the token where the model decides to loop. Astra's edit subtracts one direction six times over from 64 neurons in each of two layers, so those neurons now push the opposite way at five times their old strength. Removing the direction once, the abliteration recipe, barely moves the model's odds at a single loop point, though over a full generation it still cuts loops by about a third. Astra's version cuts them by 86%. Through the lens you can see what the edit changes. At the token before another "Wait", the unedited model has nothing but "Wait" and doubt in mind, and the edited one adds "Verification", "Completion" and "Result". Claude Opus 5.5 did the work behind this page on my laptop and a mini PC. It rebuilt the edit, wrote and ran every script, spotted the alpha-6 structure in the diff, and ran the evals. The loop In the authors' evaluation the unedited model ran out of its 32,768-token budget on 93% of MATH-500 answers. Read a few of those texts and they end the same way. The model reaches an answer, checks it, and checks it again, writing "Wait, $140 6 = $840." for thousands of tokens. The authors' sampling includes a presence penalty of 1.5, which can't break a cycle like this because every token in it has already appeared and carries the same flat penalty. The decision to loop happens at one token here the whitespace after the bullet , where the model chooses between another "Wait" and moving on. That's where the lens reads in the figure above. The unedited model puts essentially all of its probability on "Wait", and from about 60% depth on, the lens finds little else in its workspace. Keep checking or stop To see what's specific to looping, the comparison below uses two kinds of decision point in the unedited model's own generations: the token before an in-loop "Wait" in 8 looping texts, and the token before