100 lines
5.7 KiB
Markdown
100 lines
5.7 KiB
Markdown
---
|
|
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/<pid>/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 <pid>`
|
|
- `--display <value>`
|
|
- `--wayland-display <value>`
|
|
- `--xdg-runtime-dir <path>`
|
|
- `--dbus-session-bus <addr>`
|
|
- `--xauthority <path>`
|
|
- 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.
|