pub fn plan_migration(
old_entries: &[Map<String, Value>],
new_entries: &[Map<String, Value>],
stems_dir: &Path,
strict: bool,
) -> Vec<Action>Expand description
Compare old and new entries and produce one action per new entry.
Matching is two-phase: exact on (text, speaker), then a text-only fallback for dialogue so a speaker reassignment is reported as such rather than as a brand-new line.