/// Keeps `print_upstream_sync` explicit because it sits on CLI orchestration, where operators need deterministic exits and artifact paths. /// Inputs are the typed parameters; output is the return value or side effect. fn print_upstream_sync(state: lesavka_common::lesavka::UpstreamSyncState) { println!("planner_session_id={}", state.session_id); println!("planner_phase={}", state.phase); println!( "planner_latest_camera_remote_pts_us={}", state .latest_camera_remote_pts_us .map(|value| value.to_string()) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_latest_microphone_remote_pts_us={}", state .latest_microphone_remote_pts_us .map(|value| value.to_string()) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_last_video_presented_pts_us={}", state .last_video_presented_pts_us .map(|value| value.to_string()) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_last_audio_presented_pts_us={}", state .last_audio_presented_pts_us .map(|value| value.to_string()) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_live_lag_ms={}", state .live_lag_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_skew_ms={}", state .planner_skew_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!("planner_stale_audio_drops={}", state.stale_audio_drops); println!("planner_stale_video_drops={}", state.stale_video_drops); println!("planner_skew_video_drops={}", state.skew_video_drops); println!("planner_freshness_reanchors={}", state.freshness_reanchors); println!("planner_startup_timeouts={}", state.startup_timeouts); println!("planner_video_freezes={}", state.video_freezes); println!( "planner_client_capture_skew_ms={}", state .client_capture_skew_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_client_send_skew_ms={}", state .client_send_skew_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_server_receive_skew_ms={}", state .server_receive_skew_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_camera_client_queue_age_ms={}", state .camera_client_queue_age_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_microphone_client_queue_age_ms={}", state .microphone_client_queue_age_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_camera_server_receive_age_ms={}", state .camera_server_receive_age_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_microphone_server_receive_age_ms={}", state .microphone_server_receive_age_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_client_capture_abs_skew_p95_ms={}", state .client_capture_abs_skew_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_client_send_abs_skew_p95_ms={}", state .client_send_abs_skew_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_server_receive_abs_skew_p95_ms={}", state .server_receive_abs_skew_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_camera_client_queue_age_p95_ms={}", state .camera_client_queue_age_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_microphone_client_queue_age_p95_ms={}", state .microphone_client_queue_age_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_sink_handoff_skew_ms={}", state .sink_handoff_skew_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_sink_handoff_abs_skew_p95_ms={}", state .sink_handoff_abs_skew_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_camera_sink_late_ms={}", state .camera_sink_late_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_microphone_sink_late_ms={}", state .microphone_sink_late_ms .map(|value| format!("{value:+.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_camera_sink_late_p95_ms={}", state .camera_sink_late_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_microphone_sink_late_p95_ms={}", state .microphone_sink_late_p95_ms .map(|value| format!("{value:.1}")) .unwrap_or_else(|| "pending".to_string()) ); println!( "planner_client_timing_window_samples={}", state.client_timing_window_samples ); println!( "planner_sink_handoff_window_samples={}", state.sink_handoff_window_samples ); println!("planner_detail={}", state.last_reason); }