BOOSTAPR: Boosting Automated Program Repair via Execution-Grounded Reinforcement Learning with Dual Reward Models
Abstract
Reinforcement learning for program repair is hindered by sparse execution feedback and coarse sequence-level rewards that obscure which edits actually fix bugs. We present BoostAPR, a three-stage framework: (1) supervised fine-tuning on execution-verified demonstrations with reasoning traces, (2) training dual reward models—a sequence-level assessor and a line-level credit allocator—from execution outcomes, and (3) PPO optimization where the line-level model redistributes rewards to critical edit regions. This line-level credit assignment operates at an intermediate granularity naturally suited to code changes. Trained on SWE-Gym and evaluated on four benchmarks, BoostAPR achieves 40.7% on SWE-bench Verified (+22.9pp over the base model), 24.8% on Defects4J (Python→Java transfer), 84.5% on HumanEval-Java, and 95.0% on QuixBugs, showing competitive open-source performance with strong cross-language generalization.
Lay Summary
Software bugs are costly and time-consuming to fix. Recent AI systems can suggest patches, but they often learn from very limited feedback: a proposed fix either passes the tests or fails them, without knowing which specific code changes helped or hurt. This makes training inefficient and can lead to unreliable repairs. BoostAPR is a system that teaches an AI model to repair programs using feedback from running the code. It first learns from examples of successful fixes, then trains two feedback models: one judges whether a whole patch is good, and the other estimates which changed lines are most responsible for success or failure. During training, this line-level feedback helps the model focus on the edits that matter most. Across several programming repair benchmarks, BoostAPR fixes more bugs than strong baseline systems and generalizes across different repair settings. The goal is not to replace human developers, but to make automated repair tools more accurate and useful for debugging real software.