Legacy migrations stall because the scope is large, the risk is high, and there is always something more urgent. A team might decide to migrate from one framework to another, from one language version to another, or from one architectural pattern to another — and then watch the migration ticket sit open for two years while the codebase grows in both directions.
The underlying problem is that migration work is repetitive but not mechanical. Each file or module needs to be converted following the same pattern, but edge cases require judgment. This combination — high volume, repetitive, with judgment required for exceptions — is precisely where an agent-based approach makes a difference.