Parent
Sub-issue of #9515 (Rebuild Video.availableLanguages as one cycle-safe, recursively-correct source of truth).
What to build
A batch verifier job, following this codebase's existing reconciliation-worker pattern (paginated/resumable, not a single unbounded pass), walks the catalog level-batched, recomputes every video's availableLanguages from source data via the shared recompute engine, diffs against the stored value, and reports mismatches. It can also self-heal (write the corrected value) rather than only report. This closes the loop on the whole spec: instead of hoping every write path is complete, drift can be proven present or absent, and repaired, on demand.
This is deliberately last — running it before every writer is actually fixed would just surface the still-open bugs as expected noise rather than real signal.
Acceptance criteria
Blocked by
Parent
Sub-issue of #9515 (Rebuild Video.availableLanguages as one cycle-safe, recursively-correct source of truth).
What to build
A batch verifier job, following this codebase's existing reconciliation-worker pattern (paginated/resumable, not a single unbounded pass), walks the catalog level-batched, recomputes every video's
availableLanguagesfrom source data via the shared recompute engine, diffs against the stored value, and reports mismatches. It can also self-heal (write the corrected value) rather than only report. This closes the loop on the whole spec: instead of hoping every write path is complete, drift can be proven present or absent, and repaired, on demand.This is deliberately last — running it before every writer is actually fixed would just surface the still-open bugs as expected noise rather than real signal.
Acceptance criteria
availableLanguagesdoesn't match what its current variants/children imply) reports that mismatch.Blocked by