3.7 KiB
Agenda - Game Memcard Slots Surface and Semantics
Problema
Jogos precisam de persistencia previsivel e portavel para save/config/blob, sem abrir acesso amplo ao filesystem.
Ao mesmo tempo, copia de saves deve acontecer fora do jogo (Hub/OS), com identificacao digital e visual por slot.
Inputs Ja Fechados
- Perfil
gameusa 32 slots por jogo. - Cada slot oferece payload de ate 32KB.
- Jogo acessa somente os proprios slots.
commite atomico por slot.- Copia/export/import de slots ocorre fora do jogo.
Alvo da Discussao
Fechar o contrato de slots de memcard para jogos, usando a decisao 003 como data plane de bytes.
O Que Precisa Ser Definido
-
Surface minima para jogos. Operacoes candidatas:
slot_count;slot_stat;slot_read;slot_write;slot_commit;slot_clear.
-
Envelope de identidade do slot. Definir metadados runtime-owned:
app_iddono;slot_index;save_uuid/generation;- tamanho de payload;
- checksum/integridade;
- estado (
empty,used,corrupt).
-
Identidade visual do slot. Definir metadados para Hub/OS:
- label/subtitulo;
- timestamp/logical counter;
- icone/preview (incluindo caminho para suporte futuro de icone animado estilo PSX).
-
Politica de copia fora do jogo. Definir:
- formato de export/import;
- validacoes de ownership;
- comportamento para conflito/duplicata/corrupcao.
-
Integracao com storage host. Definir:
- como slots viram arquivos fisicos no storage host;
- regra de namespace por jogo (
app_id); - garantias de atomicidade por slot.
-
Fault/status do dominio. Fechar fronteira de:
statusoperacional;Trapestrutural;Panicinterno. E obrigatorio fechar, para cada operacao de slot, a matriz final de retorno e fault class.
Responsabilidade Absorvida da Agenda 003
No perfil game (memcard), esta agenda passa a ser a fonte normativa para:
-
Catalogo de
statusde memcard. Minimo esperado:OK;NOT_FOUND/EMPTY;NO_SPACE;ACCESS_DENIED;CORRUPT;CONFLICT;UNAVAILABLE.
-
Matriz por operacao (
slot_count,slot_stat,slot_read,slot_write,slot_commit,slot_clear). Para cada caso, classificar explicitamente:status;Trap;Panic.
-
Shape de retorno por operacao. Definir, no minimo:
statuscomo primeiro retorno;bytes_transferredemslot_read/slot_writequando aplicavel;- flags auxiliares quando necessarias (ex.: estado de slot).
-
Regra de escrita parcial.
slot_writenao pode reportar sucesso parcial silencioso. Resultado deve respeitar a regra de atomicidade por slot.
Open Questions de Arquitetura
- Qual fonte canonica de
app_idunico no ecossistema? - Qual formato minimo do bloco visual do slot no v1?
- Qual politica de integridade v1 (CRC somente vs assinatura adicional)?
- Como o Hub deve tratar slots corrompidos sem quebrar UX?
Dependencias
../decisions/003-vm-owned-byte-transfer-protocol.md../decisions/007-filesystem-fault-core-policy.md../specs/08-save-memory-and-memcard.md../specs/13-cartridge.md../specs/12-firmware-pos-and-prometeuhub.md../specs/16a-syscall-policies.md
Fora de Escopo
- acesso amplo de jogos ao FS por path;
- banco de dados ou sync remoto;
- APIs de app sandbox (fica na agenda
014).
Criterio de Saida Desta Agenda
Pode virar PR quando houver decisao escrita sobre:
- contrato de slots (
32 x 32KB) e ownership por jogo; - envelope de identidade digital/visual do slot;
- politica de copia fora do jogo;
- surface minima + matriz completa de fault/status por operacao de slot.