improvements agendas and decisions
This commit is contained in:
parent
d8422d26af
commit
bcf30f8c4a
@ -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.
|
||||
@ -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:
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user