buildEventLookup also collected `timeline.undated`, so an undated curated
event — which renders as a plain EventPill in the undated bucket, out of
clustering scope — still seeded clusters: its dated linked letters
scattered into year bands and each collapsed into a ✉ cross-year card
with no edit link and no spatial tie to the pill, showing the event title
twice with no relationship.
Only year-band events are collected now. Fixes review finding #7.
Refs #850
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>