pub fn is_safe_split(messages: &[Message], split_idx: usize) -> bool
Whether split_idx is a safe boundary (not mid tool-result run).
split_idx