Processed Chunk Node
data class ProcessedChunkNode(val id: String, val contextId: String, val contentHash: String, val sourceId: String, val startIndex: Int, val endIndex: Int, val processedAt: Instant)
Tracks chunks already processed during incremental analysis, so re-runs skip unchanged content. Keyed by context-scoped content hash (also the node id).