store_heartbeat_diagnostics() unconditionally SET each diagnostic column to its parameter, so a v1.0.0 heartbeat (which omits the five v1.1.0 fields and leaves them as None after Pydantic parsing) erased previously stored diagnostics for that device. Wrap each parameter in COALESCE(?, column_name) so omitted fields preserve the existing value. Found via adversarial review (gpt-5.5 reviewer, run 2026-05-01-191359). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>