pub fn read_output(directory: &Path) -> Result<RunOutput, String>
Read both streams without treating invalid UTF-8 or missing files as empty.