prometeu-studio/docs/compiler/pbs/pull-requests/PR-09.2-pbs-frontend-moduleid-only-lowering-and-import-surfaces.md
2026-03-24 13:42:37 +00:00

2.2 KiB

PR-09.2 - PBS Frontend Lowering: ModuleId-Only (No moduleKey in lowering surfaces)

Briefing

Mesmo apos o contrato aceitar ModuleId, o lowering PBS ainda trafega moduleKey em estruturas internas (ImportedCallableSurface, indices auxiliares e fixtures).

Motivation

Dor atual que esta PR resolve

  1. FE ainda acopla resolucao de callable/import a string de modulo.
  2. A remocao de moduleKey no contrato quebra se FE nao migrar totalmente.
  3. Risco de divergencia entre metadado textual e identidade internada.

Target

Migrar lowering PBS para ModuleId como identidade unica:

  1. ImportedCallableSurface sem moduleKey,
  2. callsite/callable lookup por ids internados,
  3. diagnosticos e logs usando renderizacao derivada de modulePool apenas quando necessario.

Dependencies

Prerequisito direto:

  1. PR-09.1

Scope

  1. Atualizar PbsFrontendCompiler para operar com ModuleId nas superfices de import/callable.
  2. Atualizar PBSFrontendPhaseService para fornecer metadados densos sem string estrutural.
  3. Atualizar testes PBS e artifacts golden.

Non-Goals

  1. Nao alterar parser PBS.
  2. Nao alterar admission de host capabilities.

Method

O que deve ser feito explicitamente

  1. Remover moduleKey de ImportedCallableSurface.
  2. Em collect/lower callsites, propagar calleeModuleId via assinatura internada.
  3. Ajustar renderizacao de debug para usar modulePool quando mostrar modulo.
  4. Atualizar golden printer para mostrar moduleId (e opcionalmente nome renderizado derivado).

Acceptance Criteria

  1. FE PBS nao depende de moduleKey string para resolver/importar/lower callables.
  2. Todas as callsites CALL_FUNC carregam calleeModuleId coerente.
  3. Testes PBS passam sem acessos estruturais a chave textual.

Tests

  1. :prometeu-compiler:frontends:prometeu-frontend-pbs:test
  2. :prometeu-compiler:prometeu-frontend-api:test --tests *IRBackendExecutableContractTest*

Affected Documents

  1. docs/pbs/specs/13. Lowering IRBackend Specification.md
  2. docs/general/specs/14. Name Resolution and Module Linking Specification.md
  3. docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md

Open Questions

  1. Nenhuma. Regra fica ModuleId-only para identidade estrutural.