# PR-09.3 - LowerToIRVM: ModuleId-Only Ordering + Strict Qualified Entrypoint ## Briefing `LowerToIRVMService` ainda possui fallback para `moduleKey` textual e fallback de entrypoint por nome quando `entryPointModuleId` nao e informado. ## Motivation ### Dor atual que esta PR resolve 1. Ordenacao de funcoes ainda pode depender de string legado. 2. Entrypoint pode cair em selecao name-only, mantendo ambiguidade residual. 3. Contrato qualificado existe, mas nao e estrito. ## Target Tornar lowering estritamente orientado por identidade: 1. ordenacao por `ModuleId -> modulePool` somente, 2. entrypoint obrigatoriamente qualificado (`entryPointModuleId + callableName`), 3. remover fallback textual/heuristico. ## Dependencies Prerequisitos diretos: 1. `PR-09.1` 2. `PR-09.2` ## Scope 1. Atualizar `LowerToIRVMService` para eliminar `fallbackModuleKey`. 2. Validar presenca obrigatoria de `entryPointModuleId` para entrada executavel. 3. Atualizar testes de ordenacao, ambiguidades e erros deterministas. ## Non-Goals 1. Nao alterar regra `func_id=0` (continua entrypoint). 2. Nao alterar emissao de opcodes. ## Method ### O que deve ser feito explicitamente 1. Substituir `moduleSortKey(...)` textual por leitura canonica direta do `modulePool` indexado por `ModuleId`. 2. Em `orderFunctions`, rejeitar entrada sem `entryPointModuleId`. 3. Remover caminho de erro/controle baseado em entrypoint name-only. 4. Cobrir com testes: - entrypoint qualificado valido, - entrypoint qualificado ausente, - homonimos em modulos distintos com qualificacao. ## Acceptance Criteria 1. Nenhum fallback para `moduleKey` no LowerToIRVM. 2. Entrypoint e sempre resolvido por identidade qualificada. 3. Determinismo preservado em rebuild equivalente. ## Tests 1. `:prometeu-compiler:prometeu-build-pipeline:test --tests *LowerToIRVMServiceTest*` 2. `:prometeu-compiler:prometeu-build-pipeline:test --tests *BackendSafetyGateSUTest*` ## Affected Documents 1. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md` 2. `docs/general/specs/15. Bytecode and PBX Mapping Specification.md` 3. `docs/general/specs/22. Backend Spec-to-Test Conformance Matrix.md` ## Open Questions 1. Nenhuma. Esta PR fecha o fallback de entrypoint name-only.