score_pair: additive locale (0.5) + campaign code (0.3) + clip-slug
substring (0.4), capped at 1.0, with hard-reject on divergent locales
or non-overlapping slugs. pair_batch: greedy highest-first assignment
above 0.7 threshold; one SRT per video.
Verified pairs all 6 videos in testing_15may/srt/ to their SRTs.
Extract campaign code, clip slug, and locale from both video and SRT
filenames. Handles the two SRT styles seen in testing_15may/srt/
(campaign-code-prefixed CFUL... form, and abbreviated RIO_INTRO6B form).
Verified at REPL against test data.
Merge original CLI check implementations from hm_qc/ and
hm_qc_video/ repos into modules/*/checks/legacy/ directories.
Includes profiles, launchers, utils, orchestrators, and the
standalone video Flask web app. Reference files (test data,
results, cheat sheets) copied to gitignored reference/ directory.
Censorship trainset copied to gitignored data/supporting/.
The legacy/ naming convention separates original run_check()
function-based implementations from the new BaseCheck class
architecture.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>