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