Files
IdeA/.ideai/memory/cross-project-ask-drop-cleans-live-state.md

1.8 KiB

name, description, metadata
name description metadata
cross-project-ask-drop-cleans-live-state memory note cross-project-ask-drop-cleans-live-state
type
project

Cross-project ask drop cleans live-state

Date: 2026-09-08 Type: reference

Cause racine

Un idea_project_ask_agent abandonné/annulé côté appelant peut dropper le futur ask_structured côté cible avant qu'une branche explicite du watchdog ne s'exécute. BusyTurnGuard nettoyait déjà FIFO + busy state, mais la ligne live-state humaine passait à Working via mark_target_working_best_effort et ne revenait à Done que dans les branches explicites succès/erreur/timeout. Résultat : LED jaune / agent working persistant jusqu'au restart ou TTL, même si le tour a été abandonné.

Fix

crates/application/src/orchestrator/service.rs ajoute LiveStateTurnGuard :

  • armé après la 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.

Test de régression : dropped_ask_future_marks_live_state_done dans crates/application/tests/orchestrator_service.rs.

Validation

Verts le 2026-09-08 :

  • 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
  • AppImage rebuild via CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage

Artefact : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage.

Réserve

cargo test -p application échouait encore sur launch_conventionfile_injects_assigned_skills_in_order, hors périmètre du correctif cross-project/workstate.