prometeu-runtime/discussion/workflow/decisions/DEC-0008-full-migration-to-atomic-telemetry.md

2.2 KiB

DEC-0008: Full Migration to Atomic Telemetry

Status

Accepted

Contexto

Após o sucesso inicial do AtomicTelemetry (DEC-0007), identificou-se que a coexistência com os campos legados telemetry_current e telemetry_last no VirtualMachineRuntime é contraproducente. O usuário solicitou a remoção completa da camada de compatibilidade para simplificar o motor e garantir que o modelo atômico seja a única fonte de verdade para performance e inspeção.

Decisao

  1. Remoção Total: Eliminar os campos telemetry_current e telemetry_last da struct VirtualMachineRuntime.
  2. Modelo Único: O AtomicTelemetry passa a ser a única estrutura responsável por rastrear métricas de execução (ciclos, memória, logs).
  3. Snapshot On-Demand: Qualquer necessidade de telemetria estática (ex: para logs de erro ou final de frame) deve ser atendida pelo método AtomicTelemetry::snapshot(), que gera um TelemetryFrame imutável a partir do estado atômico atual.
  4. Atualização Condicional: A atualização dos campos atômicos dentro do loop de tick da VM permanece protegida por inspection_active, garantindo overhead zero em modo de produção.

Rationale

  • Simplicidade: Reduz o número de campos no VirtualMachineRuntime.
  • Performance: Evita a cópia de dados entre telemetry_current e telemetry_last ao final de cada frame.
  • Consistência: Garante que o Host e o Runtime vejam os mesmos dados através da mesma API.

Invariantes / Contrato

  • O VirtualMachineRuntime deve possuir uma instância de Arc<AtomicTelemetry>.
  • O AtomicTelemetry deve ser thread-safe (já garantido pelo uso de std::sync::atomic).

Impactos

  • Runtime: Alteração na struct principal e no loop de tick.
  • HAL: Possível ajuste no LogService se ele dependia diretamente dos campos legados.
  • Docs: Necessidade de atualizar as especificações de Debug e Portabilidade.

Referencias

  • AGD-0021 (Migration Agenda)
  • DEC-0007 (Overlay Isolation Decision)

Propagacao Necessaria

  • Refatoração de VirtualMachineRuntime.
  • Atualização de prometeu-host-desktop-winit para garantir que continua funcionando (já migrado no PLN-0006, mas deve ser validado).