chore(tickets): sync store local — #280 docs SDK clarifiées (bump pointeur IdeaSDK 1239104, ticket, consigne main.md doc SDK systématique sur évolution SDK, note memory #279 plugin-soft-refresh-and-agent-install-tools rattrapée) + #281 fix live-state cross-project (ticket fermé, note memory cross-project-ask-drop-cleans-live-state, merge 566e3c3) + #282 ouvert (Paramètres projet plugins/skills/tools agents); exclusion scripts/restart-idea-over-ssh.sh hors périmètre
This commit is contained in:
39
.ideai/tickets/281/carnet.md
Normal file
39
.ideai/tickets/281/carnet.md
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
issueRef: "#281"
|
||||
version: 3
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788868377302
|
||||
---
|
||||
# Diagnostic
|
||||
|
||||
Symptôme utilisateur : demande cross-project depuis UnityPlugin vers Main IdeA échouée/annulée ; côté IdeA, l'agent cible reste visible en travail (`working`, LED jaune) et le chat paraît bloqué jusqu'à cancel manuel.
|
||||
|
||||
Cause racine identifiée dans `crates/application/src/orchestrator/service.rs` : le chemin `ask_structured` posait bien `Working` via `mark_target_working_best_effort`, et `BusyTurnGuard` nettoyait déjà FIFO + busy state quand le futur `ask` était droppé. En revanche, le live-state humain n'était remis à `Done` que dans les branches explicites du `match` watchdog ou en succès. Si le client MCP/cross-project abandonne la requête, aucune branche ne s'exécute : la ligne live-state persiste en `working` jusqu'au restart/TTL.
|
||||
|
||||
# Correctif
|
||||
|
||||
Ajout de `LiveStateTurnGuard` dans `crates/application/src/orchestrator/service.rs` :
|
||||
- armé après publication live-state `Working` ;
|
||||
- désarmé après les sorties explicites qui appellent déjà `mark_target_done_best_effort` ;
|
||||
- sur `Drop`, lance un cleanup async best-effort vers `Done` avec `last_delegation` = ticket, afin de nettoyer la LED même si le futur `ask` est abandonné.
|
||||
|
||||
Ajout du test de régression `dropped_ask_future_marks_live_state_done` dans `crates/application/tests/orchestrator_service.rs`.
|
||||
|
||||
# Validations
|
||||
|
||||
Commandes vertes :
|
||||
- `cargo fmt`
|
||||
- `cargo test -p application dropped_ask_future_marks_live_state_done --test orchestrator_service`
|
||||
- `cargo test -p application --test orchestrator_service` : 78/78
|
||||
- `npm --prefix frontend run build`
|
||||
- Build AppImage via skill `build-appimage` : `CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage`
|
||||
|
||||
Artefact produit : `target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (114M, 2026-09-08 13:52).
|
||||
|
||||
# Réserve
|
||||
|
||||
`cargo test -p application` échoue sur `launch_conventionfile_injects_assigned_skills_in_order` dans `agent_lifecycle.rs`, échec hors périmètre du correctif : assertion existante sur l'ordre persona/skills dans le fichier de convention. Le test ciblé orchestration cross-project/workstate et la suite `orchestrator_service` sont verts.
|
||||
|
||||
# Étape manuelle
|
||||
|
||||
Comme rappelé par le skill AppImage : pour rendre le correctif actif, remplacer l'AppImage installée puis relancer IdeA. Cette étape tue l'orchestrateur courant, donc elle reste manuelle.
|
||||
17
.ideai/tickets/281/issue.md
Normal file
17
.ideai/tickets/281/issue.md
Normal file
@ -0,0 +1,17 @@
|
||||
---
|
||||
id: "23e11f1c-387e-4201-a651-c91b70df6f7f"
|
||||
number: 281
|
||||
title: "Fix blocage cross-project ask et workstate après timeout"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: []
|
||||
agentRefs: []
|
||||
attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788867892521
|
||||
updatedAt: 1788868377302
|
||||
version: 3
|
||||
---
|
||||
Reproduction rapportée : Main du projet UnityPlugin a tenté une demande cross-project vers Main IdeA ; l'appel a échoué, l'agent IdeA est resté avec LED jaune / chat bloqué jusqu'à cancel manuel, et le workstate a déclaré un timeout de la demande. Objectif : identifier la cause, corriger le nettoyage d'état/rendez-vous cross-project, valider par tests réels, puis rebuild l'AppImage.
|
||||
Reference in New Issue
Block a user