That's why I find any effort to create specifications... cute. In brownfield software, more often than not, the code _is_ the specification.
The question is how many giant apps out there have yet to be even started vs. how many brownfield apps out there that will outlive all of us.
If the spec doesn't specify all the details, then there are gaps for the code to fill. For example, code for a UI is highly specific, down to the last pixel. A spec might say "a dialog with two buttons, labelled OK and cancel". That dialog would look different every time the spec is reimplemented.
Unless of course, there was also a spec for the dialog, that we could refer to in the other spec? That's really just code and reuse.