fix(dates): resume cursor so unconvertible rows can't stall the #118 drain

Review follow-up: rows that exist but can't be faithfully resolved spent
the cap and were re-collected first every tick. Carry a per-library
cursor across ticks (wrapping at end of table), share the cap parser
between the two date drains, and name the conversion tuple.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Cameron CordesandClaude Opus 5.5 committed 2026-09-26 09:28:16 -04:00
1 parent 1fad08dea3
commit b7b59c1ba2
3 files changed
+153 -43

No files matched your search

+5 -3
View File
@@ -446,9 +446,11 @@ partial index `idx_image_exif_utc_backfill`) by re-running
batch) and writing **only** the new-contract triple — the legacy pair
stays frozen. Legacy `manual` rows convert via
`camera_tz::manual_date_resolution` instead of being re-resolved from
the file. Missing-file rows are paged past without spending the cap;
EXIF/exiftool-legacy rows wait when exiftool is absent (they'd otherwise
fall to fs_time). When a converted row's display-zone day differs from
the file. Missing-file rows are paged past without spending the cap, and
a per-library resume cursor (carried across ticks by the watcher, wraps
at end of table) keeps unconvertible rows from stalling the rows behind
them; EXIF/exiftool-legacy rows wait when exiftool is absent (they'd
otherwise fall to fs_time). When a converted row's display-zone day differs from
the day its legacy value rendered on, the `day`-span `precomputed_reels`
rows covering either month-day (this library + `all`) are deleted and
unlinked; the nightly pre-gen regenerates. Daily conversation summaries