# 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`. - 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).