4.2 KiB
4.2 KiB
Agenda - Asset Codec NONE vs RAW
Contexto
O runtime acabou de fechar o contrato de tile bank v1 com:
- layout serializado especifico por
bank_type; - metadata normativa do proprio bank;
sizeedecoded_sizedistintos;- decode runtime-side que pode transformar a forma serializada em forma residente.
Nesse contexto, o campo codec continua aparecendo como RAW em specs e em codigo.
Ao mesmo tempo, a direcao arquitetural desejada e mais estreita:
bank_type+ contrato do bank definem formato/layout;codecdeve representar compressao ou transformacao generica de transporte;- layouts especificos de um bank nao devem vazar para o significado de
codec.
Problema
RAW hoje comunica mal a intencao do campo codec.
Para TILES, o payload:
- nao esta comprimido;
- mas tambem nao esta em forma residente;
- e exige decode normativo do bank antes de virar
TileBank.
Com isso, RAW pode ser lido de dois jeitos conflitantes:
- "sem compressao";
- "bytes ja estao crus/prontos para consumo".
Se o segundo sentido entrar no modelo mental do projeto, o contrato fica confuso exatamente onde queriamos separar:
codeccomo compressao;- layout como contrato do bank.
Pontos Criticos
- Fato:
TILESv1 usa payload serializado4bpppacked e runtime materializau8por pixel. - Fato:
codecnao deveria descrever esse layout se o layout ja pertence ao contrato do bank. - Fato:
RAWesta publicado emspecs/15, fixtures de teste e paths de runtime. - Risco: manter
RAWprolonga leitura ambigua de quecodecdescreve mais do que compressao. - Risco: trocar para
NONEsem fechar linguagem normativa pode gerar migracao incompleta entre runtime e packer. - Tradeoff:
NONEe semanticamente mais honesto para "sem codec adicional", mas exige propagacao coordenada. - Hipotese: a troca para
NONEreduz ambiguidade sem exigir redesenho do modelo de assets, desde que a spec explicite que decode especifico do bank continua existindo mesmo comcodec = NONE.
Opcoes
Opcao 1 - Manter RAW
Vantagens:
- zero churn imediato;
- preserva compatibilidade literal com fixtures e tooling atuais.
Desvantagens:
- mantem um nome que sugere semantica mais larga do que compressao;
- enfraquece a separacao entre
codece layout do bank.
Opcao 2 - Trocar RAW por NONE
Vantagens:
- alinha o nome do campo com a ideia de "sem codec adicional";
- deixa mais claro que o decode de
TILESvem do contrato do bank, nao docodec.
Desvantagens:
- exige propagacao coordenada em specs, runtime, testes e packer;
- requer cuidado editorial para nao sugerir que
NONEsignifica "sem decode".
Opcao 3 - Introduzir dupla compatibilidade temporaria (RAW e NONE)
Vantagens:
- reduz atrito de migracao entre runtime e packer;
- permite transicao progressiva.
Desvantagens:
- aumenta a superficie normativa e a ambiguidade por mais tempo;
- piora o contrato justamente quando o objetivo e simplifica-lo.
Sugestao / Recomendacao
Recomendacao principal: adotar codec = NONE como contrato alvo e aposentar RAW.
Motivo:
- o layout continua sendo definido por
bank_typee metadata normativa do bank; codecfica semanticamente reservado para compressao ou transformacao generica de transporte;NONEdescreve melhor a ausencia de codec adicional sem negar que o bank ainda tenha seu proprio decode normativo.
Recomendacao de propagacao, se a decisao for confirmada:
- atualizar
specs/15para explicitar queNONEsignifica "no additional transport codec"; - atualizar runtime/tests para aceitar
NONE; - decidir se havera ou nao uma janela curta de compatibilidade com
RAW; - alinhar packer para publicar
NONEno mesmo ciclo.
Perguntas em Aberto
- A transicao deve ser atomica ou com compatibilidade curta
RAW+NONE? SOUNDStambem deve migrar no mesmo passo para manter uniformidade?- Existe algum artefato externo ao runtime atual que ainda dependa literalmente de
RAW?
Criterio para Encerrar
Esta agenda pode virar decision quando houver resposta fechada para:
- semantica oficial de
codecno modelo de assets; - string canonica publicada (
NONEou permanencia deRAW); - estrategia de compatibilidade da migracao;
- lista de propagacao minima em
specs, runtime e packer.