Most rewrites are reviews that were never written down.
[ trace // field response ]
The urge to rewrite a system from scratch is almost always a confession that nobody ever sat down and read it carefully. The legacy code looks unintelligible because nobody on the current team has done the work of intelligence. A rewrite skips that work and pays for it in a different currency, usually a missed deadline.
Read first. Write a memo. Map the modules. Identify the three load-bearing assumptions. Nine times out of ten, the rewrite shrinks to a refactor by the time the memo is done.
The rewrite that survives this discipline is the one worth doing. The rest were just procrastination wearing a hard hat.