ProfileSummary nas respostas
de login / register / me.A arquitetura separa módulos (auth, profile, …) com fronteiras explícitas:
cada módulo expõe uma camada public/ (commands, queries, events, types) e
esconde domínio e aplicação. Uma invariante de desenho é "auth não conhece
profile" (e vice-versa).
Em REF-05 o front passou a precisar de name, avatarUrl e profileCompleted
(dados de profile) na resposta de login (rota do auth). Isso colide
com a invariante: como compor dados de profile numa rota de auth sem o auth
passar a depender de profile?
Já tínhamos resolvido o caso oposto em REF-04 (CAI-57): o registro
escreve em auth e profile na mesma transação — e isso virou uma feature
(features/registration) que coordena os dois módulos, justamente porque
orquestração com escrita cruzando módulos não pertence a nenhum módulo isolado.
Faltava a régua pro caso de leitura.
Esta decisão vale para leitura simples que cruza módulos: a rota lê dados de outro módulo (sem escrever) e os agrega na resposta, sem coordenação rica (sem orquestrar vários módulos, regras de negócio ou cache no caminho da leitura). Casos de leitura com coordenação rica caem fora deste contexto — ver "Quando revisitar". Não é uma proibição permanente da alternativa (b), só o default para o caso simples.
A direção do dado decide onde a coordenação mora:
features/registration.ProfileSummaryQuery injetada no composition root (main.ts). O auth não
importa profile internamente — só consome um port público que outra camada
injeta.Concretamente em REF-05: login, me (rotas do auth) e register (rota da
feature) recebem profileSummary: ProfileSummaryQuery e compõem o ProfileSummary
na resposta via o helper shared/http/with-profile-summary.ts. O módulo auth
continua sem conhecer profile no seu núcleo.
features/authentication só pra ler profile: login
só lê, não escreve, então não precisa de uma feature de orquestração.null, é violação de invariante → fail-loud (lança), sem
fallback defensivo.Supersedes este, e mude o Status deste para Superseded by ….features/registration, o lado "escrita → feature" da régua.