pub fn extract_title(content: &str, filename: &str) -> String
Extract a title from plan content.
Tries the first markdown heading, falls back to humanized filename.