71 lines
2.6 KiB
Markdown
71 lines
2.6 KiB
Markdown
# 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_table` viva durante toda a execucao;
|
|
- `preload` apenas no boot;
|
|
- payload lido sob demanda;
|
|
- pipeline `ROM -> open_slice -> CODEX/decode -> Bank` ou `ROM -> 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 `AssetManager` depender de `asset_table` viva + origem de payload por slice;
|
|
- tratar `preload` apenas na inicializacao;
|
|
- encapsular `OP_MODE` por 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 `asset` syscall status-first.
|
|
|
|
## Plano de Execucao
|
|
|
|
1. Substituir `assets_data` por origem de payload em slices.
|
|
2. Adaptar preload para usar a nova origem de payload apenas durante o boot.
|
|
3. Adaptar `load()` e o caminho assíncrono para consumir slices sob demanda.
|
|
4. Introduzir `OP_MODE` derivado de `codec`/CODEX.
|
|
5. Garantir que o resultado continue indo para staging/resident/bank como hoje.
|
|
|
|
## Criterios de Aceite
|
|
|
|
- `AssetManager` nao depende mais de payload inteiro residente em RAM.
|
|
- preload usa a nova origem de payload e nao permanece vivo depois do boot.
|
|
- `asset_table` continua sendo a fonte da verdade para resolucao de asset.
|
|
- `asset.load/status/commit/cancel` preservam a superficie observavel atual.
|
|
- o pipeline para decode/bank suporta leitura direta ou blob temporario conforme o `OP_MODE`.
|
|
|
|
## Tests / Validacao
|
|
|
|
- testes de `AssetManager` para:
|
|
- 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/cancel` para 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.
|