Eu nunca ouvi falar em CQS (Command-Query-Separation) antes, mas parece que ele se relacionaria com o Princípio de Responsabilidade Única (SRP), que afirma que uma função / classe idealmente deve ser responsável por fazer uma coisa e apenas uma coisa .
Se o seu código de comando tiver 20 linhas de código e o código de consulta tiver outras 30 linhas e todos eles estiverem em um corpo de função, claramente você está violando o SRP e eu assumiria o CQS também e essas duas partes da lógica devem ser separadas uma da outra .
No entanto, seguindo o seu exemplo hipotético, provavelmente criaria um método de wrapper que combinaria seu comando e consulta para que DRY não seja violado em vários locais do código. Eu também não consideraria isso uma violação ao SRP (e talvez CQS), porque o wrapper ainda tem apenas uma responsabilidade: combinar comando com uma consulta e criar uma abstração de nível superior que seja mais fácil de consumir.
Eu acho que o método wrapper é uma solução perfeitamente aceitável e para ilustrar isso, vamos dar um exemplo adiante. E se você tivesse que executar 2 consultas em vez de 1 e executar uma ação de comando com base nisso. Portanto, suas 2 linhas de código seriam 6 ou 8. E se houvesse alguma validação / verificação de dados entre uma e outra, agora você tem 15 linhas de código. Você pensaria duas vezes antes de criar um wrapper que faça tudo isso, em vez de espalhar essas 15 linhas em vários arquivos?