-- Tracks where a row's `date_taken` was sourced so the canonical-date -- waterfall (kamadak-exif → exiftool → filename → earliest_fs_time) is -- visible to debugging and to the per-tick backfill drain that re-runs -- weak sources once stronger ones become available (e.g. exiftool gets -- installed on a deploy that didn't have it). See CLAUDE.md → Memories -- canonical-date pipeline. -- -- Values: -- 'exif' — kamadak-exif read DateTime/DateTimeOriginal directly -- 'exiftool' — exiftool fallback caught a video / MakerNote / QuickTime tag -- 'filename' — extract_date_from_filename matched a known pattern -- 'fs_time' — fell through to earliest_fs_time(metadata) -- -- NULL when `date_taken` itself is NULL (no source resolved the date). ALTER TABLE image_exif ADD COLUMN date_taken_source TEXT; -- Partial index for the per-tick backfill drain: targets rows that need -- re-resolution (no date yet, or only the weakest source resolved it). -- Filename-sourced rows are intentionally excluded — the regex is -- authoritative when it matches and re-running exiftool wouldn't change -- the answer. CREATE INDEX idx_image_exif_date_backfill ON image_exif (library_id, id) WHERE date_taken IS NULL OR date_taken_source = 'fs_time';