All checks were successful
JaCoCo Coverage #### Project Overview
No changes detected, that affect the code coverage.
* Line Coverage: 61.37% (17351/28272)
* Branch Coverage: 52.31% (6722/12850)
* Lines of Code: 28272
* Cyclomatic Complexity: 11325
#### Quality Gates Summary
Output truncated.
Test / Build skipped: 15, passed: 601
Intrepid/Prometeu/Studio/pipeline/head This commit looks good
78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
---
|
|
id: AGD-0062
|
|
ticket: multi-frontend-common-lifecycle
|
|
title: Extrair lifecycle comum das responsabilidades do frontend PBS
|
|
status: open
|
|
created: 2026-07-15
|
|
resolved:
|
|
decision:
|
|
tags: [compiler, compiler-general, compiler-pbs, lifecycle, backend, multi-frontend]
|
|
---
|
|
|
|
# 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 `LifecycleDeclaration` ou 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.java`
|
|
- `docs/specs/compiler/16. Runtime Execution and Initialization Specification.md`
|
|
- `docs/specs/compiler/20. IRBackend to IRVM Lowering Specification.md`
|
|
- `docs/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.
|
|
|