defmodule ArcadiaCloud.Sync.DriftDetectionWorker do @moduledoc """ Periodic drift sweep — compares every provisioned resource's desired spec against its live cloud_resources row. Runs after the inventory sync workers so it compares against fresh data. """ use Oban.Worker, queue: :cloud_sync_full, max_attempts: 3 require Logger alias ArcadiaCloud.Drift @impl Oban.Worker def perform(_job) do summary = Drift.detect_all() Logger.info( "[drift] checked=#{summary.checked} drifted_fields=#{summary.drifted_fields} " <> "new=#{summary.new_drift} stale_closed=#{summary.resolved_stale}" ) :ok end end