Thank you for pointing out some interesting essays, but I think you are misunderstanding Reeves.
Reeves' position is that the final design document is the source code, and that the creation of the source code is the software version of designing an airplane or radio or car. The fact that it's really easy to build software from the source code (production design) and absolutely trivial to make multiple copies obscures this - since there's a step of software production that is absolutely trivial compared to, say, alarm clock production or bridge building, our perceptions are thrown off.
Nowhere did I find a suggestion that source code is the only design document needed. Reeves encouraged other forms of documentation, provided that we all remember they are supplementary.
Source code is the final design document, the assembly instructions, but there is more to a software project than that. There are the requirements, which need to be recorded, so that it's possible to tell if the software actually does what it's supposed to do. (Given no actual requirements, I can write software really fast.) There are the lower level design documents, which are typically requirements documents for smaller parts of the program, and sometimes document the reasons for choices made.
Suppose I were designing vacuum cleaners, and I had a set of assembly instructions for a vacuum cleaner. Suppose I wondered if I could reduce the part count, or move some screws to better positions. With just the assembly instructions, I'd have to go through the design again. If I had documents with reasons why the screws go there and there, I could check if a different configuration would satisfy those reasons. Similarly, I can't reliably change software without knowing what it is supposed to do, and what the individual parts are supposed to do.
There's an old saying that, if the code and the comments disagree, they're both wrong. I've heard a version that, if they can actually disagree, the comments are bad, which may be going overboard. However, comments and other documentation should explain what individual pieces of software are supposed to do, and sometimes a high-level description of how they do it, but they should never get into a detailed implementation. I have worked with overly detailed documentation, and found it just as likely to be wrong as the accompanying software, and that it was harder to understand the two in concert than to understand the source code itself.