improvements agendas and decisions
This commit is contained in:
parent
bcf30f8c4a
commit
8883b8a21f
@ -0,0 +1,122 @@
|
||||
# Decision Record - Asset Status-First Fault and Return Contract
|
||||
|
||||
## Status
|
||||
|
||||
Accepted
|
||||
|
||||
## Contexto
|
||||
|
||||
A agenda `006-asset-fault-semantics-and-surface.md` evidenciou inconsistencia no dominio `asset`:
|
||||
|
||||
- `asset.status` ja usa status numerico;
|
||||
- `asset.load` ainda escalava erro operacional para `Panic`;
|
||||
- `asset.commit`/`asset.cancel` eram `void` com no-op silencioso para varios casos.
|
||||
|
||||
Para alinhar o dominio com `16a`, foi fechado contrato status-first para `asset`.
|
||||
|
||||
## Decisao
|
||||
|
||||
### 1. Fronteira de fault class em `asset`
|
||||
|
||||
`asset` segue:
|
||||
|
||||
- `Trap`: violacao estrutural de ABI/chamada (tipo, aridade, capability, shape).
|
||||
- `status` (inteiro): erro operacional recuperavel de dominio.
|
||||
- `Panic`: apenas quebra de invariante interna de runtime/host.
|
||||
|
||||
### 2. Surface canonica do dominio
|
||||
|
||||
A surface final do MVP fica:
|
||||
|
||||
- `asset.load(name, kind, slot) -> (status:int, handle:int)`
|
||||
- `asset.status(handle) -> status:int`
|
||||
- `asset.commit(handle) -> status:int`
|
||||
- `asset.cancel(handle) -> status:int`
|
||||
|
||||
Regras:
|
||||
|
||||
- `handle` so e valido quando `status == ASSET_OK`;
|
||||
- em falha de `load`, `handle` deve ser `0`.
|
||||
|
||||
### 3. No-op silencioso proibido
|
||||
|
||||
No-op silencioso nao e permitido para operacoes com erro operacional possivel.
|
||||
|
||||
Casos como:
|
||||
|
||||
- handle desconhecido;
|
||||
- transicao invalida de lifecycle;
|
||||
- slot invalido;
|
||||
- asset ausente;
|
||||
|
||||
devem retornar `status` explicito.
|
||||
|
||||
### 4. `asset.load` (request path)
|
||||
|
||||
Falhas operacionais de request devem virar `status`, incluindo:
|
||||
|
||||
- `ASSET_NOT_FOUND`;
|
||||
- `SLOT_KIND_MISMATCH`;
|
||||
- `SLOT_INDEX_INVALID`;
|
||||
- `BACKEND_ERROR`.
|
||||
|
||||
`Panic` nao deve ser usado para falha operacional de `load`.
|
||||
|
||||
### 5. `asset.status` (lifecycle path)
|
||||
|
||||
`asset.status` permanece a fonte de verdade do lifecycle assíncrono.
|
||||
|
||||
Codigos de lifecycle devem cobrir:
|
||||
|
||||
- `PENDING`
|
||||
- `LOADING`
|
||||
- `READY`
|
||||
- `COMMITTED`
|
||||
- `CANCELED`
|
||||
- `ERROR`
|
||||
- `UNKNOWN_HANDLE`
|
||||
|
||||
### 6. `asset.commit` e `asset.cancel`
|
||||
|
||||
Ambas operacoes devem retornar `status`.
|
||||
|
||||
Tabela minima de resposta:
|
||||
|
||||
- `ASSET_OK` (acao aceita/concluida para o estado atual)
|
||||
- `UNKNOWN_HANDLE`
|
||||
- `INVALID_STATE`
|
||||
|
||||
### 7. Relacao com dominio `bank`
|
||||
|
||||
Erros de residency/slot permanecem no dominio `asset`.
|
||||
|
||||
`bank` permanece dominio de inspecao (`info`, `slot_info`) e nao absorve erros operacionais de mutacao de asset lifecycle.
|
||||
|
||||
### 8. Compatibilidade e migracao
|
||||
|
||||
Nao ha requisito de compatibilidade retroativa para esta mudanca.
|
||||
|
||||
E permitido:
|
||||
|
||||
- alterar `ret_slots` de `asset.load`, `asset.commit`, `asset.cancel`;
|
||||
- ajustar registry/loader/dispatch/runtime com o novo contrato;
|
||||
- regenerar stress test com as assinaturas novas.
|
||||
|
||||
## Consequencias
|
||||
|
||||
### Positivas
|
||||
|
||||
- remove `Panic` operacional indevido do dominio `asset`;
|
||||
- torna fluxo de lifecycle observavel e consistente;
|
||||
- elimina ambiguidade de no-op em `commit`/`cancel`.
|
||||
|
||||
### Custos
|
||||
|
||||
- exige migracao de ABI das syscalls `asset`;
|
||||
- exige atualizacao de testes e artefatos gerados.
|
||||
|
||||
## Follow-up Obrigatorio
|
||||
|
||||
- agenda `006-asset-fault-semantics-and-surface.md` deve ser considerada absorvida e removida;
|
||||
- specs `15` e `16a` devem absorver o contrato final quando a implementacao estiver estavel;
|
||||
- registry de syscall deve refletir o shape final (`ret_slots`) das operacoes `asset`.
|
||||
Loading…
x
Reference in New Issue
Block a user