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

36 lines
2.2 KiB
Markdown

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