3.5 KiB
issueRef, version, updatedBy, updatedAt
| issueRef | version | updatedBy | updatedAt | ||||
|---|---|---|---|---|---|---|---|
| #287 | 3 |
|
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_structureddanscrates/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.rscrates/application/src/agent/structured.rscrates/application/src/orchestrator/service.rscrates/application/tests/orchestrator_service.rscrates/backend/src/lib.rs
Contrat livré:
ask_structuredutilise désormais un drain tap-aware basé surAgentSession::send_with_tap.- Chaque
ReplyEventlive non terminal incrémente un jeton monotone localArc<AtomicU64>. - Le watchdog fusionne ce jeton local avec la sonde transcript fallback dans une sonde composite monotone.
- Le
Finalreste 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 --checkOKcargo test -p application --test orchestrator_serviceOK, 81 passedcargo test -p application orchestrator::rendezvousOK, 5 passedcargo test -p infrastructure --test mcp_serverOK, 40 passedcargo test -p backendOK, 87 passed, 7 ignored
Tests de régression ajoutés:
ask_structured_rearms_inactivity_window_from_send_with_tapask_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 buildOK- 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 appimageOK
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.