The honest cost of a rewrite
A rewrite freezes feature delivery for the duration and re-introduces bugs your old system solved years ago in edge cases nobody documented. Budget for both.
Strangle instead
Route new functionality through a new service while the legacy system keeps running. You ship value in week three instead of month nine, and you can stop at any point.
When a rewrite is right
Unsupported runtime with security exposure, a platform your team cannot hire for, or a data model that blocks the business strategy. Those justify it. 'The code is ugly' does not.