The Targeting Engine evaluates a campaign’s cohort_query against the live
fleet and, stage by stage, hands the OTA service the next batch of device IDs
to offer the update to.
The saved selector (e.g. group:eu AND model:gw-300) is resolved against the
Device Repository.
The current stage percent (1% → 10% → 50% → 100%) caps how many of the resolved cohort are released in this batch.
Devices already updating, or that failed an earlier stage, are excluded so each device is only offered the update once per stage.
Targeting is deterministic given a campaign and stage, so a paused campaign resumes exactly where it left off.