Como usar o Scala Cats Validated da maneira correta?

A seguir é o meu caso de uso

Estou usandoGato para validação da minha configuração. Meu arquivo de configuração está em json.Serialize meu arquivo de configuração para minha classe de casoConfig usando lift-json e valide-o usando Cats. Estou usandoist é um guia Meu motivo para usar o Cats é coletar todos os erros, se presentes no momento da validaçã

Meu problema são os exemplos fornecidos no guia, são do tipo

case class Person(name: String, age: Int)

def validatePerson(name: String, age: Int): ValidationResult[Person] = {
   (validateName(name),validate(age)).mapN(Person)
}

Mas no meu caso, eu já desserializou minha configuração na minha classe de caso (abaixo está uma amostra) e depois a passo para validação

case class Config(source: List[String], dest: List[String], extra: List[String])

def vaildateConfig(config: Config): ValidationResult[Config] = {
  (validateSource(config.source), validateDestination(config.dest))
   .mapN { case _ => config }
}

A diferença aqui émapN { case _ => config }. Como eu já tenho uma configuração, se tudo é válido, não quero criar a configuração novamente a partir de seus membros. Isso surge quando eu estou passando a configuração para validar a função, não é membro

Uma pessoa no meu local de trabalho me disse que essa não é a maneira correta, pois a Cats Validated fornece uma maneira de construir um objeto se seus membros forem válidos. O objeto não deve existir ou não deve ser construtível se seus membros forem inválidos. O que faz total sentido para mim.

Então devo fazer alterações? O que estou fazendo acima é aceitável?

PS: A configuração acima é apenas um exemplo, minha configuração real pode ter outras classes de casos como seus membros, que podem depender de outras classes de caso

questionAnswers(1)

yourAnswerToTheQuestion