CREATE TABLE telemetry_snapshot ( tenant_id TEXT NOT NULL REFERENCES tenant(id) ON DELETE CASCADE, target_id TEXT NOT NULL, speaker_id TEXT REFERENCES bgp_speaker(id) ON DELETE SET NULL, kind TEXT NOT NULL CHECK (kind IN ('remote_agent','local_bird')), local_authority TEXT NOT NULL DEFAULT '', config_fingerprint TEXT NOT NULL DEFAULT '', bgp_json TEXT NOT NULL DEFAULT '{}', health_json TEXT NOT NULL DEFAULT '{}', next_poll_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP, failure_count INTEGER NOT NULL DEFAULT 0, discovery_cursor INTEGER NOT NULL DEFAULT 0, last_refresh_requested_at TEXT, refresh_pending INTEGER NOT NULL DEFAULT 0, owner_id TEXT, fencing_token INTEGER NOT NULL DEFAULT 0, lease_until TEXT, PRIMARY KEY (tenant_id,target_id) ); CREATE INDEX telemetry_snapshot_due ON telemetry_snapshot(next_poll_at) WHERE owner_id IS NULL; CREATE INDEX telemetry_snapshot_speaker ON telemetry_snapshot(speaker_id);