Dates: filename date class — per-pattern conventions + filename-over-EXIF priority #116
Notifications
Due Date
No due date set.
Blocks
Depends on
Reference: Apps/ImageApi#116
Reference in new issue
Block a user
Parent
ImageApi #113 — SPEC: true-instant date contract (ADR-0001).
What to build
The filename date class becomes first-class: every existing filename pattern is explicitly tagged with its convention, and files whose name carries the original date resolve their date from the filename — outranking EXIF — while files outside the class keep the global EXIF-wins rule unchanged. Wall-clock patterns (screenshot, dash, compact) go through the offset cascade like any other wall clock; Unix-timestamp patterns are true instants directly (source audit
utc_direct).The existing pattern list is the baseline; no patterns are added or removed in this ticket (the audit ticket that follows will surface any gaps). The inversion is documented in the resolver as a deliberate, named exception to EXIF-wins — the filename is the original date of record for this class.
Acceptance criteria
wall(goes through the offset cascade) orutc(instant directly); a pattern matching nothing falls through to the normal waterfall.Screenshot_2014-06-01-20-44-50.png-style file with an EXIF date that disagrees is stored with the filename's date, wall clock converted via the cascade, source recorded as the filename step with the resolved offset-source.att_1422489664680106.jpeg) is stored as the instant it names (with the existing millisecond/seconds disambiguation), sourceutc_direct, no offset applied.Blocked by
Resolved by PR #122 (feature/filename-date-class, commit
a97bf53).What landed
Acceptance criteria — all covered by tests at the waterfall seam: filename_class_wall_without_evidence_assumes_server_zone, filename_class_wall_outranks_exif_and_uses_its_evidence (the inversion), filename_class_wall_gps_evidence_uses_capture_zone, filename_class_timestamp_is_utc_direct, in_class_video_name_resolves_without_exiftool; out-of-class EXIF-wins pinned by the existing prior-exif tests. 639 lib + 716 integration tests pass; fmt + clippy clean. Two-axis code review (standards + spec): spec clean, standards no violations.
CLAUDE.md's date-pipeline section rewritten to document the inversion as a named, deliberate exception (ADR-0001).