pub(crate) fn purpose_header_candidates( root: &Path, nodes: &[Node], ) -> Result<Vec<String>, CliError>
Return source files that appear to start with legacy Purpose headers.