Both hyprctl-path guards in window_state (hyprctl_main_window() JSON parse, save_main_window_state() full flow) now explain why the failure is absorbed instead of raised. No behavior change.