REVIEW 3 major objections 6 minor 1 cited by
Satori-SWE: Evolutionary Test-Time Scaling for Sample-Efficient Software Engineering
T0 review · 3 major / 6 minor · reviewed 2026-08-07 · deepseek-v4-flash
Pith's one-line read A 32B coding model can match a 70B baseline on SWE-Bench Verified by evolving patches through selection and mutation, with RL training making the model self-evolve without an external verifier.
desk verdict An interesting method with a likely contaminated headline result; the overlap issue needs to be resolved before the numbers can be trusted. read the letter →
The pith
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
The reading
What carries the argument
The argument runs on three mechanisms. First, the mutation operator is the language model itself: at each evolution step the editor generates patches conditioned on the previous iteration's selected patches, avoiding the syntax-breaking random mutations of classical evolutionary strategies. Second, potential-based reward shaping with potential $\Phi(y)=R(x,y)$ converts the final-score objective into a telescoping per-step reward $R(x,y_t)-R(x,y_{t-1})$, which gives a monotonic-improvement guarantee and enables local, per-iteration training. Third, a learned reward model $R$ is used both inside the RL objective and, together with regression and reproduction tests, in the final patch-selection hybrid verifier; at inference the RL-trained model can self-evolve without the reward model.
What would settle it
Take a held-out set of SWE-Bench Verified instances with known ground-truth patches; for each instance, generate the same 50-sample evolutionary pool that produced the paper's Best@50 result, then select the final patch twice---once with the learned reward model, once by executing hidden regression and reproduction tests---and compare resolution rates. If reward-model selection underperforms test-based selection by a large margin, the reward model is not faithful. A second, cheaper check: compute the reward model's binary accuracy on the held-out patches' known labels.
Extended reading notes
Core claim
The central claim is that correct patches for difficult GitHub issues are rare tail events in a small model's output distribution, and that an evolutionary loop---select, condition, mutate---can concentrate sampling on the high-scoring region with far fewer samples than independent sampling. The paper's specific discovery is that this loop can be internalized: after RL training with the potential reward $\Phi(y)=R(x,y)$ and per-step reward $R(x,y_t)-R(x,y_{t-1})$, the model improves its own reward scores across iterations without an external selector, whereas mutation-SFT alone does not. The result is Satori-SWE-32B, which resolves 35.8% of SWE-Bench Verified greedily and 41.6% at Best@50, matching the 41.0 Best@500 of the 70B SWE-RL baseline while using over 10x fewer samples and fewer than 30K open-source training instances.
Load-bearing premise
The load-bearing premise is that the learned reward model, trained on fewer than two thousand open-source instances and never evaluated against ground-truth labels, is a faithful and non-exploitable proxy for whether a patch actually fixes the issue; the same model both shapes the RL training signal and selects the final patch, so any systematic error in its scoring directly contaminates the self-evolution and Best@N claims.
Editorial extensions
If this is right
- A 32B pipeline-based editor resolves 35.8% of SWE-Bench Verified greedily, above previous small-model results and within reach of several larger proprietary systems.
- Best@50 under EvoScale reaches 41.6%, matching the 70B SWE-RL model's Best@500 with over 10x fewer sampled patches.
- The RL objective guarantees non-decreasing reward scores across evolution iterations, and the effect appears even when conditioning patches are chosen at random rather than by a reward-model selector.
- EvoScale's wall-clock cost per instance (16.6 seconds at a budget of 10) is about one-sixth that of unit-test selection (92.8 seconds), because self-evolution avoids sandbox execution during search.
- The evolutionary training stage, not RL alone, is what gives the model iterative self-improvement; removing the potential-based evolution term leaves a model that can sample well but cannot self-refine.
Reading between the lines
- If the learned reward model is a faithful judge of patch correctness, the same evolutionary-training recipe could transfer to other structured-output tasks---such as theorem-proving, data repair, or configuration fixing---where correct answers are rare but an imperfect scorer is available.
- The paper's Best@N numbers inherit the reward model's blind spots: since $R$ is trained on only 1,889 unique instances and is never checked against ground-truth labels, a fair test would evaluate self-evolved patches by hidden-test execution alone and compare resolution rates with and without reward-model selection.
- The monotonic-improvement guarantee is about the reward model's score, not about true correctness; if the paper's mechanism evidence were re-plotted against pass/fail on hidden tests, the monotonicity might weaken or disappear.
- A practical implication the paper leaves implicit: the retriever becomes a bottleneck once editing improves, so gains from EvoScale may grow further if the retriever is also evolved or trained on harder instances.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper proposes EvoScale, an evolutionary test-time scaling method for software engineering: iteratively generate patch samples, select or condition on previous patches, and (with RL training) self-evolve without external verifiers. The authors train a 32B model (Satori-SWE-32B) on ~29K open-source instances and report 35.8 greedy and 41.6 Best@50 on SWE-Bench Verified, claiming parity with Llama3-SWE-RL-70B Best@500 at >10x lower sampling cost. They also present a potential-based RL objective and a monotonic-improvement theorem.
Significance. If the empirical results prove clean, the paper makes a useful contribution: it demonstrates that small models can approach large-model performance on realistic SWE tasks through iterative self-refinement, and it provides a practical RL recipe for learning to mutate patches. The authors evaluate on the external SWE-Bench Verified benchmark, report runtime comparisons, and promise open-sourced code and data. The main concerns are (i) potential train/eval contamination, (ii) a theory that does not cover the actual RL objective, and (iii) reliance on the same learned reward model for both training and final selection, which clouds the claimed self-evolution mechanism. These issues are addressable but are central to the paper's headline claims.
major comments (3)
- [Section 5.1 and Appendix D.1] The training pool is stated to come from SWE-Fixer and SWE-Gym. SWE-Gym is built from SWE-bench tasks, and SWE-bench Verified is a subset of SWE-bench. The filtering described in Appendix D.1 does not remove SWE-bench instances. The paper must report the overlap between the 29,404 training instances and the 500 evaluation instances, exclude overlapping instances, and rerun Table 1. Until this is done, the claimed 35.8 greedy and 41.6 Best@50, and the >10x sample-efficiency advantage over Llama3-SWE-RL-70B, are not reliable.
- [Section 4.4, Eq. (5) and Eq. (6)] Proposition 1 proves monotonicity only for a myopic argmax policy. The actual policy is trained with Eq. (6), which adds a bonus term R(x,y) not present in Eq. (5), and is stochastic. Therefore the sentence in Section 4.4 ('training with the potential reward in Equation (5) guarantees that R(x,yt) ≥ R(x,yt-1)') is not justified for the trained model. Please either extend the analysis to the actual objective or relax the claim to 'the training objective encourages...' and state explicitly that the theoretical guarantee does not apply to the learned policy.
- [Section 4.3 vs Section 5.3 and abstract] The same reward model R is used in the RL objective and in the final patch-selection pipeline. R is trained on only 1,889 unique instances (Appendix D.6) and is never evaluated against ground-truth correctness. As a result, the monotonic self-evolution evidence in Figures 4-6 is essentially improvement in the objective being optimized, and the Best@N numbers in Table 1 depend on this R plus unit tests. Moreover, the abstract's claim that the model self-evolves 'rather than relying on external verifiers at inference time' is contradicted by Section 5.3, which uses both the reward model and unit tests for selection. The paper should report pure self-evolution results on SWE-bench Verified or adjust the abstract and contribution claims.
minor comments (6)
- [Section 5.1] The definition of the 'Greedy' metric says 'zero-shot pass@1 accuracy' but then allows up to five random samples until syntactically correct; this is not a strict greedy/pass@1 metric and should be renamed or described differently for fair comparison with other models' greedy numbers.
- [Appendix D.2] The text says 'use VERL [27]' but reference [27] is HybridFlow; please correct the citation or the framework name.
- [Figure 5 caption] The phrase 'validating our theoretical results' overstates the connection, since Proposition 1 does not apply to the stochastic learned policy; suggest 'consistent with the spirit of Proposition 1'.
- [Section 5.3 and Table 1] The comparison with Llama3-SWE-RL-70B is not controlled for model size, scaffold, or retrieval; the '>10x lower sampling cost' claim refers only to patch samples and should be qualified.
- [Section 4.4, Assumption 1] Assumption 1 requires that from every patch there exists a finite non-decreasing path; this is not established for the learned reward model and should be either proved for R or discussed as an idealization.
- [Abstract and Section 6] The claim 'matching or exceeding models with over 100B parameters' is supported only on SWE-Bench Verified; the paper should avoid implying generality beyond that benchmark.
Circularity Check
External SWE-bench result is not circular, but the monotonic-improvement proof is definitional and the Figure 5 self-evolution validation measures the training objective.
-
self definitional
[Section 4.4, Definition 1 and Proposition 1]
"Definition 1 (Myopic Policy). Define the one-step action-value Q0(y, y′) = Φ(y′) − Φ(y), y, y′ ∈ Y. The myopic policy π0 selects, at each state y, any successor that maximizes Q0: π0(y) ∈ arg maxy′∈Y Φ(y′) − Φ(y). Proposition 1 (Monotonic Improvement). Under Assumption 1, any trajectory {yt}t≥0 generated by the myopic policy π0 satisfies Φ(yt) ≥ Φ(yt−1) ... Proof. By definition of π0, at each step yt ∈ arg maxy′ Φ(y′)−Φ(yt−1). Hence Φ(yt)−Φ(yt−1) ≥ 0"
The property to be proven (monotonic Φ increase) is inserted into the definition of π0 as the argmax of the score difference Φ(y′)−Φ(y). Proposition 1 therefore restates the definition; it cannot serve as independent evidence that RL training (Eq. 5/6) yields monotonic improvement. The paper then asserts 'Thus the learned policy produces non-decreasing scores over iterations,' equating the trained policy with the definitionally monotone myopic policy. The guarantee is a tautology for π0 and an unsupported identification for the learned policy, not a derived prediction.
-
fitted input called prediction
[Section 5.2, Figure 5]
"We further analyze the evolutionary behavior of the SFT and RL models by measuring the average reward score of the patch samples generated at each iteration. ... In contrast, the RL model trained with potential-based reward, naturally learns to self-evolve without any external guidance. Its reward scores improve monotonically across iterations, aligns with our theoretical analysis in Section 4.4."
The RL objective (Eq. 5, implemented as Eq. 6) trains the policy to maximize R(x,y) − Σ R(x,ȳi) plus an R(x,y) bonus, with the same learned reward model R used in Figure 5. Thus 'average reward score' is the exact quantity being optimized; monotonic R improvement across iterations is the training signal, not an independent measure of self-evolution. The resolved-instance curves in Figures 4 and 6 provide external evidence, but the monotonic-reward validation cited here reduces by construction to the fitted reward model and the training objective.
full rationale
The headline numbers in Table 1 are measured on the external SWE-bench Verified benchmark, and the sample-efficiency comparison to Llama3-SWE-RL-70B is therefore not circular. The self-citations ([25] for evolutionary inspiration, [26] for sparse-reward RL) are not load-bearing; no uniqueness theorem or ansatz is imported from the authors' prior work. The circularity is confined to two places. First, Proposition 1 defines the myopic policy as the argmax of the score difference and then 'proves' monotonicity from that definition; the additional step equating the trained RL policy with this myopic policy is an unsupported identification, so the theoretical guarantee is a tautology rather than a derivation. Second, the self-evolution validation in Figure 5 reports average reward-model scores, which is exactly the training objective of Eq. 5/6 (potential reward plus R bonus), so monotonic improvement in R is the fitted signal being optimized, not independent evidence. Independent resolved-instance curves (Figures 4b and 6) partially support the self-evolution claim, and Table 1 remains externally grounded, which is why the overall score is moderate rather than high. The possible SWE-bench overlap in the SWE-Fixer/SWE-Gym training pool is an evaluation-contamination risk, not a circularity, and is not counted here.
Assumptions & free parameters
free parameters (4)
- Format penalty weight lambda =
not reported
- Evolution hyperparameters (M, K, T) =
M=10, K=5, T=4 in Section 5.1; M=25, N=50 in Section 5.3
- Mutation sampling temperature =
1.2
- Bonus reward coefficient =
not reported
assumptions (4)
- ad hoc to paper Assumption 1 (Phi-monotonicity): from any patch there exists a finite patch sequence with non-decreasing R scores
- domain assumption Reward model R(x,y) approximates true patch correctness
- domain assumption Teacher model DeepSeek-V3-0324 generates correct CoT traces and oracle-matching patches for SFT data
- domain assumption Training data (SWE-Fixer, SWE-Gym) is disjoint from SWE-Bench Verified
Cite this review
Pith. "Pith review of Satori-SWE: Evolutionary Test-Time Scaling for Sample-Efficient Software Engineering." pith.science (2026). https://pith.science/paper/IVY2WW6W
@misc{pith2026250523604,
author = {Pith},
title = {Pith review of: Satori-SWE: Evolutionary Test-Time Scaling for Sample-Efficient Software Engineering},
year = {2026},
howpublished = {\url{https://pith.science/paper/IVY2WW6W}},
note = {Machine review of arXiv:2505.23604}
}
read the original abstract
Language models (LMs) perform well on standardized coding benchmarks but struggle with real-world software engineering tasks such as resolving GitHub issues in SWE-Bench, especially when model parameters are less than 100B. While smaller models are preferable in practice due to their lower computational cost, improving their performance remains challenging. Existing approaches primarily rely on supervised fine-tuning (SFT) with high-quality data, which is expensive to curate at scale. An alternative is test-time scaling: generating multiple outputs, scoring them using a verifier, and selecting the best one. Although effective, this strategy often requires excessive sampling and costly scoring, limiting its practical application. We propose Evolutionary Test-Time Scaling (EvoScale), a sample-efficient method that treats generation as an evolutionary process. By iteratively refining outputs via selection and mutation, EvoScale shifts the output distribution toward higher-scoring regions, reducing the number of samples needed to find correct solutions. To reduce the overhead from repeatedly sampling and selection, we train the model to self-evolve using reinforcement learning (RL). Rather than relying on external verifiers at inference time, the model learns to self-improve the scores of its own generations across iterations. Evaluated on SWE-Bench-Verified, EvoScale enables our 32B model, Satori-SWE-32B, to match or exceed the performance of models with over 100B parameters while using a few samples. Code, data, and models will be fully open-sourced.
Figures
Figures from the paper (5 more)
Forward citations
Cited by 1 Pith paper
-
Pushing Forward Pareto Frontiers of Proactive Agents with Behavioral Agentic Optimization
BAO, a behavior-enhanced SFT plus regularized RL pipeline, improves proactive agents' task performance while lowering user-involvement rate, beating UserRL baselines on three UserRL gym tasks.
Reference graph
Works this paper leans on
-
[1]
Introducing claude 3.7 sonnet, 2025., 2025
Anthropic. Introducing claude 3.7 sonnet, 2025., 2025. URL https://www.anthropic.com/ claude/sonnet. 9
2025
-
[2]
SWE-search: Enhancing software agents with monte carlo tree search and iterative refinement
Antonis Antoniades, Albert Örwall, Kexun Zhang, Yuxi Xie, Anirudh Goyal, and William Yang Wang. SWE-search: Enhancing software agents with monte carlo tree search and iterative refinement. In The Thirteenth International Conference on Learning Representations, 2025. URLhttps://openreview.net/forum?id=G7sIFXugTX. 3
2025
-
[3]
Le, Christopher Ré, and Azalia Mirhoseini
Bradley Brown, Jordan Juravsky, Ryan Ehrlich, Ronald Clark, Quoc V . Le, Christopher Ré, and Azalia Mirhoseini. Large language monkeys: Scaling inference compute with repeated sampling, 2024. URL https://arxiv.org/abs/2407.21787. 2, 3
arXiv 2024
-
[4]
Mark Chen, Jerry Tworek, Heewoo Jun, Qiming Yuan, Henrique Ponde de Oliveira Pinto, Jared Kaplan, Harri Edwards, Yuri Burda, Nicholas Joseph, Greg Brockman, Alex Ray, Raul Puri, Gretchen Krueger, Michael Petrov, Heidy Khlaaf, Girish Sastry, Pamela Mishkin, Brooke Chan, Scott Gray, Nick Ryder, Mikhail Pavlov, Alethea Power, Lukasz Kaiser, Mohammad Bavarian...
2021
-
[5]
Training verifiers to solve math word problems
Karl Cobbe, Vineet Kosaraju, Mohammad Bavarian, Mark Chen, Heewoo Jun, Lukasz Kaiser, Matthias Plappert, Jerry Tworek, Jacob Hilton, Reiichiro Nakano, et al. Training verifiers to solve math word problems. arXiv preprint arXiv:2110.14168, 2021. 2, 4
-
[6]
Codemonkeys: Scaling test-time compute for software engineering
Ryan Ehrlich, Bradley Brown, Jordan Juravsky, Ronald Clark, Christopher Ré, and Azalia Mirhoseini. Codemonkeys: Scaling test-time compute for software engineering. arXiv preprint arXiv:2501.14723, 2025. 3
arXiv 2025
-
[7]
Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning
Daya Guo, Dejian Yang, Haowei Zhang, Junxiao Song, Ruoyu Zhang, Runxin Xu, Qihao Zhu, Shirong Ma, Peiyi Wang, Xiao Bi, et al. Deepseek-r1: Incentivizing reasoning capability in llms via reinforcement learning. arXiv preprint arXiv:2501.12948, 2025. 9
arXiv 2025
-
[8]
The cma evolution strategy: A tutorial
Nikolaus Hansen. The cma evolution strategy: A tutorial. arXiv preprint arXiv:1604.00772,
Show all 113 references
-
[9]
Training compute-optimal large language models
Jordan Hoffmann, Sebastian Borgeaud, Arthur Mensch, Elena Buchatskaya, Trevor Cai, Eliza Rutherford, Diego de Las Casas, Lisa Anne Hendricks, Johannes Welbl, Aidan Clark, et al. Training compute-optimal large language models. arXiv preprint arXiv:2203.15556, 2022. 2, 3
2022 arXiv
-
[10]
Openrlhf: An easy-to-use, scalable and high-performance rlhf framework
Jian Hu, Xibin Wu, Zilin Zhu, Xianyu, Weixun Wang, Dehao Zhang, and Yu Cao. Openrlhf: An easy-to-use, scalable and high-performance rlhf framework. arXiv preprint arXiv:2405.11143,
-
[11]
Reinforce++: An efficient rlhf algorithm with robustness to both prompt and reward models, 2025
Jian Hu, Jason Klein Liu, and Wei Shen. Reinforce++: An efficient rlhf algorithm with robustness to both prompt and reward models, 2025. URL https://arxiv.org/abs/2501. 03262. 32, 33, 34
2025
-
[12]
Qwen2.5-coder technical report, 2024
Binyuan Hui, Jian Yang, Zeyu Cui, Jiaxi Yang, Dayiheng Liu, Lei Zhang, Tianyu Liu, Jiajun Zhang, Bowen Yu, Keming Lu, Kai Dang, Yang Fan, Yichang Zhang, An Yang, Rui Men, Fei Huang, Bo Zheng, Yibo Miao, Shanghaoran Quan, Yunlong Feng, Xingzhang Ren, Xuancheng Ren, Jingren Zhou...
2024 arXiv
-
[13]
Livecodebench: Holistic and contamination free evaluation of large language models for code
Naman Jain, King Han, Alex Gu, Wen-Ding Li, Fanjia Yan, Tianjun Zhang, Sida Wang, Ar- mando Solar-Lezama, Koushik Sen, and Ion Stoica. Livecodebench: Holistic and contamination free evaluation of large language models for code. InThe Thirteenth International Conference on Lear...
2025
-
[14]
R2e- gym: Procedural environments and hybrid verifiers for scaling open-weights swe agents
Naman Jain, Jaskirat Singh, Manish Shetty, Liang Zheng, Koushik Sen, and Ion Stoica. R2e- gym: Procedural environments and hybrid verifiers for scaling open-weights swe agents. arXiv preprint arXiv:2504.07164, 2025. 3, 4
2025 arXiv
-
[15]
SWE-bench: Can language models resolve real-world github issues? In The Twelfth International Conference on Learning Representations , 2024
Carlos E Jimenez, John Yang, Alexander Wettig, Shunyu Yao, Kexin Pei, Ofir Press, and Karthik R Narasimhan. SWE-bench: Can language models resolve real-world github issues? In The Twelfth International Conference on Learning Representations , 2024. URL https: //openreview.net/...
2024
-
[16]
Going beyond heuristics by imposing policy improvement as a constraint
Chi-Chang Lee, Zhang-Wei Hong, and Pulkit Agrawal. Going beyond heuristics by imposing policy improvement as a constraint. Advances in Neural Information Processing Systems, 37: 138032–138087, 2024. 6
2024
-
[17]
Let’s verify step by step
Hunter Lightman, Vineet Kosaraju, Yuri Burda, Harrison Edwards, Bowen Baker, Teddy Lee, Jan Leike, John Schulman, Ilya Sutskever, and Karl Cobbe. Let’s verify step by step. In The Twelfth International Conference on Learning Representations, 2023. 2, 4
2023
-
[18]
Deepseek-v3 technical report
Aixin Liu, Bei Feng, Bing Xue, Bingxuan Wang, Bochao Wu, Chengda Lu, Chenggang Zhao, Chengqi Deng, Chenyu Zhang, Chong Ruan, et al. Deepseek-v3 technical report. arXiv preprint arXiv:2412.19437, 2024. 9
2024 arXiv
-
[19]
Lingma swe-gpt: An open development-process-centric language model for automated software improvement
Yingwei Ma, Rongyu Cao, Yongchang Cao, Yue Zhang, Jue Chen, Yibo Liu, Yuchen Liu, Binhua Li, Fei Huang, and Yongbin Li. Lingma swe-gpt: An open development-process-centric language model for automated software improvement. arXiv preprint arXiv:2411.00622, 2024. 3, 9
2024 arXiv
-
[20]
Thinking longer, not larger: Enhancing software engineering agents via scaling test-time compute, 2025
Yingwei Ma, Yongbin Li, Yihong Dong, Xue Jiang, Rongyu Cao, Jue Chen, Fei Huang, and Binhua Li. Thinking longer, not larger: Enhancing software engineering agents via scaling test-time compute, 2025. URL https://arxiv.org/abs/2503.23803. 3
2025 arXiv
-
[21]
Policy invariance under reward transforma- tions: Theory and application to reward shaping
Andrew Y Ng, Daishi Harada, and Stuart Russell. Policy invariance under reward transforma- tions: Theory and application to reward shaping. In Icml, volume 99, pages 278–287, 1999. 2, 6
1999
-
[22]
Training software engineering agents and verifiers with SWE-gym
Jiayi Pan, Xingyao Wang, Graham Neubig, Navdeep Jaitly, Heng Ji, Alane Suhr, and Yizhe Zhang. Training software engineering agents and verifiers with SWE-gym. In ICLR 2025 Third Workshop on Deep Learning for Code, 2025. URL https://openreview.net/forum?id= lpFFpTbi9s. 1, 2, 3,...
2025
-
[23]
Evolution strategies as a scalable alternative to reinforcement learning
Tim Salimans, Jonathan Ho, Xi Chen, Szymon Sidor, and Ilya Sutskever. Evolution strategies as a scalable alternative to reinforcement learning. arXiv preprint arXiv:1703.03864, 2017. 2
2017 arXiv
-
[24]
Zhihong Shao, Peiyi Wang, Qihao Zhu, Runxin Xu, Junxiao Song, Xiao Bi, Haowei Zhang, Mingchuan Zhang, Y . K. Li, Y . Wu, and Daya Guo. Deepseekmath: Pushing the limits of mathematical reasoning in open language models, 2024. URL https://arxiv.org/abs/ 2402.03300. 3
2024 arXiv
-
[25]
Reliable gradient-free and likelihood-free prompt tuning
Maohao Shen, Soumya Ghosh, Prasanna Sattigeri, Subhro Das, Yuheng Bu, and Gregory Wornell. Reliable gradient-free and likelihood-free prompt tuning. InFindings of the Association for Computational Linguistics: EACL 2023. Association for Computational Linguistics, 2023. URLhttp...
2023
-
[26]
Satori: Reinforcement learning with Chain-of-Action-Thought enhances llm reasoning via autoregressive search
Maohao Shen, Guangtao Zeng, Zhenting Qi, Zhang-Wei Hong, Zhenfang Chen, Wei Lu, Gregory Wornell, Subhro Das, David Cox, and Chuang Gan. Satori: Reinforcement learning with Chain-of-Action-Thought enhances llm reasoning via autoregressive search. arXiv preprint arXiv:2502.02508...
2025 arXiv
-
[27]
Hybridflow: A flexible and efficient RLHF framework
Guangming Sheng, Chi Zhang, Zilingfeng Ye, Xibin Wu, Wang Zhang, Ru Zhang, Yanghua Peng, Haibin Lin, and Chuan Wu. Hybridflow: A flexible and efficient RLHF framework. In Proceedings of the Twentieth European Conference on Computer Systems. ACM, 2025. 31
2025
-
[28]
Scaling LLM test- time compute optimally can be more effective than scaling parameters for reasoning
Charlie Victor Snell, Jaehoon Lee, Kelvin Xu, and Aviral Kumar. Scaling LLM test- time compute optimally can be more effective than scaling parameters for reasoning. In The Thirteenth International Conference on Learning Representations , 2025. URL https: //openreview.net/foru...
2025
-
[29]
Reinforcement learning: An introduction
Richard S Sutton and Andrew G Barto. Reinforcement learning: An introduction. 2018. 6
2018
-
[30]
Xu, Xiangru Tang, Mingchen Zhuge, Jiayi Pan, Yueqi Song, Bowen Li, Jaskirat Singh, Hoang H
Xingyao Wang, Boxuan Li, Yufan Song, Frank F. Xu, Xiangru Tang, Mingchen Zhuge, Jiayi Pan, Yueqi Song, Bowen Li, Jaskirat Singh, Hoang H. Tran, Fuqiang Li, Ren Ma, Mingzhang Zheng, Bill Qian, Yanjun Shao, Niklas Muennighoff, Yizhe Zhang, Binyuan Hui, Junyang Lin, Robert Brenna...
2025
-
[31]
Swe-rl: Advancing llm reasoning via reinforcement learning on open software evolution
Yuxiang Wei, Olivier Duchenne, Jade Copet, Quentin Carbonneaux, Lingming Zhang, Daniel Fried, Gabriel Synnaeve, Rishabh Singh, and Sida I Wang. Swe-rl: Advancing llm reasoning via reinforcement learning on open software evolution. arXiv preprint arXiv:2502.18449, 2025. 2, 3, 4...
2025 arXiv
-
[32]
Natural evolution strategies
Daan Wierstra, Tom Schaul, Tobias Glasmachers, Yi Sun, Jan Peters, and Jürgen Schmidhuber. Natural evolution strategies. The Journal of Machine Learning Research, 15(1):949–980, 2014. 2
2014
-
[33]
Agentless: Demystifying llm-based software engineering agents, 2024
Chunqiu Steven Xia, Yinlin Deng, Soren Dunn, and Lingming Zhang. Agentless: Demystifying llm-based software engineering agents, 2024. URL https://arxiv.org/abs/2407.01489. 1, 2, 3, 4, 9, 14, 30, 31, 34
2024 arXiv
-
[34]
Swe- fixer: Training open-source llms for effective and efficient github issue resolution, 2025
Chengxing Xie, Bowen Li, Chang Gao, He Du, Wai Lam, Difan Zou, and Kai Chen. Swe- fixer: Training open-source llms for effective and efficient github issue resolution, 2025. URL https://arxiv.org/abs/2501.05040. 1, 2, 3, 5, 7, 9
2025 arXiv
-
[35]
SWE-agent: Agent-computer interfaces enable automated soft- ware engineering
John Yang, Carlos E Jimenez, Alexander Wettig, Kilian Lieret, Shunyu Yao, Karthik R Narasimhan, and Ofir Press. SWE-agent: Agent-computer interfaces enable automated soft- ware engineering. In The Thirty-eighth Annual Conference on Neural Information Processing Systems, 2024. ...
2024
-
[36]
Jimenez, Alexander Wettig, Kabir Khandpur, Yanzhe Zhang, Binyuan Hui, Ofir Press, Ludwig Schmidt, and Diyi Yang
John Yang, Kilian Leret, Carlos E. Jimenez, Alexander Wettig, Kabir Khandpur, Yanzhe Zhang, Binyuan Hui, Ofir Press, Ludwig Schmidt, and Diyi Yang. Swe-smith: Scaling data for software engineering agents, 2025. URL https://arxiv.org/abs/2504.21798. 2, 3, 5
2025 arXiv
-
[37]
Autocoderover: Au- tonomous program improvement
Yuntong Zhang, Haifeng Ruan, Zhiyu Fan, and Abhik Roychoudhury. Autocoderover: Au- tonomous program improvement. In Proceedings of the 33rd ACM SIGSOFT International Symposium on Software Testing and Analysis, pages 1592–1604, 2024. 9 12 Appendix A Additional Experiments 13 B ...
2024
-
[38]
Generate correct patches even when all prior patches are incorrect—essential for making progress when initial generations fail
-
[39]
Generate correct patches when most prior patches are incorrect—common in practice, requiring the model to identify and build on the few correct ones
-
[40]
dim_0",
Preserve correctness when all prior patches are correct—ensuring the model doesn’t over-edit and degrade already correct solutions. We present examples below to illustrate each of these capabilities. B.1 Type 1: Prior patches are all wrong Problem Statement 1 sum: min_count is...
-
[41]
Peer Patch Review: - All five patches are essentially identical in their approach to solving the issue. They all modify the same section of code in _maybe_null_out() to handle the case where axis is a list/tuple by calculating the product of the sizes of the reduced dimensions...
-
[42]
Issue Analysis: - The problem occurs when using sum() with min_count on multiple dimensions because the current code only checks the size of one dimension (the first in the axis list) rather than the total number of elements being reduced. ,→ ,→ - The intended behavior is that...
-
[43]
,→ ,→ - For single dimension reductions, we can keep the existing behavior of using just mask.shape[axis]
Solution Approach: - The key change needed is in the _maybe_null_out() function where it calculates null_mask for multi-dimensional reductions.,→ 17 - When axis is a list/tuple, we should calculate the total number of elements being reduced by taking the product of the sizes o...
-
[44]
"" if hasattr(axis,
Code Localization: - The issue is in xarray/core/nanops.py in the _maybe_null_out() function. - The specific location is where it calculates null_mask for multi-dimensional reductions (when axis is not None and result has ndim).,→ - The current code uses mask.shape[axis] which...
-
[45]
Mul"] - 1 might be too low since we want to group at the same level as MUL args,→ - Patch 2: - Uses PRECEDENCE[
Peer Patch Review: - Patch 1: - Correctly identifies the need to use a lower precedence than MUL to force parentheses - The solution is reasonable since MUL precedence is high enough to always add needed parens - However, using PRECEDENCE["Mul"] - 1 might be too low since we w...
-
[46]
Issue Analysis: - The issue shows that when a Subs expression is multiplied by a coefficient (like 3*Subs(-x+y, (x,),(1,))), the expression inside Subs isn't properly parenthesized in LaTeX output,→ - The current code just prints the expression directly without considering its...
-
[47]
Solution Approach: - The key is to modify the _print_Subs method to always parenthesize the expression using the MUL precedence level,→ - This ensures that when Subs appears in a multiplication context, it will be properly grouped with parentheses,→ - Using MUL precedence is a...
-
[48]
<stdin>", line 1, in <module> File
Code Localization: - The issue is in sympy/printing/latex.py in the _print_Subs method - The current implementation directly prints the expression without any parenthesizing - We need to modify it to use the parenthesize method with MUL precedence Evolved Patch diff --git a/sy...
-
[49]
x is in S
Peer Patch Review: - Patch 1: This patch correctly identifies that the set being contained in (self.args[1]) is the most meaningful set representation of a Contains object. The implementation is simple and correct. ,→ ,→ - Patch 2: Similar to Patch 1 but with slightly differen...
-
[50]
Issue Analysis: - The issue occurs when Contains.as_set() returns the Contains object itself instead of a proper set.,→ - This causes problems because other code expects a set with as_relational() method. - The correct behavior should be to return the set that x is being teste...
-
[51]
x is in S
Solution Approach: - The simplest and most correct solution is to modify as_set() to return self.args[1], which is the set being tested for containment.,→ - This matches the mathematical interpretation that Contains(x, S) means "x is in S", so the set representation is just S....
-
[52]
x is in S
Code Localization: - The issue is in sympy/sets/contains.py in the Contains class. - The problematic method is as_set() which currently raises NotImplementedError. - The fix is to modify this method to return self.args[1]. Evolved Patch diff --git a/sympy/sets/contains.py b/sy...
2019
-
[53]
Peer Patch Review: - Patch 1: - Correctly identifies the need to modify the mode attribute when accessed - Uses __getattr__ to intercept the mode attribute and remove 'b' - Simple and effective solution that matches the issue requirements - Correctly maintains all other attrib...
-
[54]
Issue Analysis: - The problem occurs when youtube-dl checks the mode of the captured output stream - It sees 'b' in the mode and tries to write bytes when the EncodedFile expects str - The solution needs to make the EncodedFile appear as a text stream (no 'b' in mode) - While ...
-
[55]
Solution Approach: - The key is to intercept access to the 'mode' attribute of the underlying buffer - When 'mode' is accessed, we should return the mode string with 'b' removed - All other attribute access should continue to work normally from the buffer - This matches exactl...
-
[56]
""Ensure that file.name is a string
Code Localization: - The issue is in the EncodedFile class in src/_pytest/capture.py - Need to modify the class to add a mode property that removes 'b' from the underlying buffer's mode - All other behavior should remain unchanged Evolved Patch diff --git a/src/_pytest/capture...
1999
-
[57]
Peer Patch Review: - Patch 1: - Correctly identifies the need to zero-pad the year using '%04d' - The comment explains the issue well for years < 1000 - Simple and correct solution that matches the issue requirements - Patch 2: - Similar to Patch 1 but with slightly different ...
-
[58]
4 digits
Issue Analysis: - The issue states that DateFormat.Y() should always return a 4-digit year padded with zeros - Currently it returns the raw year number which doesn't zero-pad for years < 1000 - The fix requires modifying the Y() method to format the year as a 4-digit string wi...
-
[59]
Solution Approach: - The solution is to modify the Y() method to use string formatting with '%04d' - This will ensure the year is always returned as a 4-character string with leading zeros if needed - The change is simple and focused on just the Y() method where the issue occurs
-
[60]
Year, 4 digits; e.g. '1999'
Code Localization: - The issue is in django/utils/dateformat.py in the DateFormat class - The problematic method is Y() which currently just returns self.data.year - Need to modify it to return '%04d' % self.data.year instead Evolved Patch diff --git a/django/utils/dateformat....
1999
-
[61]
Enclose reasoning process within `<think>...</think>`
-
[62]
Always return exactly 5 files, Do Not output less than 5 or more than 5 files
Please only provide the full path and return 5 most important files. Always return exactly 5 files, Do Not output less than 5 or more than 5 files
-
[63]
Wrap all files together within `<file>...</file>`
The returned files should be separated by new lines ordered by most to least important. Wrap all files together within `<file>...</file>`
-
[64]
### Examples ### <think>
Do not include any explanations after `</think>`, only provide the file path within `<file>...</file>`. ### Examples ### <think>
-
[65]
Check the files in provided repository structure for relevance
-
[66]
</think> <file> file1.py file2.py file3.py file4.py file5.py </file> --- Please provide your response below
Confirm that the issue might be most relevant to 5 relevant files... </think> <file> file1.py file2.py file3.py file4.py file5.py </file> --- Please provide your response below. Prompt Template — Retrieval Reward Model You are an expert software engineer and seasoned code revi...
-
[69]
- Explain how each snippet relates to the sub-task
**Code Localization and Editing**: For each sub-task: - Identify relevant code snippets by file path and code location. - Explain how each snippet relates to the sub-task. - Describe how the code should be changed and justify your reasoning. - After thorough explanation, provi...
-
[79]
</think> ```python # Final patch here (must match the oracle patch exactly) ``` --- Please provide your response
Apply necessary changes... </think> ```python # Final patch here (must match the oracle patch exactly) ``` --- Please provide your response. Prompt Template — Code Editing Model (Classical SFT) You are an expert software engineer and seasoned code reviewer, specializing in bug...
-
[80]
Explain what the problem is, why it matters, and what 36 the intended behavior should be
**Issue Analysis**: Start by thoroughly analyzing the issue. Explain what the problem is, why it matters, and what 36 the intended behavior should be. Identify the key goals and constraints that must be addressed in your solution
-
[84]
Justify the exclusion of any sections that are not relevant.,→
**Comprehensive and Concise**: Address all relevant aspects of the issue comprehensively while being concise. Justify the exclusion of any sections that are not relevant.,→
-
[93]
The end of the replace block: >>>>>>> REPLACE If, in `Files to be Modified` part, there are multiple files or multiple locations in a single file require changes. You should provide separate patches for each modification, clearly indicating the file name and the specific locat...
-
[95]
Apply necessary changes... </think> ```python ### mathweb/flask/app.py <<<<<<< SEARCH from flask import Flask ======= import math from flask import Flask >>>>>>> REPLACE ``` ```python ### mathweb/utils/calc.py <<<<<<< SEARCH def calculate_area(radius): return 3.14 * radius * r...
-
[96]
Identify whether each patch resolves the issue correctly, partially, or incorrectly
**Patch Review**: Carefully evaluate each of the several candidate patches **individually**. Identify whether each patch resolves the issue correctly, partially, or incorrectly. If you identify any issues (e.g., logical errors, misunderstandings of the bug, overlooked edge cas...
-
[97]
Your patch should:,→ - Be grounded solely in the issue description and provided source code
**Patch Synthesis**: After analyzing all several candidate patches, synthesize your understanding to produce your **own final code patch** that fully resolves the issue. Your patch should:,→ - Be grounded solely in the issue description and provided source code. - Be informed ...
-
[100]
- Explain how each snippet relates to the sub-task
**Code Localization and Editing**: For each sub-task: - Identify relevant code snippets by file path and code location. - Explain how each snippet relates to the sub-task. - Describe how the code should be changed and justify your reasoning. - Incorporate useful insights from ...
-
[101]
Do not reference or imply knowledge of the oracle patch.,→
**Independent and Evidence-Based Reasoning**: Your reasoning must be constructed as if independently derived, based solely on the issue and code. Do not reference or imply knowledge of the oracle patch.,→
-
[102]
**Clarity and Justification**: Ensure that each reasoning step is clear, well-justified, and easy to follow
-
[103]
**Comprehensiveness with Focus**: Address all relevant components of the issue while remaining concise and focused.,→
-
[104]
**Faithful Final Output**: Your final code output must match the oracle patch exactly
-
[105]
based on the oracle,
**Strict Neutrality**: Treat the oracle patch purely as a grading mechanism. Any hint of knowing the patch in your reasoning (e.g., “based on the oracle,” “we can verify,” or “as we see in the patch”) will result in exam failure. ,→ ,→ --- # Response Format
-
[107]
The final oracle patch should be output in a standalone Python code block *after* the </think> block
-
[108]
Example: <think>
Do not include any commentary or justification after the </think> block. Example: <think>
-
[109]
- Review of patch-2:
Review of candidate patch: - Review of patch-1: ... - Review of patch-2: ... -
-
[111]
Locate the relevant code... 38
-
[112]
</think> ```python # Final patch here (must match the oracle patch exactly) ``` --- Please provide your response
Apply necessary changes... </think> ```python # Final patch here (must match the oracle patch exactly) ``` --- Please provide your response. Prompt Template — Code Editing Model (Mutation SFT) You are an expert software engineer and seasoned code reviewer, specializing in bug ...
-
[113]
Identify whether each patch resolves the issue correctly, partially, or incorrectly
**Patch Review**: Carefully evaluate each of the five candidate patches **individually**. Identify whether each patch resolves the issue correctly, partially, or incorrectly. If you identify any issues (e.g., logical errors, misunderstandings of the bug, overlooked edge cases,...
-
[114]
Your patch should:,→ - Be grounded solely in the issue description and provided source code
**Patch Synthesis**: After analyzing all five candidate patches, synthesize your understanding to produce your **own final code patch** that fully resolves the issue. Your patch should:,→ - Be grounded solely in the issue description and provided source code. - Be informed by ...
-
[115]
Explain what the problem is, why it matters, and what the intended behavior should be
**Issue Analysis**: Start by thoroughly analyzing the issue. Explain what the problem is, why it matters, and what the intended behavior should be. Identify the key goals and constraints that must be addressed in your solution.,→
-
[116]
Describe the purpose of each sub-task and how it contributes to solving the overall problem.,→
**Task Decomposition**: Break down the issue into smaller, manageable sub-tasks. Describe the purpose of each sub-task and how it contributes to solving the overall problem.,→
-
[117]
- Explain how each snippet relates to the sub-task
**Code Localization and Editing**: For each sub-task: - Identify relevant code snippets by file path and code location. - Explain how each snippet relates to the sub-task. - Describe how the code should be changed and justify your reasoning. - After thorough explanation, provi...
-
[118]
**Clear and Evidence-Based Reasoning**: Provide clear and precise reasoning for each step, strictly based on the provided issue and code without inferring information not explicitly stated.,→
-
[119]
Justify the exclusion of any sections that are not relevant.,→ 39
**Comprehensive and Concise**: Address all relevant aspects of the issue comprehensively while being concise. Justify the exclusion of any sections that are not relevant.,→ 39
-
[120]
**Detailed Guidance**: Ensure the reasoning steps are detailed enough to allow someone unfamiliar with the solution to infer and implement the necessary code modifications.,→ --- # Response Format
-
[121]
</think>
The reasoning process should be enclosed in <think> ... </think>
-
[122]
The final patch should be output in a standalone Python code block *after* the </think> block
-
[123]
--- # Patch Format Please generate *SEARCH/REPLACE* edits to fix the issue
Do not include any commentary or justification after the </think> block. --- # Patch Format Please generate *SEARCH/REPLACE* edits to fix the issue. Every *SEARCH/REPLACE* edit must use this format:
-
[124]
The start of search block: <<<<<<< SEARCH
-
[125]
A contiguous chunk of lines to search for in the existing source code
-
[126]
The dividing line: =======
-
[127]
The lines to replace into the source code
-
[128]
You should provide separate patches for each modification, clearly indicating the file name and the specific location of the modification
The end of the replace block: >>>>>>> REPLACE If, in `Files to be Modified` part, there are multiple files or multiple locations in a single file require changes. You should provide separate patches for each modification, clearly indicating the file name and the specific locat...
-
[129]
However, it fails to consider Z
Review of candidate patch: - Review of patch-1: This patch attempts to fix X by modifying function Y. However, it fails to consider Z... - Review of patch-2: ... - Review of patch-3: ... - Review of patch-4: ... - Review of patch-5:
-
[130]
Analyze the issue by myself
-
[131]
Locate the relevant code
-
[132]
Apply necessary changes... </think> ```python ### mathweb/flask/app.py <<<<<<< SEARCH from flask import Flask ======= import math from flask import Flask >>>>>>> REPLACE ``` ```python ### mathweb/utils/calc.py <<<<<<< SEARCH def calculate_area(radius): return 3.14 * radius * r...
-
[135]
Issue reproduced
Prints exactly one of: * `"Issue reproduced"` – bug still present (via AssertionError) * `"Issue resolved"` – bug fixed / expectations met * `"Other issues"` – unexpected exception unrelated to the Issue Reuse helpers from *Original tests* only if indispensable; otherwise keep...
-
[136]
</think>` block
Wrap **all reasoning** in a `<think> ... </think>` block. *Inside `<think>* you may explain how you interpreted the Issue and designed the test **without** mentioning or implying knowledge of the Test patch or any oracle.*,→
-
[137]
Issue reproduced
After `</think>`, output **only** the final test script in a single Python code block. Example skeleton *(follow this pattern exactly)*: ```text <think> your independent reasoning here (no references to test_patch/oracle) </think> ```python # All necessary imports def test_<me...
-
[138]
**Reproduces _only_ the bug described in the Issue** when the bug is present
-
[139]
Issue resolved
**Passes** (prints `"Issue resolved"`) once the bug has been fixed
-
[140]
Issue reproduced
Prints exactly one of: * `"Issue reproduced"` – bug still present (via AssertionError) * `"Issue resolved"` – bug fixed / expectations met * `"Other issues"` – unexpected exception unrelated to the Issue --- ## Response Format (**strict**)
-
[141]
</think>` block
Wrap **all reasoning** in a `<think> ... </think>` block. *Inside `<think>* explain how you interpreted the Issue and designed the test **without referencing any hidden tools, patches, or external files.***,→
-
[142]
Issue reproduced
After `</think>`, output **only** the final test script in a single Python code block. Example skeleton *(follow this pattern exactly)*: <think> your independent reasoning here (no references to other tests or oracles) </think> ```python # All necessary imports def test_<meani...
Reviewed August 7, 2026 · model on record in the stance chip above.
Discussion (0). Sign in to comment.