--- issueRef: "#222" version: 4 updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"} updatedAt: 1786974344024 --- ## Triage 2026-08-17 - Symptôme rapporté: le script de redémarrage d'IdeA lancé en SSH affiche un succès, mais IdeA ne redémarre pas visiblement. - Reproduction locale statique: - commande: `bash scripts/restart-idea-over-ssh.sh --dry-run /home/anthony/Documents/Projects/IdeA/IdeA_0.3.0_amd64.AppImage` - sortie clé: `Detected running IdeA pid: 1` et `Detected graphical session pid: 1` - Diagnostic initial Main: - la détection `find_running_idea_pid()` repose sur `pgrep -f 'IdeA|AppImage'`, ce qui peut matcher le shell/script appelant car sa ligne de commande contient le chemin de l'AppImage; - le dry-run montre effectivement une fausse détection sur `pid 1`, incompatible avec un vrai process IdeA utilisateur; - conséquence probable: le script conclut sur un faux positif de détection au lieu de vérifier l'instance réelle. - Flux demandé: - Architect: cadrer le correctif minimal et les garde-fous de détection; - Git: décider la branche locale; - DevBackend: corriger le script shell; - QA: prouver la correction par commandes réelles. ## Architect - Cause racine retenue: détection trop floue et premier match accepté, via heuristiques `pgrep -f 'IdeA|AppImage'` capables de matcher le script lui-même, un parent, ou un process générique. - Cadrage de fix: valider strictement le PID IdeA contre le chemin AppImage cible, séparer la détection de session graphique, interdire `pid 1`, `$$` et les ancêtres, et échouer explicitement en cas d'ambiguïté. ## Git - Topologie recommandée: branche `fix/ticket-222-restart-idea-over-ssh` depuis `develop`. - Réserve Git: le worktree courant est sale et la branche active `qa/functional-coverage-suite` n'est pas une bonne base pour ce correctif. ## DevBackend - Correctif livré dans `scripts/restart-idea-over-ssh.sh` uniquement. - Changements clés: - exclusion de `pid 1`, `$$` et des ancêtres du script; - validation stricte d'un process IdeA par `/proc//exe` et `cmdline` liés à l'AppImage cible; - détection de session graphique limitée à des process de session connus avec variables d'environnement graphiques et DBus cohérentes; - échec explicite en cas de pluralité de candidats ou d'absence de session graphique exploitable. - Vérifications DevBackend: - `bash -n /home/anthony/Documents/Projects/IdeA/scripts/restart-idea-over-ssh.sh` - `bash /home/anthony/Documents/Projects/IdeA/scripts/restart-idea-over-ssh.sh --dry-run /home/anthony/Documents/Projects/IdeA/IdeA_0.3.0_amd64.AppImage` - Résultat utile post-fix: - `Detected running IdeA pid: 16` - `error: no unambiguous graphical session found for user anthony` ## QA - Verdict: `PARTIEL`. - Prouvé: - le script est syntaxiquement valide; - le `--dry-run` ne retourne plus `pid 1`; - le script n'annonce plus un faux succès quand la session graphique n'est pas détectable, il échoue proprement. - Non prouvé dans cet environnement: - un redémarrage réel de bout en bout avec changement de PID sur une vraie session graphique utilisateur. - Décision Main: ticket passé en statut `QA`, pas clôturé, en attente d'une validation live sur machine/session graphique réelle. ## Reprise 2026-08-17 - Demande utilisateur complémentaire: le but du script est précisément de pouvoir redémarrer IdeA à distance via SSH quand l'utilisateur n'est pas chez lui. - Nouveau périmètre borné: - conserver l'auto-détection quand elle marche; - ajouter un mode explicite pour fournir/cibler la session graphique depuis SSH (variables d'environnement et/ou PID de session); - documenter la ligne de commande attendue. - Cycle relancé: Architect -> Git -> DevBackend -> QA. ## Architect lot 2 - Contrat retenu pour SSH: - `--session-pid ` - `--display ` - `--wayland-display ` - `--xdg-runtime-dir ` - `--dbus-session-bus ` - `--xauthority ` - Priorité de résolution retenue: flags explicites, puis environnement shell, puis auto-détection. ## Git lot 2 - Topologie recommandée: continuer `fix/ticket-222-restart-idea-over-ssh` si la branche existe encore, sinon repartir de `develop`. - Réserve inchangée: le worktree courant est sale. ## DevBackend lot 2 - `scripts/restart-idea-over-ssh.sh` supporte maintenant le ciblage explicite de session graphique pour usage SSH. - Garde-fous clés: - validation de la cohérence `XDG_RUNTIME_DIR` / `DBUS_SESSION_BUS_ADDRESS`; - validation des chemins absolus; - validation croisée avec `--session-pid`; - auto-détection reléguée au dernier recours; - pas de succès si aucun nouveau PID IdeA n'est vu après relance. - Vérifications utiles: - sans env/flags: échec explicite; - avec env shell Wayland/DBus: `Session source: shell environment`; - avec flags explicites: - commande: `bash /home/anthony/Documents/Projects/IdeA/scripts/restart-idea-over-ssh.sh --dry-run --xdg-runtime-dir /run/user/1000 --dbus-session-bus unix:path=/run/user/1000/bus --wayland-display wayland-0 /home/anthony/Documents/Projects/IdeA/IdeA_0.3.0_amd64.AppImage` - résultat: `Session source: explicit flags` ## QA lot 2 - Verdict: `PARTIEL`. - Prouvé: - le mode `flags explicites` existe bien et fonctionne en `--dry-run`; - le mode `environnement shell` fonctionne en `--dry-run`; - sans cible exploitable, le script échoue proprement au lieu d'annoncer un faux succès. - Non prouvé: - relance réelle de bout en bout depuis SSH sur une session graphique distante visible côté utilisateur. - Décision Main: ticket repassé en `QA`; prêt pour validation live utilisateur avec la commande SSH finale.