69 lines
2.2 KiB
Markdown
69 lines
2.2 KiB
Markdown
# 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.
|