55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
# 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.
|