2.7 KiB
| id | ticket | title | status | created | resolved | decision | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AGD-0062 | multi-frontend-common-lifecycle | Extrair lifecycle comum das responsabilidades do frontend PBS | open | 2026-07-15 |
|
Agenda - Extrair o lifecycle do frontend PBS
Objetivo
Domain owner: compiler/general, com impacto em compiler/pbs.
Separar declaracao de lifecycle feita por uma linguagem da montagem comum de init, frame, module initializers e entrypoint publicado.
Contexto atual
As lessons e specs antigas indicam que PBS ja trata lifecycle e wrapper/entrypoint. O alinhamento pede que PBSFrontendPhaseService deixe de conter regras universais da plataforma.
Escopo
- Localizar onde PBS sintetiza ou valida lifecycle.
- Definir contrato comum de
LifecycleDeclarationou equivalente. - Planejar servico comum para validar, ordenar e montar entrypoint.
Fora de escopo
- Alterar sintaxe PBS.
- Mudar comportamento observavel de projetos existentes.
- Refatorar todo o backend junto da extracao.
Arquivos e componentes a inspecionar
prometeu-compiler/frontends/prometeu-frontend-pbs/...PBSFrontendPhaseService...prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/backend/irvm/LowerToIRVMService.javadocs/specs/compiler/16. Runtime Execution and Initialization Specification.mddocs/specs/compiler/20. IRBackend to IRVM Lowering Specification.mddocs/specs/compiler-languages/pbs/13. Lowering IRBackend Specification.md
Alteracoes propostas
Opcao A: frontend PBS emite declaracoes neutras de lifecycle e backend/common assembler monta o entrypoint.
Opcao B: manter montagem no PBS por enquanto, mas isolar regras comuns em um servico compartilhado chamado pelo PBS.
Recomendacao inicial: extrair primeiro o servico comum com testes de caracterizacao, depois migrar o PBS para produzir apenas declaracoes.
Estrategia de implementacao
Identificar fixture positiva atual, proteger com teste, criar contrato comum minimo, mover validacoes universais e manter mensagens PBS onde forem sintaxe/semantica da linguagem.
Testes necessarios
- Lifecycle valido PBS continua gerando mesmo PBX/IRVM.
- Lifecycle ausente ou frame invalido falha no nivel comum quando aplicavel.
- Teste de IR comum com lifecycle sem parser PBS.
Criterios de aceitacao
- PBS traduz a forma da linguagem para declaracoes neutras.
- Servico comum valida e monta lifecycle da plataforma.
Riscos
- Mover validacoes PBS-especificas para camada comum por engano.
- Alterar ordem de inicializadores sem perceber.
Decisoes que devem ser registradas
- Nome e ownership do servico comum.
- Forma canonica das declaracoes de lifecycle.
- Separacao entre erro de linguagem e erro de plataforma.