Working code that the current team is afraid to touch: the original authors have left, tests are missing or not trusted, and nobody is certain what depends on what.
Legacy is defined by fear, not by age. A two-year-old project without tests or documentation behaves exactly like a twenty-year-old one — every change takes longer than estimated and breaks something unrelated.
We start by covering the critical paths with tests so the current behaviour is pinned down, then refactor in small steps behind them. We propose a full rewrite only when the cost of changing the existing system genuinely exceeds it.