60 lines
1.9 KiB
Markdown
60 lines
1.9 KiB
Markdown
# PR-05.0.2 - Module Identity Dense Table and ModuleId Wiring
|
|
|
|
## Briefing
|
|
|
|
O FE usa `String moduleKey` em varios mapas e no handoff para backend.
|
|
|
|
Esta PR introduz identidade densa de modulo (`ModuleTable` + `ModuleId`) e faz o FE operar internamente por ID, mantendo string apenas como representacao de borda quando necessario.
|
|
|
|
## Motivation
|
|
|
|
### Dor que esta PR resolve
|
|
|
|
1. Chaves string de modulo sao repetidas e suscetiveis a inconsistencia de normalizacao.
|
|
2. Custos de hash/string crescem com o grafo de modulos.
|
|
3. Dificuldade de garantir determinismo e joins estaveis em agregacao multi-modulo.
|
|
|
|
## Target
|
|
|
|
Substituir identidade interna de modulo baseada em string por `ModuleId` internado.
|
|
|
|
## Scope
|
|
|
|
1. Criacao de `ModuleTable` no core.
|
|
2. Uso de `ModuleId` em `PBSFrontendPhaseService` para mapas de modulo/dependencias.
|
|
3. Adaptacao de pontos de diagnostico e exibição para renderizar nome canônico quando preciso.
|
|
|
|
## Non-Goals
|
|
|
|
1. Nao altera sintaxe de import.
|
|
2. Nao altera formato de mensagens ao usuario final alem do necessario.
|
|
|
|
## Method
|
|
|
|
### O que deve ser feito explicitamente
|
|
|
|
1. Implementar `ModuleTable extends InternTable<ModuleId, ModuleRef>` (ou valor equivalente canonico).
|
|
2. Trocar `Map<String,...>` de modulo em `PBSFrontendPhaseService` por `Map<ModuleId,...>`.
|
|
3. Trocar grafo de dependencia de `String` para `ModuleId`.
|
|
4. Manter funcao unica de render de modulo para diagnostico.
|
|
|
|
## Acceptance Criteria
|
|
|
|
1. Fluxo principal do FE nao depende de `moduleKey` string para joins internos.
|
|
2. Dependencias e bloqueios por falha de modulo usam `ModuleId`.
|
|
3. Nao ha regressao funcional em linking/import gating.
|
|
|
|
## Tests
|
|
|
|
1. Teste de determinismo de IDs de modulo para mesmo grafo admitido.
|
|
2. Teste de propagacao de falha por dependencia usando IDs.
|
|
|
|
## Affected Documents
|
|
|
|
1. `docs/pbs/specs/13. Lowering IRBackend Specification.md`
|
|
2. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md`
|
|
|
|
## Open Questions
|
|
|
|
Sem bloqueios arquiteturais.
|