Analysis Bookmark
Resume marker for incremental source analysis within a ContextId.
When AbstractIncrementalAnalyzer processes a growing source (conversation, message stream, log tail), it cannot re-read from the beginning each time. After each successful window it records an AnalysisBookmark so the next invocation knows how far analysis has progressed for that BookmarkKey.
endIndex is the exclusive upper bound of items already incorporated into a processed window. The analyzer uses it to:
compute how many new items have arrived since the last run (WindowConfig.triggerInterval)
start the next window with optional overlap (WindowConfig.overlapSize) for LLM context
Bookmarks complement content-hash deduplication (ChunkHistoryStore.isProcessed): the hash prevents re-processing identical text, while the bookmark prevents re-scanning from index zero when new items append to the same source.
Cleared by ChunkHistoryStore.clearByContext when a session or tenant ends.