prometeu-runtime/docs/runtime/pull-requests/012-assets-preload-asset-id-propagation.md
2026-03-24 13:40:54 +00:00

70 lines
2.8 KiB
Markdown

# PR 012 - Propagacao da Decision 012 para Preload por `asset_id`
## Briefing
Esta PR executa a `decision 012`, que fecha a identidade normativa de preload em `assets.pa`.
O objetivo e remover preload por `asset_name`, adotar `asset_id` com semantica de `java int`, e validar preload como parte estrutural da formacao do cart.
## Decisions de Origem
- `../decisions/011-assets-pa-autocontained-runtime-contract.md`
- `../decisions/012-assets-preload-asset-id-contract.md`
## Alvo
Propagar a decisao em specs e codigo do runtime para que:
- `PreloadEntry` seja `{ asset_id, slot }`;
- preload invalido falhe no bootstrap;
- o runtime nao dependa de nome para resolver preload.
## Escopo
- atualizar `spec 13` e `spec 15`;
- atualizar structs e parse do header de `assets.pa`;
- validar preload contra `asset_table`;
- detectar clash de slot por tipo;
- ajustar `AssetManager` e testes para preload por `asset_id`;
- revisar tipos expostos de `asset_id` para semantica de `java int`.
## Fora de Escopo
- mudar a superficie VM-facing de `asset.load(name, kind, slot)`;
- redesenhar `asset_table` alem do necessario para suportar a decisao;
- introduzir compatibilidade legado por `asset_name`;
- alterar politica de bancos/slots fora da validacao de preload.
## Plano de Execucao
1. Atualizar specs `13` e `15` com o shape normativo novo e as regras de validacao estrutural.
2. Trocar `PreloadEntry` em `prometeu-hal` para `asset_id`.
3. Revisar os pontos runtime-facing onde `asset_id` ainda esta fixado como unsigned.
4. Validar, no parse/bootstrap de `assets.pa`, que:
- todo preload referencia `asset_id` existente;
- nao existe duplicidade de `(bank_type, slot)`.
5. Remover a resolucao nome -> id do caminho de preload no `AssetManager`.
6. Atualizar testes de loader, parse e preload em memoria.
## Criterios de Aceite
- `assets.pa` com preload valido por `asset_id` carrega normalmente.
- `assets.pa` com `asset_id` ausente da `asset_table` falha no bootstrap.
- `assets.pa` com clash de slot por tipo falha no bootstrap.
- preload deixa de depender de `asset_name`.
- nenhuma spec vigente continua descrevendo preload por nome.
## Tests / Validacao
- teste de parse do header com `PreloadEntry { asset_id, slot }`;
- teste de rejeicao para `preload.asset_id` inexistente;
- teste de rejeicao para duplicidade de `(bank_type, slot)`;
- teste de inicializacao do `AssetManager` preloading por `asset_id`;
- revisao textual das specs `13` e `15` contra a `decision 012`.
## Riscos
- a troca de semantica de `asset_id` para `java int` pode expor assumptos unsigned espalhados no runtime;
- validacao estrutural no loader pode exigir ajuste em fixtures de teste existentes;
- se houver produtor externo ainda emitindo preload por `asset_name`, ele quebrara imediatamente, como mandado pela decisao.