prometeu-runtime/discussion/workflow/agendas/AGD-0021-full-migration-to-atomic-telemetry.md

32 lines
2.4 KiB
Markdown

# AGD-0021: Full Migration to Atomic Telemetry
## Contexto
Durante a implementação do isolamento do overlay de debug no Host Desktop (DEC-0007), foi introduzido o `AtomicTelemetry` para permitir acesso assíncrono e sem locks aos dados de performance. Por motivos de cautela inicial, os campos legados `telemetry_current` e `telemetry_last` foram mantidos no `VirtualMachineRuntime` para compatibilidade com processos de certificação e logs internos.
## Problema
A manutenção de dois sistemas paralelos de telemetria gera redundância de código, aumenta a superfície de erro e consome ciclos de CPU desnecessários para atualizar dados que já estão disponíveis de forma mais eficiente via atômicos. A "compatibilidade" pretendida não justifica o débito técnico de manter estruturas duplicadas.
## Pontos Críticos
- **Fato:** `AtomicTelemetry` já provê todos os dados necessários (ciclos, memória, logs).
- **Risco:** Remoção de `telemetry_last` pode quebrar ferramentas que dependem de snapshots estáticos por frame se não houver um substituto claro de snapshot via atômicos.
- **Tradeoff:** A migração exige refatorar o `VirtualMachineRuntime` e possivelmente o `LogService` para convergirem em uma única fonte de verdade.
- **Hipótese:** Um snapshot derivado do `AtomicTelemetry` ao final de cada frame é suficiente para substituir o `telemetry_last` legado sem perda de precisão.
## Opções
- **Opção A (Recomendada):** Migração total e remoção dos campos legados. O `AtomicTelemetry` torna-se a única fonte de verdade. Onde snapshots estáveis são necessários, eles são extraídos via `AtomicTelemetry::snapshot()`.
- **Opção B:** Manter redundância (Descartada pelo usuário).
## Sugestão / Recomendação
1. Remover `telemetry_current` e `telemetry_last` do `VirtualMachineRuntime`.
2. Refatorar o loop de execução para atualizar exclusivamente o `AtomicTelemetry`.
3. Garantir que o `LogService` e outras auditorias consumam dados do novo modelo.
4. Atualizar as especificações para refletir o modelo único.
## Perguntas em Aberto
1. Existe algum uso específico de `telemetry_last` em ferramentas externas (não mapeadas) que dependem do layout de memória antigo? (Assumimos que não para este escopo).
## Criterio para Encerrar
- Remoção completa dos campos no código.
- Compilação e execução bem-sucedida do Host Desktop com o novo modelo único.
- Atualização da documentação normativa.