The receipt means the mouth fetched and stored the file for the Mind, not that it is in her sandbox or was read.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
readersOf (fileReceipt.ts) is the one reader: a receipt is a thread reply or a plain room event, matched by content.event_id; the sender must be @<mind>:<this homeserver>, the hash the file event's, an m.reference present must name the same event, one entry per Mind. The timeline file message draws it too.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Heimdall's two rules (#minds): trust the Matrix sender, never a field inside; read means the receipt hash equals the file event's.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>