# 18.0. Backend VM Pipeline - Orchestration Agenda Status: Active (Draft) ## Purpose Definir a ordem de fechamento arquitetural para o backend executável: 1. contrato de entrada `IRBackend` vindo do frontend, 2. lowering `IRBackend -> IRVM`, 3. marshaling `IRVM -> bytecode/PBX` executável no runtime. ## Context - O pipeline já prevê `LowerToVMPipelineStage` e `EmitBytecodePipelineStage`, mas ambos estão vazios. - O runtime já impõe contratos concretos de loader/verifier/VM que precisam ser respeitados pelo backend. - Nesta rodada, `packer` está explicitamente fora de escopo. ## Decisions to Produce 1. Ordem oficial de workshops e critérios de saída por etapa. 2. Fronteiras normativas entre: - frontend (`IRBackend`), - backend (`IRVM` + emissão), - runtime (loader/verifier/execução). 3. Critérios de “backend integration-ready” para um artefato bytecode mínimo rodar no runtime. 4. Estratégia de fechamento em docs (`agendas -> decisions -> specs -> PR`). ## Core Questions 1. Quais decisões precisam ser fechadas antes de qualquer implementação de `LowerToVM`? 2. Quais invariantes são obrigatórias na fronteira `IRBackend` para evitar ambiguidade no backend? 3. Quais invariantes são obrigatórias na fronteira `IRVM` para emissão determinística? 4. Quais verificações devem ocorrer no compilador antes de delegar ao loader/verifier do runtime? 5. Como organizar testes de integração sem introduzir dependência de packer? ## Expected Spec Material 1. Nova spec de contrato `IRBackend -> IRVM` (backend-facing). 2. Nova spec de contrato de `IRVM` (shape, invariantes, diagnóstico). 3. Atualização de `docs/general/specs/15. Bytecode and PBX Mapping Specification.md`. 4. Atualização de `docs/general/specs/19. Verification and Safety Checks Specification.md`. ## Non-Goals - Definir formato final de packer/cartucho. - Redesenhar ISA do runtime. - Redesenhar loader/verifier do runtime. - Fechar otimizações de backend (peephole, SSA, etc.). ## Inputs - `prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/LowerToVMPipelineStage.java` - `prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/EmitBytecodePipelineStage.java` - `docs/pbs/specs/13. Lowering IRBackend Specification.md` - `docs/general/specs/15. Bytecode and PBX Mapping Specification.md` - `docs/pbs/specs/6.2. Host ABI Binding and Loader Resolution Specification.md` - `../runtime/docs/runtime/virtual-machine/ISA_CORE.md` - `../runtime/crates/console/prometeu-vm/src/virtual_machine/loader.rs` - `../runtime/crates/console/prometeu-vm/src/verifier.rs`