has_pending stays #[cfg(test)] because production GUI reads via the new get_pending_status (one round-trip carries both presence and flag); production PAM module reads the file directly. Method gated with #[allow(dead_code)] until Task 5 wires D-Bus. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>