Boa crítica, e a culpa é minha: o exemplo do post ficou comprimido demais e passou a impressão errada, porque aquele "adiciona um botão de export CSV no dashboard" não é o que o subagente recebe de verdade.
Tem um passo antes que eu não mostrei. Antes de acionar o tdd-test-writer eu monto uma matriz de cobertura junto com os requisitos: caminho feliz, valores limite, casos de erro, dependência de estado e efeitos colaterais. O nome do campo, do botão e do arquivo entra aí. O subagente recebe essa matriz, não a frase de uma linha que eu usei no exemplo. Essa parte fica comigo justamente porque é decisão.
Ou seja, você tem razão no ponto principal. O isolamento só impede que o teste seja derivado da implementação. A ambiguidade da especificação continua sendo problema meu, e é aí que eu gasto o tempo agora.
Valeu pelo recorte; vou ajustar o texto para mostrar essa etapa, porque escondê-la atrás de um comando de uma linha foi exatamente o que gerou a sua dúvida.