2.2 KiB
2.2 KiB
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
- Possível variação de
func_idquando ordem de merge muda. - Risco de entrypoint implícito ou ambíguo.
- 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:
PR-05.0.2(identidade de modulo porModuleId).PR-05.0.3(IDs tipados de callable).
Scope
- Ordenação determinística de funções.
- Política explícita de entrypoint.
- Diagnóstico para ausência ou ambiguidade de entrypoint.
Non-Goals
- Não altera ABI de chamada.
- Não altera layout binário do bytecode.
Method
O que deve ser feito explicitamente
- Definir ordenação canônica apenas pelos campos normativos aprovados.
- Tornar explícita a ordenação de módulo a partir do
ModuleIdcanônico. - Exigir exatamente um entrypoint válido no grafo admitido.
- Atribuir
func_id=0ao entrypoint e indexar demais por ordem canônica. - Rejeitar determinísticamente casos sem entrypoint ou com entrypoint múltiplo.
- Cobrir cenários de permutação de entrada com mesma saída de indexação.
Acceptance Criteria
- Mesma entrada admitida gera mesma tabela de
func_idem execuções repetidas. - Mudança na ordem de merge dos módulos não altera indexação final.
- Ausência ou ambiguidade de entrypoint falha com diagnóstico estável.
- A ordenação não depende de string derivada não canônica de módulo.
Tests
- Teste de determinismo com permutação de ordem de merge.
- Teste de entrypoint único válido.
- Testes negativos para zero entrypoint e múltiplos entrypoints.
Affected Documents
docs/general/specs/20. IRBackend to IRVM Lowering Specification.mddocs/general/specs/19. Verification and Safety Checks Specification.md
Open Questions
Sem bloqueios arquiteturais.