# PR004 - Asset Status-First Surface and Lifecycle ## Briefing A decision `010` fechou a superficie final de `asset`: - `asset.load(name, kind, slot) -> (status, handle)` - `asset.status(handle) -> status` - `asset.commit(handle) -> status` - `asset.cancel(handle) -> status` Sem no-op silencioso e sem `Panic` operacional. ## Alvo Implementar o contrato de `asset` em spec, registry e runtime. Arquivos principais: - `docs/runtime/specs/15-asset-management.md` - `crates/console/prometeu-hal/src/syscalls/domains/asset.rs` - `crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs` - `crates/console/prometeu-drivers/src/asset.rs` - `crates/console/prometeu-hal/src/asset_bridge.rs` (se necessario) ## Escopo Funcional - substituir `Err -> Panic` de `asset.load` por status operacional; - tornar `asset.commit` e `asset.cancel` retornos explicitos de status; - explicitar `UNKNOWN_HANDLE` em `asset.status`; - validar slot index/kind no request path de `load`; - manter erros de residency/slot no dominio `asset` (nao migrar para `bank`). ## Fora de Escopo - redesign da politica interna de residencia; - novos dominios de asset alem de `TILES` e `SOUNDS`. ## Critérios de Aceite - assinaturas de syscall `asset` alinhadas com decision `010`; - `asset.load` nao produz `Panic` para falha operacional; - `commit`/`cancel` nao ficam em no-op silencioso; - tabela de status por operacao documentada e testada. ## Tests - `cargo test -p prometeu-system` - `cargo test -p prometeu-drivers` - cenarios de: - handle desconhecido; - transicao invalida; - asset nao encontrado; - slot invalido/kind mismatch.