pub fn compute_signals_hash(marker_paths: &[PathBuf]) -> String
SHA256 of canonical-normalized content of marker files. CRLF→LF, strip BOM. Order: sort marker paths lexicographically before hashing.