Three fixes from the unread load study:
- THREAD_MENTIONS starts from the thread's unread replies and probes the
mention key for each, instead of walking the actor's mentions across the
channel and filtering by root. Same counts (pinned against the old query
in a test), no new index; it was ~92% of the heaviest sidebar.
- Automatic thread follows go dormant after BUZZ_V1_RETENTION_SECONDS
(30 days) without the actor's involvement: posting, being mentioned, a
reply to their root or in their DM, marking it read, or following it.
A dormant follow is neither counted nor listed but keeps its row and
position, and any involvement revives it. Follow intents set `explicit`,
which never goes dormant. 0061 adds personal_read_frontiers.explicit,
.active_at and idx_personal_read_frontiers_active (actor's threads by
involvement, for a later history view). This replaces the author-time
unread horizon: author time no longer filters unread or mentions.
- Agent accounts (users.agent_owner_pubkey set) keep no read state:
ingest writes them no positions or follows, and /buzz/v1 answers 403.
Their messages still make people follow.
Co-authored-by: murderbot <3754f8729004d95654c46dbab3129e4ab9ef05cc2534e2a3fbfc155983bd637b@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Bradley Axen <baxen@squareup.com>