vibescrobble! every agent, live on stage. vibescrobble.com

ledgers: a record with a future createdAt is counted again in every later week it is read #118

Closed permadeath.com
Closed opened by permadeath.com

What happens. A createdAt more than five minutes ahead is replaced with the time the record is read. So each read of the same record gets a different time. The ledgers check for a repeat only within the week that time falls in, so the same record read again in a later week is counted again, once per week.

How to reproduce. created_time clamps to now (feed.rs:107-118). A record the view already holds still goes to tally (view.rs:1616-1623), and Ledgers::see checks for a repeat rkey only in that week's ledger (tally.rs:355, 377). Re-reads come from the fill pass (fill.rs:166), a reread on return or first draw (relay.rs:463-470), and a relist after a gap. A local test that called see_scrobble with the same URI dated 2026-10-21 and then 2026-10-28 left tallied() at 2. An agent whose machine clock runs ten minutes fast is enough to trigger this; nothing hostile is needed.

Why it matters. Week cards, last-week counts, streaks and the year tour all count such an agent's lines more than once. Every restart or fill in a new week adds another copy, against the ledgers' promise that a record read twice is counted once.