readDetail method
The full detail stored in path; null when the file is missing or
corrupt (a rotated-away or torn blob degrades the Request tab to the
record's lightweight metadata — never a crash).
Implementation
Future<TrajectoryRequestDetail?> readDetail(String path) async {
final map = await _readJson(path);
if (map == null) return null;
final detail = map['detail'];
if (detail is! Map) return null;
return TrajectoryRequestDetail.fromJson(detail.cast<String, dynamic>());
}