3.9 KiB
| id | ticket | title | status | created | resolved | decision | tags |
|---|---|---|---|---|---|---|---|
| AGD-0006 | app-home-filesystem-surface-and-semantics | Agenda - App Home Filesystem Surface and Semantics | open | 2026-03-27 |
Agenda - App Home Filesystem Surface and Semantics
Problema
Apps precisam de filesystem util para dados de usuario, cache e configuracao, mas sem acesso ao FS inteiro do host.
Sem um contrato claro de home por app, a API tende a crescer com semantica inconsistente entre plataformas.
Inputs Ja Fechados
- Todo
appacessa somente suahomelogica. - Nunca ha acesso direto ao filesystem global do host pela userland.
- O runtime
fsinterno continua cobrindo tantogamequantoapp.
Alvo da Discussao
Fechar a superficie e semantica funcional de fs para perfil app, com sandbox por app_id e transporte de bytes via decisao 003.
O Que Precisa Ser Definido
-
Surface minima do perfil
app. Operacoes candidatas:read;write;exists;stat;list_dir;delete;mkdir;rename.
-
Modelo de caminho logico. Definir:
- raiz virtual (
home); - normalizacao de path;
- bloqueio de path traversal;
- limites de profundidade/tamanho.
- raiz virtual (
-
Mapeamento host. Definir:
- como
homevira caminho fisico no host; - isolamento entre apps por
app_id; - regras de portabilidade entre hosts.
- como
-
Semantica de leitura/escrita. Definir:
- leitura total vs parcial;
- overwrite vs append;
- truncation;
- criacao implicita;
- escrita atomica por arquivo (quando aplicavel).
-
Quotas e capacidade. Definir:
- se v1 tem quota por app;
- comportamento para
storage full; - exposicao de metrica de uso livre/ocupado.
-
Metadados e listagem. Definir:
- campos minimos de
stat; - shape canonico de
list_dir; - timestamps (sim/nao e com qual garantia).
- campos minimos de
-
Fault/status do dominio. Fechar fronteira de:
statusoperacional;Trapestrutural;Panicinterno. E obrigatorio fechar, por operacao, a matriz final de retorno e fault class.
Responsabilidade Absorvida da Agenda 003
No perfil app (home sandbox), esta agenda passa a ser a fonte normativa para:
-
Catalogo de
statusde filesystem para app. Minimo esperado:OK;NOT_FOUND;PATH_INVALID;ACCESS_DENIED;NO_SPACE;ALREADY_EXISTS;UNAVAILABLE.
-
Matriz por operacao (
read,write,exists,stat,list_dir,delete,mkdir,rename). Para cada caso, classificar explicitamente:status;Trap;Panic.
-
Shape de retorno por operacao. Definir, no minimo:
statuscomo primeiro retorno;bytes_transferredemread/writequando aplicavel;- payload de metadados/listagem com formato canonico.
-
Regra de escrita parcial.
writenao pode reportar sucesso parcial silencioso. Quando a operacao nao puder ser concluida conforme contrato, deve retornar falha de dominio.
Open Questions de Arquitetura
- O v1 precisa de quota fixa por app ou apenas limites fisicos do host?
renameentra no MVP ou pode ficar para fase seguinte?- Qual conjunto minimo de metadados garante portabilidade real entre hosts?
- Qual grau de atomicidade e obrigatorio para escrita de arquivo no v1?
Dependencias
../decisions/003-vm-owned-byte-transfer-protocol.md../decisions/007-filesystem-fault-core-policy.md../specs/13-cartridge.md../specs/12-firmware-pos-and-prometeuhub.md../specs/16a-syscall-policies.md
Fora de Escopo
- slots de memcard para
game(fechado naspec 08); - acesso cross-app;
- sync remoto/cloud;
- DB embutido como contrato de plataforma.
Criterio de Saida Desta Agenda
Pode virar PR quando houver decisao escrita sobre:
- surface minima de
fsparaappemhome; - sandbox e isolamento por
app_id; - semantica final de path/read/write/listagem;
- matriz completa de fault/status para as operacoes do perfil
app.