38b09ded95
CalendarEvents range-scanned the key prefix and returned every historical row, voided ones included. The facts table is append-only and the event key is day plus summary, so moving a standup from 14:00 to 16:00 left two rows under one key. The day plan prints a time per line, so it recited both and told the owner he had two standups. The query now drops voided rows, keeps the latest row within a source, and prefers the best-evidenced source across them, so a notification relay guessing at a meeting cannot displace the calendar read of it. Found in review of #58.