31 lines
1.2 KiB
Markdown
31 lines
1.2 KiB
Markdown
# 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.
|