chore(idea): bookkeeping tickets #219-#223 et index #224
This commit is contained in:
99
.ideai/tickets/222/carnet.md
Normal file
99
.ideai/tickets/222/carnet.md
Normal file
@ -0,0 +1,99 @@
|
||||
---
|
||||
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.
|
||||
Reference in New Issue
Block a user