improvements agendas and decisions

This commit is contained in:
bQUARKz 2026-03-09 06:42:10 +00:00
parent d8422d26af
commit bcf30f8c4a
Signed by: bquarkz
SSH Key Fingerprint: SHA256:Z7dgqoglWwoK6j6u4QC87OveEq74WOhFN+gitsxtkf8
3 changed files with 7 additions and 80 deletions

View File

@ -1,71 +0,0 @@
# Agenda - Asset Fault Semantics and Surface
## Problema
O dominio `asset` ja se comporta como dominio orientado a status em partes da surface, mas ainda promove erro operacional para `Panic` em pontos centrais.
Exemplo atual:
- `AssetLoad` transforma `Err(e)` de `hw.assets().load(...)` em `VmFault::Panic(e)`.
Ao mesmo tempo:
- `AssetStatus` ja expoe um status numerico do dominio;
- a spec `16a` ja aponta direcao `status-first` para falhas operacionais;
- a decisao `003` reforca a preferencia por status quando existir contrato funcional recuperavel.
## Dor
- falha de asset pode derrubar o app como se fosse bug estrutural do runtime;
- a surface do dominio fica incoerente: `status` para observar, `Panic` para operar;
- commit/cancel ainda nao deixam claro se handle desconhecido e status, no-op ou fault terminal.
## Hotspots Atuais
- [dispatch.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs#L461)
- [dispatch.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs#L478)
- [dispatch.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs#L490)
## Alvo da Discussao
Fechar a taxonomia de fault e, se necessario, ajustar a surface publica de `asset` para que:
- falhas operacionais virem `status`;
- `Trap` fique reservado para erro estrutural da chamada;
- `Panic` fique restrito a invariantes quebradas.
## O Que Precisa Ser Definido
1. `AssetLoad`.
Decidir o que retorna quando:
- `asset_id` nao existe;
- slot esta ocupado/conflita;
- backend falha;
- o asset manager entra em estado invalido.
2. `AssetStatus`.
Confirmar se o enum atual e suficiente ou se precisa crescer.
3. `AssetCommit` e `AssetCancel`.
Decidir o shape de fault/status para:
- handle desconhecido;
- handle ja finalizado;
- transicao invalida.
4. Surface.
Decidir se `commit`/`cancel` continuam `void` ou se precisam de retorno explicito.
5. Relacao com `bank`.
Definir se erros de residency/slot entram em `asset` status ou em agenda separada de `bank`.
## Dependencias
- `../specs/16a-syscall-policies.md`
## Critério de Saida Desta Agenda
Pode virar PR quando houver decisao escrita sobre:
- matriz de `status`/`Trap`/`Panic` para `asset`;
- shape final de `AssetLoad`, `AssetStatus`, `AssetCommit` e `AssetCancel`;
- eliminacao dos `Panic` operacionais indevidos do dominio.

View File

@ -10,7 +10,6 @@ Objetivo:
As agendas atuais são:
- `006-asset-fault-semantics-and-surface.md`
- `007-runtime-edge-test-plan.md`
- `008-packed-cartridge-loader-pmc.md`
- `009-system-run-cart.md`
@ -26,11 +25,10 @@ Ordem sugerida para discussão e futura execução:
1. `012-vm-owned-random-service.md`
2. `013-game-memcard-slots-surface-and-semantics.md`
3. `014-app-home-filesystem-surface-and-semantics.md`
4. `006-asset-fault-semantics-and-surface.md`
5. `007-runtime-edge-test-plan.md`
6. `008-packed-cartridge-loader-pmc.md`
7. `009-system-run-cart.md`
8. `010-system-fault-semantics-and-control-surface.md`
4. `007-runtime-edge-test-plan.md`
5. `008-packed-cartridge-loader-pmc.md`
6. `009-system-run-cart.md`
7. `010-system-fault-semantics-and-control-surface.md`
Justificativa curta:
@ -41,7 +39,7 @@ Justificativa curta:
- a decisao `007` fixa o nucleo de fault policy de `fs`; os detalhes ficam distribuidos em `013` e `014`.
- a decisao `008` fixa o contrato status-first de `gfx`.
- a decisao `009` fixa o contrato status-first de `audio`.
- `006` consolida fault semantics do dominio `asset` com base em `16a`.
- a decisao `010` fixa o contrato status-first de `asset`.
- a agenda `007` vem depois para transformar as decisoes em cobertura de regressao na borda do runtime.
- `008` e importante, mas nao bloqueia bytecode/backend agora.
- `009` e `010` ficam no fim porque `run_cart` nao e objetivo do ciclo atual.
@ -51,10 +49,9 @@ Dependências principais:
- `012` depende da decisao `006` e de `16`/`16a`
- `013` depende das decisoes `003`/`007`, de `16a`, de `08` (memcard), de `12` (Hub/OS) e de `13` (`app_mode`)
- `014` depende das decisoes `003`/`007`, de `16a`, de `12` (Hub/OS) e de `13` (`app_mode`)
- `006` depende de `16a`
- `007` depende da estabilizacao minima das agendas de superficie/fault por dominio
- `008` depende de contrato fechado de `13-cartridge.md` + comportamento equivalente ao loader de diretorio
- `009` depende da decisao `003`, de `16a` e de `06`, e deve alinhar com `013`/`014` quando usar `fs`
- `009` depende da decisao `003`, de `16a` e da decisao `006`, e deve alinhar com `013`/`014` quando usar `fs`
- `010` depende de `16a` e da `009`
Regra de uso:

View File

@ -21,6 +21,7 @@ Decisoes ativas:
- `007-filesystem-fault-core-policy.md`
- `008-gfx-status-first-fault-and-return-contract.md`
- `009-audio-status-first-fault-and-return-contract.md`
- `010-asset-status-first-fault-and-return-contract.md`
Decisoes aposentadas que ja viraram spec: