prometeu-studio/docs/compiler/pbs/pull-requests/PR-05.3-irvm-deterministic-function-id-and-entrypoint-policy.md
2026-03-24 13:42:37 +00:00

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

  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.