3.0 KiB
| id | ticket | title | status | created | resolved | decision | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AGD-0057 | multi-frontend-provider-contract | Introduzir provider completo de frontend | open | 2026-07-15 |
|
Agenda - Introduzir provider completo de frontend
Objetivo
Domain owner: compiler/general, com impacto em studio.
Discutir como consolidar um contrato de FrontendProvider que agrupe especificacao, compilador e servicos editoriais opcionais sem transformar o Studio em uma plataforma de plugins.
Contexto atual
O repositorio ja possui prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.java e superficies relacionadas a FrontendSpec, FrontendPhaseService e languageId. Ainda ha sinais de registro ou uso direto do PBS em composition roots e chamadas comuns.
Escopo
- Inspecionar o registry atual e seus consumidores.
- Definir se
FrontendProviderdeve ser novo contrato ou evolucao de contrato existente. - Planejar
PBSFrontendProvidercomo unico provider inicial. - Preservar selecao atual por
languageId.
Fora de escopo
- Descoberta dinamica de plugins.
- Reflection, classpath scanning ou carregamento externo de JARs.
- Implementar qualquer frontend real alem do PBS.
Arquivos e componentes a inspecionar
prometeu-compiler/prometeu-frontend-registry/src/main/java/p/studio/compiler/FrontendRegistryService.javaprometeu-compiler/frontends/prometeu-frontend-pbs/...prometeu-compiler/prometeu-build-pipeline/...prometeu-studio/src/main/java/p/studio/projects/ProjectLanguageCatalogService.javaprometeu-app/src/main/java/p/studio/AppContainer.java
Alteracoes propostas
Opcao A: criar FrontendProvider explicito com specification(), compiler() e languageService() opcional.
Opcao B: evoluir o registry para devolver um objeto existente que ja represente provider, adicionando apenas os campos faltantes.
Recomendacao inicial: preferir a menor mudanca que faca o codigo comum resolver provider = registry.require(languageId) e pare de conhecer classes PBS fora do composition root.
Estrategia de implementacao
Comecar por uma auditoria de chamadas atuais ao registry e de instanciacoes diretas do PBS. Introduzir o contrato sem remover APIs antigas no mesmo passo, migrar PBS para o contrato e so entao substituir consumidores comuns.
Testes necessarios
- Teste do registry exigindo resolucao por
languageId. - Teste de registro unico do PBS como provider inicial.
- Teste de erro claro para
languageIddesconhecido.
Criterios de aceitacao
- O codigo comum consulta o provider, nao instancia
PBSFrontendPhaseService. - PBS permanece funcional.
- Nenhum frontend real novo e criado.
Riscos
- Criar uma abstracao grande demais antes de mapear os consumidores reais.
- Misturar contrato de build com contrato editorial.
Decisoes que devem ser registradas
- Nome final do contrato.
- Responsabilidades minimas do provider.
- Onde fica o composition root autorizado a registrar PBS.