Closes the "wanted movie, no file" gap: search every indexer, cache each candidate with its verdict and score, send the best eligible one to Transmission with its label and both seeding limits, and record the Grab. Restarting mid-flight cannot double-grab. A title with a live grab is not a gap, selection is a total order over the candidate set, and the add is keyed on the infohash, so a crash between the add and the insert heals on the next tick instead of leaving a second torrent. The policy row to arr-core mapping moves into arr-db, where both the manual-search API and the daemon read it, instead of being copied.