discover's return shape.
Note what this does NOT contain: any judgment about whether a candidate is worth downloading.
The extension reports what the site says exists; the host compares that against its own library
and the user's rules. Keeping the judgment host-side means one tested implementation shared by
every source rather than each extension reinventing it — the same split DownloadResult.version_history already uses.
candidates: DiscoveredCandidate[]
degraded: boolean
Load-bearing. true when this listing was read without the sign-in it needed.
Many sources answer a signed-out search with a smaller result set rather than an error — the call succeeds, it simply saw less. Staying silent about that would be indistinguishable from "nothing new", and the host would record works it never had access to as handled, hiding them permanently with no error anywhere to reveal it. Set this whenever the sign-in was missing, expired, or rejected, even though the listing itself parsed fine.
error: PluginError
Why the result is degraded, or why nothing could be read at all.