# PR-05.5 - IRVM Validator Real Stack Effects for HOSTCALL and INTRINSIC ## Briefing O validador IRVM hoje modela `HOSTCALL` e `INTRINSIC` com efeito de stack genérico insuficiente para rigor JVM-grade. Esta PR passa a validar efeitos reais de stack por assinatura (`arg_slots`/`ret_slots`) nessas operações. ## Motivation ### Dor atual que esta PR resolve 1. Possíveis underflow/overflow não detectados em chamadas host/intrínseco. 2. Retorno efetivo divergente sem falha no precheck. 3. Confiança excessiva na emissão sem validação semântica de pilha completa. ## Target `IRVMValidator` e metadados de operação com informação suficiente para calcular efeito real de stack. ## Dependencies Prerequisitos diretos: 1. `PR-05.0.3` (IDs tipados de callable/intrinseco). 2. `PR-05.0.6` (identidade canônica de host binding). ## Scope 1. Modelo de metadados para chamadas host e intrínseco no estágio IRVM. 2. Regras de validação de stack baseadas em assinatura. 3. Diagnósticos determinísticos de mismatch. ## Non-Goals 1. Não define política de otimização. 2. Não altera opcode wire format. ## Method ### O que deve ser feito explicitamente 1. Introduzir acesso a `arg_slots`/`ret_slots` efetivos durante validação de `HOSTCALL`. 2. Introduzir contrato equivalente para `INTRINSIC` (a partir de tabela canônica no pipeline). 3. Aplicar stack effect real no data-flow do validador. 4. Rejeitar mismatch de altura de retorno em joins e `RET` final. 5. Preservar mensagens de erro estáveis na taxonomia `MARSHAL_VERIFY_PRECHECK_*`. 6. Consumir metadados canônicos por ID, sem lookup textual ad-hoc. ## Acceptance Criteria 1. `HOSTCALL` e `INTRINSIC` participam do cálculo real de pilha no validador. 2. Casos de mismatch de assinatura falham no precheck com erro determinístico. 3. Casos válidos seguem aprovando sem regressão. 4. O caminho de validação não depende de composição textual de chave de binding. ## Tests 1. Testes positivos com combinações de arg/ret slots para host e intrínsecos. 2. Testes negativos para underflow, overflow e retorno incompatível. 3. Testes de join mismatch com chamadas em blocos ramificados. ## 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.