# PR-O1.2 - IRBackend Executable Contract Hardening ## Briefing Endurecer o contrato de entrada do backend (`IRBackendExecutableFunction`) para reduzir ambiguidade e rejeitar estados inconsistentes antes de `LowerToIRVM`. ## Target - `prometeu-compiler/prometeu-frontend-api` (`IRBackend`, `IRBackendExecutableFunction`). - Validacoes de construcao do modelo executavel. - Testes de contrato de modelo na API. ## Method - Adicionar validacoes estruturais obrigatorias (identidade, slots, limites e metadados minimos por instrucao). - Tornar explicita a politica para campos em branco (`moduleKey`, nomes de callsites, metadado host/intrinsic). - Rejeitar estados impossiveis no proprio modelo, nao no emissor tardio. ## Acceptance Criteria - Modelo recusa funcoes/instrucoes com combinacoes invalidas de campos. - Contrato de `CALL_FUNC`/`CALL_HOST`/`CALL_INTRINSIC` fica mutuamente exclusivo e completo. - Campos de slot/stack nao aceitam valores negativos. - Testes de contrato cobrem casos validos e invalidos deterministas. ## Tests - `IRBackendExecutableContractTest` ampliado para validacoes novas. - Testes de construtor para cada kind de instrucao com metadados obrigatorios. - Testes de regressao para aceitar payloads validos atuais.