| 326 | } |
| 327 | |
| 328 | async fn load_run_records(&self, id: &str) -> Result<Option<Vec<RunRecord>>> { |
| 329 | let path = self.runs_path(id); |
| 330 | if !path.exists() { |
| 331 | return Ok(None); |
| 332 | } |
| 333 | |
| 334 | let json = fs::read_to_string(&path) |
| 335 | .await |
| 336 | .with_context(|| format!("Failed to read run records from {}", path.display()))?; |
| 337 | let records = serde_json::from_str(&json) |
| 338 | .with_context(|| format!("Failed to parse run records from {}", path.display()))?; |
| 339 | Ok(Some(records)) |
| 340 | } |
| 341 | |
| 342 | async fn save_verification_reports( |
| 343 | &self, |