2.6 KiB
2.6 KiB
PR - Asset Manager On-Demand Payload and OP_MODE
Briefing
Com bootstrap e open_slice ja estabilizados, o AssetManager pode ser migrado do modelo atual baseado em blob inteiro residente para o modelo decidido na 011:
asset_tableviva durante toda a execucao;preloadapenas no boot;- payload lido sob demanda;
- pipeline
ROM -> open_slice -> CODEX/decode -> BankouROM -> open_slice -> blob temporario -> CODEX/decode -> Bank.
Esta PR implementa a mudanca de comportamento interno do AssetManager sem reabrir o envelope de assets.pa.
Decisions de Origem
../decisions/011-assets-pa-autocontained-runtime-contract.md
Alvo
Refatorar o AssetManager para consumir payload sob demanda e encapsular OP_MODE por codec/CODEX.
Escopo
- remover o baseline de
Arc<RwLock<Vec<u8>>>para payload inteiro residente; - fazer
AssetManagerdepender deasset_tableviva + origem de payload por slice; - tratar
preloadapenas na inicializacao; - encapsular
OP_MODEpor codec/CODEX; - suportar:
- leitura direta da ROM via slice;
- materializacao temporaria em memoria quando o codec exigir;
- preservar a superficie observavel do dominio
asset.
Fora de Escopo
- redefinir envelope de
assets.pa; .pmc;- novos codecs;
- rediscutir a policy de
assetsyscall status-first.
Plano de Execucao
- Substituir
assets_datapor origem de payload em slices. - Adaptar preload para usar a nova origem de payload apenas durante o boot.
- Adaptar
load()e o caminho assíncrono para consumir slices sob demanda. - Introduzir
OP_MODEderivado decodec/CODEX. - Garantir que o resultado continue indo para staging/resident/bank como hoje.
Criterios de Aceite
AssetManagernao depende mais de payload inteiro residente em RAM.- preload usa a nova origem de payload e nao permanece vivo depois do boot.
asset_tablecontinua sendo a fonte da verdade para resolucao de asset.asset.load/status/commit/cancelpreservam a superficie observavel atual.- o pipeline para decode/bank suporta leitura direta ou blob temporario conforme o
OP_MODE.
Tests / Validacao
- testes de
AssetManagerpara:- preload no boot;
- leitura por offsets relativos ao payload;
- ausencia de dependencia em blob inteiro residente;
- path de leitura direta;
- path de blob temporario;
- smoke tests de
asset.load/status/commit/cancelpara garantir ausencia de regressao observavel.
Riscos
- regressao de preload ao trocar a origem do payload;
- encapsulamento ruim entre source/view, codec e bank;
- reintroduzir copia excessiva por atalho local no caminho assíncrono.