2.2 KiB
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
- Remoção Total: Eliminar os campos
telemetry_currentetelemetry_lastda structVirtualMachineRuntime. - Modelo Único: O
AtomicTelemetrypassa a ser a única estrutura responsável por rastrear métricas de execução (ciclos, memória, logs). - 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 umTelemetryFrameimutável a partir do estado atômico atual. - Atualização Condicional: A atualização dos campos atômicos dentro do loop de
tickda VM permanece protegida porinspection_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_currentetelemetry_lastao 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
VirtualMachineRuntimedeve possuir uma instância deArc<AtomicTelemetry>. - O
AtomicTelemetrydeve ser thread-safe (já garantido pelo uso destd::sync::atomic).
Impactos
- Runtime: Alteração na struct principal e no loop de tick.
- HAL: Possível ajuste no
LogServicese 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-winitpara garantir que continua funcionando (já migrado no PLN-0006, mas deve ser validado).