- LOW-1: mime_type construction simplified. Single `content_type().map()`
with proper fallback instead of two unwrap_or chains where the second
default could never fire.
- INFO-2: ListEntry.snippet field dropped. Was always an empty string
because list mode doesn't fetch the body. Field stays out until /
unless we add a partial-body fetch in Phase C.
- INFO-3: 18 unit tests for the pure validation helpers — validate_mailbox
(accept + reject CR/LF/NUL/quote/backslash), has_imap_literal (with /
without digits), format_imap_since (canonical + bad-shape rejection),
strip_msgid_braces, clamp_limit, render_flag (every variant +
Custom), strip_quotes (matched / unmatched / inner / empties),
civil_from_unix (epoch / Y2K / 2026-05-21 / pre-epoch / leap day).
- Bonus catch from the test suite: format_imap_since accepted
malformed shapes like "21-05-2026" (parsed as y=21 m=5 d=2026)
and "2026-5-21" (no field-width check). Added 4-2-2 digit-width
check + year range (1900..=9999) + day range (1..=31). Month range
was already enforced.
All 18 tests pass.