prometeu-runtime/docs/runtime/agendas/005-audio-fault-semantics-and-surface.md
2026-03-24 13:40:49 +00:00

64 lines
2.1 KiB
Markdown

# Agenda - Audio Fault Semantics and Surface
## Problema
O dominio `audio` hoje se comporta como comando deterministico com forte tendencia a no-op/fallback, mas essa politica ainda nao esta escrita como contrato.
Exemplos atuais:
- `AudioPlay` cai para `bank_id = 0` quando o asset nao e encontrado;
- o driver retorna sem efeito quando `voice_id` esta fora da faixa;
- samples nao resolvidos nao produzem fault terminal.
## Dor
- a semantica real de erro fica escondida em detalhes de implementacao;
- nao esta claro quando `audio` deve ser no-op, `status`, `Trap` ou `Panic`;
- futuras mudancas podem cristalizar `Panic` onde hoje o dominio tolera ausencia de recurso.
## Hotspots Atuais
- [dispatch.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs#L340)
- [dispatch.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-system/src/virtual_machine_runtime/dispatch.rs#L359)
- [audio.rs](/Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/crates/console/prometeu-drivers/src/audio.rs#L170)
## Alvo da Discussao
Fechar a politica de fault e surface de `audio` para o MVP.
## O Que Precisa Ser Definido
1. `voice_id` invalido.
Decidir entre:
- no-op deterministico;
- `status`;
- `Trap`.
2. Sample/bank ausente.
Decidir entre:
- no-op deterministico;
- `status`;
- `Trap`.
3. Voice unavailable.
Decidir se o dominio precisa retorno de `status` para esse caso ou se politica de voz resolve isso sem retorno.
4. Surface.
Decidir se `AudioPlay`/`AudioPlaySample` continuam `void` no MVP.
5. Faixas numericas.
Decidir a politica para pitch/pan/volume fora da faixa normativa.
## Dependencias
- `../specs/16a-syscall-policies.md`
- spec de audio
## Critério de Saida Desta Agenda
Pode virar PR quando houver decisao escrita sobre:
- matriz de `status`/`Trap`/`Panic` para `audio`;
- posicao explicita sobre no-op deterministico no dominio;
- shape final de retorno de `AudioPlay` e `AudioPlaySample` no MVP.