prometeu-runtime/docs/runtime/pull-requests/PR-011d-asset-manager-on-demand-payload-and-op-mode.md
2026-03-24 13:40:53 +00:00

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_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.