36 lines
2.2 KiB
Markdown
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).
|