pub async fn hash_file(path: &Path) -> Result<String, Error>
Computes the SHA256 hash of a file and returns it as a hex string. Uses spawn_blocking internally to avoid blocking the async runtime.