Files
IdeA/.ideai/tickets/222/carnet.md

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.