Deluan be87c3b179 feat(artwork): let a reprocess target only the absent states that failed
An absent state is reached two ways, and only one is worth retrying: a
source answering "no image" will answer the same next time, while an
exhausted retry budget will not. --source absent swept both together, so
recovering a handful of failures meant re-asking the provider about every
artist it has no photo for.

failed joins the source vocabulary next to absent, as a pseudo-source
matching absent rows that carry a last_failure. Several sources are a
union, so asking for absent and failed together is still just absent.

It resolves through the filter CountBySource and EnqueueBySource already
share, which is what keeps the dry-run preview honest, and the status
column now reads through the same call rather than its own query — so
the number in the report is the set the command acts on, by construction
rather than by agreement.
2026-09-01 17:56:15 -04:00
..