2.4.1 Session ID
"The hub may reuse SIDs as they become free when clients disconnect." - This sentence can probably be removed, since it is already sufficiently clear from "They identify a unique user on a single hub". I'm mentioning it, because it is an implementation hint which can be misleading without further explanation. Too greedy reuse of SIDs by the hub can lead to problems in the form of race conditions, where a command sent by one client reaches the wrong target because the intended target was disconnected and the SID reclaimed for a newly connected client. Suggesting precautions against such problems is beyond the scope of the protocol specs, and so I'd prefer the implementation hint be removed completely.
2.4.2 Private ID
The suggested way of generating PIDs is too complicated compared to its value for the security of the protocol. DC++ does not use it and other implementations will probably also revert to alternative methods of generating a random PID. The specs should not provoke such violations by being overly complicated. It would however be nice to be able to specify some minimum level of randomness of a PID. Perhaps some math expert could help us out here.
4 BASE messages
The message constraints have been changed in one of the last revisions from direct specification of allowed types for each command to a loose context grouping. This may have made editing the draft easier when types were added or changed, but it's not clear enough as a guideline for implementations anymore. I don't think it should be left up to a hub implementation wether it forwards commands like BRCM or BCTM, as that opens the doors for abuse and puts client implementers in a difficult position.
4.3.1 STA
"43 Required INF field missing/bad, flag “FL” specifies the name of field." should probably be split into "field missing" and "field bad" and made independent of the "INF" context, so we have two independent generic errors for wrong or missing parameters which a client could in some cases handle automatically.
4.3.5 INF
"For OP, AW, BO, HI and HU, unspecified values are reserved for the future." - This should either be refined or removed, as it leaves the question open how those reserved values should be treated and thus renders the specified values useless. If an extended client sends "OP2" in the future, should a BASE client read that as "OP" (empty or 0) or "OP1"? The reserved values fail to deliver the information of the original values.
It would also perhaps be interesting to put the information carried by OP, RG, BO and HI into one single field (like CT for Client Type).
4.3.5 MSG
The purpose of the PM field and <group-SID> parameter is not sufficiently explained. The description also seems to suggest that a chat-room bot should use the SID of the clients from which the message originated as the my_sid of the underlying message layout and put its own SID into the PM field for forwarding. I think that is putting the (perceived) layering of the protocol on its head, as the basic (type-related) parameters should be verifyable without looking at the transported command type. The my_sid should always be the SID of the client that sends the (ADC) message.
4.3.8 CTM and 4.3.9 CTM
It's not consistent with the rest of the protocol that a named parameter should be in the list of mandatory parameters. The token for these commands should either be an unnamed mandatory parameter or a named optional parameter.
4.3.13 DSC
It has been discussed to remove this command and if I remember correctly, arnetheduck agreed to do so. I'm mentioning it just to make sure
6.3.1 ZLIB-FULL
ZOF is not needed.
There are certainly some things I have forgotten. I remember at least one problem in the Message syntax section, but I couldn't find it in a quick review. I hope others will complete this list. I didn't use the Wiki in hope for a wider audience and more input (I personally never check the Wiki unless someone points me to it). Once the currently known issues are resolved, I think arnetheduck should post a "release candidate" revision and perhaps post a last "call for suggestions" here with a proper deadline, so that ADC gets a V1.0 protocol specification soon.