Работающий код, который нынешняя команда боится трогать: первоначальные авторы ушли, тестов нет или им не доверяют, и никто точно не знает, что от чего зависит.
Legacy определяется страхом, а не возрастом. Двухлетний проект без тестов и документации ведёт себя точно так же, как двадцатилетний: каждое изменение занимает больше времени, чем оценивали, и ломает что-то не связанное.
Мы начинаем с покрытия критичных сценариев тестами, чтобы зафиксировать текущее поведение, и дальше рефакторим мелкими шагами под их защитой. Полное переписывание предлагаем только тогда, когда стоимость изменений в существующей системе действительно его превышает.