This is actually why so many organizations that are good at shipping other kinds of products suck at software: the distinction between "what to build" and "how to build it" is very squishy, and on a complex enough project the distinction is nonexistent.
A complete specification could just be executed. It is the program.