Elisp surprise of the day: (commandp []) and (commandp "") evaluate to t. This is because execute-kbd-macro can execute them.