prometeu-runtime/docs/runtime/pull-requests/026-runtime-cartridge-entrypoint-removal-and-boot-protocol-propagation.md
2026-03-24 13:40:57 +00:00

3.9 KiB

026-runtime-cartridge-entrypoint-removal-and-boot-protocol-propagation

Status: Completed Decision: ../decisions/025-cartridge-manifest-entrypoint-removal-and-runtime-protocol.md Commit: a30ac16

Briefing

Executar a propagacao de codigo da decision 025 no runtime, removendo entrypoint do loader e do estado de cartridge, endurecendo o boot da VM em func_id = 0 e ajustando testes e tooling local necessario para manter o stress path funcional.

Esta PR assume que a discussao arquitetural e o contrato normativo ja estao fechados. Nao e lugar para rediscutir authority de boot.

Decisions de Origem

Alvo

Propagar o protocolo de boot fixo em func_id = 0 para prometeu-hal, prometeu-system, prometeu-vm e tooling local afetado nesta workspace.

Escopo

  • remover entrypoint de CartridgeManifest, CartridgeDTO e Cartridge;
  • parar de desserializar e propagar entrypoint no loader;
  • endurecer VirtualMachine::initialize(...) para boot protocolar sem parametro textual;
  • remover current_entrypoint e o uso correspondente no boot do runtime system;
  • atualizar testes de loader, runtime system e VM init para o novo contrato;
  • ajustar o stress tooling local necessario para continuar emitindo artefato compativel com func_id = 0.

Fora de Escopo

  • redesign geral de prepare_call() para chamadas nao relacionadas a boot;
  • compatibilidade normativa para cartuchos legados baseados em entrypoint;
  • mudancas amplas no compiler/PBS fora desta workspace;
  • qualquer reabertura da decisao sobre erro canonico ou autoridade de boot.

Plano de Execucao

  1. Remover entrypoint dos tipos de cartridge em prometeu-hal e atualizar o loader.
  2. Endurecer VirtualMachine::initialize(...) para carregar o programa e resolver boot exclusivamente em func_id = 0, reutilizando VmInitError::EntrypointNotFound quando o protocolo falhar.
  3. Remover current_entrypoint do runtime system e ajustar o caminho de tick() para preparar a chamada de entrada sem dependencia textual.
  4. Atualizar testes afetados em prometeu-hal, prometeu-system e prometeu-vm.
  5. Ajustar crates/tools/pbxgen-stress ou fixture equivalente para nao depender mais de entrypoint em manifest.json.
  6. Rodar a bateria de testes proporcional ao risco da mudanca.

Criterios de Aceite

  • nenhum tipo ou loader ativo do runtime depende de entrypoint em manifest.json;
  • o boot inicial da VM nao aceita mais parametro textual de entrypoint;
  • cartucho sem funcao valida em func_id = 0 falha com VmInitError::EntrypointNotFound;
  • current_entrypoint deixa de existir como estado operacional do runtime system;
  • o stress tooling local continua produzindo artefato executavel compativel com o contrato novo;
  • os testes afetados passam sob o contrato endurecido.

Tests / Validacao

  • testes unitarios de prometeu-vm cobrindo boot valido em func_id = 0 e falha quando 0 estiver ausente ou invalido;
  • testes de prometeu-system cobrindo inicializacao e ciclo de boot sem current_entrypoint;
  • testes de prometeu-hal cobrindo loader sem entrypoint no manifesto;
  • validacao do stress tooling local para garantir que o gerador nao continue emitindo contrato legado.

Riscos

  • a remocao de entrypoint pode quebrar fixtures e helpers de teste dispersos fora dos call sites obvios;
  • mudar VirtualMachine::initialize(...) sem revisar o caminho de tick() pode deixar boot sem prepare inicial coerente;
  • deixar prepare_call() parcialmente textual sem delimitar seu papel pode gerar confusao futuras, embora isso nao bloqueie esta PR;
  • tooling local que ainda grave entrypoint pode mascarar regressao se nao for atualizado no mesmo ciclo.