prometeu-studio/discussion/workflow/agendas/AGD-0062-multi-frontend-common-lifecycle.md
bQUARKz 35b65bb524
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
multi FE adjustment agendas
2026-07-15 07:58:23 +01:00

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
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.