5.4 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #289 | 5 |
|
1788901112288 |
2026-09-08 — Main
Demande utilisateur : garantir que si une cible appelée via ask_agent se restart, le demandeur attend la fin du restart et reçoit le travail post-restart rattaché au même agent, aussi bien intra-projet qu'en cross-project.
Cadrage Architect :
- Identité stable par
RuntimeAgentKey(projectId, agentId). - Le
conversation_idlogique et le verrou de tour doivent survivre au restart. - Un restart accepté est une activité de contrôle du rendez-vous : ne pas classifier la fermeture de l'ancienne session comme no-reply/timeout d'inactivité.
- Cross-project : conserver la corrélation demandeur
(requesterProjectId, requesterAgentId, correlationId)jusqu'au résultat post-restart. - Cancel pendant restart doit cascader et nettoyer rendez-vous/workstate/registre cross-project.
- Échec de restart => erreur explicite, pas silence.
Branche Git retenue : fix/289-ask-agent-during-target-restart depuis develop @ db91b00.
Prochaines étapes : DevBackend implémente le contrat backend et tests ; QA valide same-project, cross-project, watchdog, failure/cancel.
2026-09-08 — DevBackend
Correctif backend implémenté sur fix/289-ask-agent-during-target-restart.
Fichiers modifiés :
crates/application/src/orchestrator/service.rscrates/application/src/orchestrator/mod.rscrates/application/src/lib.rscrates/application/tests/orchestrator_service.rscrates/backend/src/lib.rs
Comportement livré :
- coordination stable par
RuntimeAgentKey (projectId, agentId)entre le rendez-vous applicatif et le scheduler de self-restart ; - conservation du verrou de tour, du ticket logique et du
conversation_idpendant le remplacement de la session concrète ; - abandon du drain de l'ancienne session sans no-reply, puis capture du
Finaldu tour de continuation sur la session relancée ; - activité de contrôle restart intégrée au watchdog d'inactivité ;
- corrélation cross-project conservée jusqu'au résultat post-restart ;
- échec de restart remonté explicitement ; cancel pendant la fenêtre sans runtime réveille l'ask, nettoie la corrélation et empêche la relance de continuation ;
- le scheduler standalone conserve son comportement historique lorsque aucun ask n'est actif.
Tests exécutés :
cargo test -p application --test orchestrator_service— 85 passés ;cargo test -p application --lib— 171 passés ;cargo test -p backend --lib— 89 passés, 7 ignorés (tests socket nécessitant une permission locale) ;cargo check -p backend— OK ;cargo fmt --all -- --check— OK.
Tests de régression ajoutés : same-project Final post-restart, cross-project + nettoyage corrélation, faux no-reply interdit, failure explicite, cancel pendant le gap de restart, watchdog réarmé par activité de contrôle.
Limites : pas de test E2E avec un vrai processus fournisseur/AppImage dans ce lot ; la validation est faite avec les ports/sessions structurés et le scheduler backend compilé. Aucun fichier frontend modifié. Aucun commit effectué par DevBackend.
2026-09-08 — QA
Verdict : VERT pour le ticket #289 sur fix/289-ask-agent-during-target-restart.
Tests QA ajoutés dans crates/application/tests/orchestrator_service.rs :
ask_target_restart_cleans_busy_workstate_and_replaces_structured_registry_entry: succès same-project post-restart, cible revenueIdle, FIFO vide, live-stateDone, ancienne session structurée absente, session de remplacement enregistrée sur le même agent logique.same_project_stop_during_restart_releases_ask_and_leaves_no_replacement_session: cancel/stop same-project pendant le gap de restart, ask réveillé en erreur explicite de cancel, busy/FIFO/live-state nettoyés, aucune session de remplacement enregistrée.
Commandes finales vertes :
cargo fmt --all -- --checkcargo test -p application --test orchestrator_service— 87 passéscargo test -p application --lib— 171 passéscargo test -p backend --lib— 89 passés, 7 ignoréscargo check -p backend— OK
Couverture validée : same-project, cross-project, faux no-reply interdit, failure restart explicite, cancel pendant restart, nettoyage busy/workstate/registry, watchdog réarmé par activité restart.
Risques résiduels : pas d'E2E vrai provider relancé dans QA ; les 7 tests backend ignorés demandent une permission locale de bind socket.
2026-09-08 — Git/Main clôture
Git a committé le correctif sur la branche feature : d6d9891.
Git a mergé localement dans develop avec merge commit : 321ebda.
Aucun push distant effectué. État final après build : develop...origin/develop [ahead 276], working tree propre sauf scripts/ non suivi préexistant et hors périmètre.
Build AppImage exécuté via le skill build-appimage :
npm --prefix frontend run build— OK.- depuis
crates/app-tauri:CARGO_HOME=/tmp/idea-cargo-home APPIMAGE_EXTRACT_AND_RUN=1 NO_STRIP=1 ../../frontend/node_modules/.bin/tauri build --bundles appimage— OK.
Artefact produit : target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage.
Étape non automatisée volontairement : remplacement de /home/anthony/Documents/IdeA_0.1.0_amd64.AppImage et relance d'IdeA, car cela tue l'orchestrateur actif. À faire manuellement quand l'utilisateur est prêt pour activer le correctif dans l'application lancée.