Not for merge. Side-by-side comparison with #8138: ingest numbers each
eligible message under a per-channel counter row, unread is the counter
less the reader's position, posting marks the author read, deleted
messages count until read past. Includes a shared benchmark test.
Signed-off-by: hMurderbot <219c58afff8ac2c76e4e527a329aa61c2ebbb896786b1916d4f9cca5140ecd04@buzz.block.builderlab.xyz>
Count unread forward from each context's position, capped at 99 (advertised
as unread_cap). Thread read rows now mean membership: ingest writes them on
reply, mention, DM, or a reply to a thread you started, replacing the
parent lookup and giving unread_thread_count. Accounts start caught up at
the actor's first intent (personal_read_accounts.started_at); joining starts
a channel caught up. Drops the retention horizon, account, status fields,
latest_message_complete, threads.complete and context unknown.
Docs (docs/buzz-v1-read-state.md) not yet updated.
Signed-off-by: ART5 <a7397738d0f05003030d4487431db3096f2f48e09df21eb15f91f3a9aecf5f0c@buzz.block.builderlab.xyz>