# 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.