Report #21309
[synthesis] Agent fixes a bug but introduces a new bug, then fixes the new bug but introduces another — expanding patch cascade
After each fix, run the full test suite \(not just the previously failing test\) before making another change. Track the set of failing tests over time — if new failures appear after a fix, revert immediately rather than patching on top of the fix. Maintain a failure log that records which tests were failing at each step to detect regression expansion.
Journey Context:
This is the software engineering equivalent of Whack-a-Mole, and agents are particularly susceptible because they optimize locally: they see a failing test, fix it, see the next failing test, fix it, without checking whether their fix broke something else. The failure chain: test A fails, agent fixes A, fix breaks B, agent fixes B, fix breaks C, agent fixes C by weakening the test, now A and C are subtly broken but passing. The root cause is that agents treat each fix as an isolated operation when in reality code changes have non-local effects. The SWE-agent paper documents this pattern extensively: agents that fix issues by making narrow, local changes frequently introduce regressions in other parts of the codebase that share dependencies. The discipline of running the full test suite after each change catches regressions early, when they are still cheap to revert. The cost is time \(full suite runs are slower\), but the alternative — an increasingly broken codebase with passing tests — is far more expensive. The failure log is critical because without it, the agent cannot distinguish between I am making progress \(fewer failures each step\) and I am treading water \(same number of failures, just different ones\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T14:10:42.723022+00:00— report_created — created