prometeu-studio/docs/pbs/pull-requests/PR-05.0.2-module-identity-dense-table-and-moduleid-wiring.md
2026-03-24 13:42:29 +00:00

1.9 KiB

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.