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

2.5 KiB

issueRef, version, updatedBy, updatedAt
issueRef version updatedBy updatedAt
#281 3
kind agent_id
agent a6c6ea12-bfc6-4bdc-8031-324102dfa34d
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.