chore(tickets): sync store local — #287 clos (fix rendezvous cross-project, merge 5d62515) + création #288 (tool MCP idea_restart_self, redémarrage autonome agent; branchage feature/288-agent-self-restart-mcp; exclusion scripts/restart-idea-over-ssh.sh hors périmètre)
This commit is contained in:
@ -1,6 +1,69 @@
|
||||
---
|
||||
issueRef: "#287"
|
||||
version: 1
|
||||
version: 3
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedAt: 1788891077144
|
||||
updatedAt: 1788892419182
|
||||
---
|
||||
# Ticket #287 — Cross-project rendezvous timeout malgré activité cible
|
||||
|
||||
## Symptôme utilisateur
|
||||
UnitySoundTool a demandé des features à UnityPlugin/Main. L'appel cross-project a expiré après 10 minutes. Workstate cible: `Failed`, `headlessRendezvous`, corrélation `4c3d6b38`, message `Timeout: rendezvous inactivity window expired for target Main`.
|
||||
|
||||
## Cadrage Architect
|
||||
Le chemin concerné n'est pas l'ancien rendez-vous MCP `idea_reply`, mais le chemin structured/headless:
|
||||
- `ask_project_agent_for_mcp` -> `ask_resolved_agent` -> `ask_structured` dans `crates/application/src/orchestrator/service.rs`.
|
||||
- Le watchdog réarmable existe déjà dans `crates/application/src/orchestrator/rendezvous.rs`.
|
||||
- Cause probable confirmée: la sonde production était principalement transcript Claude-only, alors que UnityPlugin/Main utilise Codex. Le watchdog ne voyait donc pas l'activité du tour Codex et expirait à 600s.
|
||||
|
||||
## Implémentation DevBackend
|
||||
Branche: `fix/287-cross-project-rendezvous-timeout`.
|
||||
Commit fix: `7716910`.
|
||||
Merge local develop: `5d62515`.
|
||||
|
||||
Fichiers modifiés:
|
||||
- `crates/application/src/agent/mod.rs`
|
||||
- `crates/application/src/agent/structured.rs`
|
||||
- `crates/application/src/orchestrator/service.rs`
|
||||
- `crates/application/tests/orchestrator_service.rs`
|
||||
- `crates/backend/src/lib.rs`
|
||||
|
||||
Contrat livré:
|
||||
- `ask_structured` utilise désormais un drain tap-aware basé sur `AgentSession::send_with_tap`.
|
||||
- Chaque `ReplyEvent` live non terminal incrémente un jeton monotone local `Arc<AtomicU64>`.
|
||||
- Le watchdog fusionne ce jeton local avec la sonde transcript fallback dans une sonde composite monotone.
|
||||
- Le `Final` reste la seule réponse normale.
|
||||
- Le transcript Claude devient un fallback, plus la source unique de vivacité.
|
||||
- Les appels cross-project vers une cible Codex peuvent désormais réarmer la fenêtre d'inactivité tant que l'adapter émet de l'activité live.
|
||||
|
||||
## QA
|
||||
Verdict QA: VERT.
|
||||
Commandes réelles:
|
||||
- `cargo fmt --check` OK
|
||||
- `cargo test -p application --test orchestrator_service` OK, 81 passed
|
||||
- `cargo test -p application orchestrator::rendezvous` OK, 5 passed
|
||||
- `cargo test -p infrastructure --test mcp_server` OK, 40 passed
|
||||
- `cargo test -p backend` OK, 87 passed, 7 ignored
|
||||
|
||||
Tests de régression ajoutés:
|
||||
- `ask_structured_rearms_inactivity_window_from_send_with_tap`
|
||||
- `ask_structured_without_tap_probe_progress_or_final_times_out`
|
||||
|
||||
## Git
|
||||
Git a committé et mergé localement:
|
||||
- Fix: `7716910 fix(orchestrator,agent): rendezvous cross-project réarmé par jeton d'activité live model-agnostique — #287`
|
||||
- Merge develop: `5d62515 merge(orchestrator,agent): rendezvous cross-project réarmé par jeton d'activité live — #287`
|
||||
|
||||
Aucune action distante. `develop` est en avance sur `origin/develop`; état post-build propre sauf `scripts/restart-idea-over-ssh.sh` non suivi, hors périmètre.
|
||||
|
||||
## AppImage
|
||||
Workflow `build-appimage` exécuté depuis `develop`:
|
||||
- `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:
|
||||
- `/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage`
|
||||
- taille: 114M
|
||||
- généré le 2026-09-08 à 20:33
|
||||
|
||||
## Reste manuel
|
||||
Pour rendre le correctif actif dans l'application courante, remplacer l'AppImage installée puis relancer IdeA. Ne pas automatiser ici car relancer IdeA tue l'orchestrateur/session active.
|
||||
@ -2,7 +2,7 @@
|
||||
id: "d9b44519-1f89-48c6-a909-3c5b9cb2a49f"
|
||||
number: 287
|
||||
title: "Cross-project rendezvous timeout malgré activité cible"
|
||||
status: "inProgress"
|
||||
status: "closed"
|
||||
priority: "critical"
|
||||
sprint: null
|
||||
links: []
|
||||
@ -11,7 +11,7 @@ attachments: []
|
||||
createdBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
updatedBy: {"kind":"agent","agent_id":"a6c6ea12-bfc6-4bdc-8031-324102dfa34d"}
|
||||
createdAt: 1788891077144
|
||||
updatedAt: 1788891077144
|
||||
version: 1
|
||||
updatedAt: 1788892419182
|
||||
version: 3
|
||||
---
|
||||
UnitySoundTool rapporte qu'un appel cross-project vers Main de UnityPlugin a expiré après 10 minutes: workstate Main UnityPlugin = Failed / headlessRendezvous / 4c3d6b38 / Timeout: rendezvous inactivity window expired for target Main. Demande utilisateur: corriger ces timeouts cross-project puis rebuild l'AppImage.
|
||||
Reference in New Issue
Block a user