diff --git a/docs/runtime/agendas/006-asset-fault-semantics-and-surface.md b/docs/runtime/agendas/006-asset-fault-semantics-and-surface.md deleted file mode 100644 index 7b4d90fe..00000000 --- a/docs/runtime/agendas/006-asset-fault-semantics-and-surface.md +++ /dev/null @@ -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. diff --git a/docs/runtime/agendas/README.md b/docs/runtime/agendas/README.md index 456ac57a..85d92576 100644 --- a/docs/runtime/agendas/README.md +++ b/docs/runtime/agendas/README.md @@ -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: diff --git a/docs/runtime/decisions/README.md b/docs/runtime/decisions/README.md index 176caad0..dd71899b 100644 --- a/docs/runtime/decisions/README.md +++ b/docs/runtime/decisions/README.md @@ -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: