pub fn load_materialized_transcript_tail(
session_id: &str,
limit: usize,
) -> Result<Vec<Arc<TranscriptItem>>>Expand description
Read the newest limit transcript items for a session, oldest first.
A conversation view seeds itself from the tail and discards everything
before it — ChatState::from_materialized_tail keeps TAIL_SEED_ITEMS
and drops the rest — so reading the whole transcript to show the end of it
is work proportional to history for a result that never was. On a real
session that meant reading 28,066 rows to render 256.
The materialized_transcript_position index covers the ordering, so this
costs the rows it returns rather than the rows that exist.