# PR-05.4 - IRVM Program Coherence Without Bypass ## Briefing Existe bypass de coerência no `IRVMProgram` em presença de `RAW_SYSCALL` e derivação com placeholders (`__unknown__`). Esta PR remove esses atalhos do fluxo canônico e endurece o contrato de coerência `IRVM <-> EmissionPlan`. ## Motivation ### Dor atual que esta PR resolve 1. Programa pode aparentar coerente e mesmo assim carregar informação inválida para emissão. 2. Brecha para mascarar erro estrutural antes do Gate de emissão/verificação. 3. Diagnóstico tardio e pouco preciso para falhas de marshaling. ## Target `IRVMProgram` com coerência obrigatória, sem exceção silenciosa para formas proibidas no pipeline canônico. ## Scope 1. Regras de coerência no construtor e no `coherentEmissionPlan()`. 2. Eliminação de placeholder de syscall desconhecida em caminho de derivação canônico. 3. Taxonomia de erro para incoerência estrutural. ## Non-Goals 1. Não muda verificador runtime. 2. Não muda decisão de proibir `RAW_SYSCALL` em pre-load. ## Method ### O que deve ser feito explicitamente 1. Remover condição que pula validação de coerência quando detecta `RAW_SYSCALL`. 2. Tornar inválido no caminho canônico qualquer plano com operação proibida para pre-load. 3. Remover geração de `HOSTCALL` com `SyscallDecl("__unknown__",...)` em derivação automática. 4. Falhar cedo com erro determinístico e mensagem orientada a ação. ## Acceptance Criteria 1. `IRVMProgram` nunca retorna plano incoerente no fluxo canônico. 2. Não existe mais derivação com placeholders desconhecidos para hostcall. 3. Erros de coerência aparecem antes da emissão binária. ## Tests 1. Testes negativos para `RAW_SYSCALL` no plano e para hostcall sem metadado válido. 2. Testes de regressão para caminhos válidos existentes. 3. Testes de estabilidade de códigos de erro. ## Affected Documents 1. `docs/general/specs/15. Bytecode and PBX Mapping Specification.md` 2. `docs/general/specs/20. IRBackend to IRVM Lowering Specification.md` 3. `docs/general/specs/19. Verification and Safety Checks Specification.md` ## Open Questions Sem bloqueios arquiteturais.