# PR-05.3 - IRVM Deterministic Function-ID and Entrypoint Policy ## Briefing A regra de indexação de funções e seleção de entrypoint precisa ficar estritamente alinhada ao contrato normativo para evitar divergência entre builds equivalentes. Esta PR fecha política determinística de `func_id` e entrypoint único explícito. ## Motivation ### Dor atual que esta PR resolve 1. Possível variação de `func_id` quando ordem de merge muda. 2. Risco de entrypoint implícito ou ambíguo. 3. Dificuldade para gerar artefatos reproduzíveis e goldens estáveis. ## Target `LowerToIRVMService` com regra única e testável de ordenação/indexação/entrypoint. ## Dependencies Prerequisitos diretos: 1. `PR-05.0.2` (identidade de modulo por `ModuleId`). 2. `PR-05.0.3` (IDs tipados de callable). ## Scope 1. Ordenação determinística de funções. 2. Política explícita de entrypoint. 3. Diagnóstico para ausência ou ambiguidade de entrypoint. ## Non-Goals 1. Não altera ABI de chamada. 2. Não altera layout binário do bytecode. ## Method ### O que deve ser feito explicitamente 1. Definir ordenação canônica apenas pelos campos normativos aprovados. 2. Tornar explícita a ordenação de módulo a partir do `ModuleId` canônico. 3. Exigir exatamente um entrypoint válido no grafo admitido. 4. Atribuir `func_id=0` ao entrypoint e indexar demais por ordem canônica. 5. Rejeitar determinísticamente casos sem entrypoint ou com entrypoint múltiplo. 6. Cobrir cenários de permutação de entrada com mesma saída de indexação. ## Acceptance Criteria 1. Mesma entrada admitida gera mesma tabela de `func_id` em execuções repetidas. 2. Mudança na ordem de merge dos módulos não altera indexação final. 3. Ausência ou ambiguidade de entrypoint falha com diagnóstico estável. 4. A ordenação não depende de string derivada não canônica de módulo. ## Tests 1. Teste de determinismo com permutação de ordem de merge. 2. Teste de entrypoint único válido. 3. Testes negativos para zero entrypoint e múltiplos entrypoints. ## Affected Documents 1. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md` 2. `docs/general/specs/19. Verification and Safety Checks Specification.md` ## Open Questions Sem bloqueios arquiteturais.