65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
# 026-runtime-cartridge-entrypoint-removal-and-boot-protocol-propagation
|
|
|
|
## Briefing
|
|
|
|
Executar a propagacao de codigo da [`decision 025`](../decisions/025-cartridge-manifest-entrypoint-removal-and-runtime-protocol.md) 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
|
|
|
|
- [`025-cartridge-manifest-entrypoint-removal-and-runtime-protocol.md`](../decisions/025-cartridge-manifest-entrypoint-removal-and-runtime-protocol.md)
|
|
|
|
## 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.
|
|
|