51 lines
2.7 KiB
Markdown
51 lines
2.7 KiB
Markdown
---
|
|
name: ticket287-cross-project-rendezvous-live-activity-fix
|
|
description: memory note ticket287-cross-project-rendezvous-live-activity-fix
|
|
metadata:
|
|
type: project
|
|
---
|
|
---
|
|
name: ticket287-cross-project-rendezvous-live-activity-fix
|
|
description: Fix livré du timeout cross-project headlessRendezvous à 600s vers des cibles Codex — le watchdog structured est réarmé par les événements live send_with_tap, avec transcript Claude en fallback.
|
|
metadata:
|
|
type: project
|
|
---
|
|
# Ticket #287 — Cross-project headlessRendezvous réarmé par activité live
|
|
|
|
## Symptôme
|
|
Un appel cross-project `UnitySoundTool -> UnityPlugin/Main` a expiré après 10 minutes avec le workstate cible `Failed / headlessRendezvous / 4c3d6b38` et le message `Timeout: rendezvous inactivity window expired for target Main`.
|
|
|
|
## Cause
|
|
Le chemin concerné est le rendez-vous structured/headless (`ask_project_agent_for_mcp -> ask_resolved_agent -> ask_structured`), pas l'ancien rendez-vous MCP `idea_reply`.
|
|
|
|
Le watchdog réarmable existait déjà, mais la sonde production externe observait surtout les transcripts Claude. UnityPlugin/Main étant un agent Codex, un tour structured actif pouvait ne produire aucun progrès visible pour cette sonde et expirer à la première fenêtre de 600s.
|
|
|
|
## Contrat livré
|
|
Depuis le fix #287, `ask_structured` alimente un jeton monotone local via `AgentSession::send_with_tap`. Chaque `ReplyEvent` live non terminal réarme l'activité du rendez-vous, indépendamment du provider. La sonde transcript reste un fallback externe, notamment pour les adapters qui ne produisent pas d'événements intermédiaires.
|
|
|
|
Le `Final` reste la seule réponse normale. Absence réelle de tout signe de vie pendant une fenêtre complète => timeout d'inactivité. Activité continue jusqu'au plafond absolu => ceiling active.
|
|
|
|
## Fichiers et commits
|
|
Fichiers touché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`
|
|
|
|
Commit fix: `7716910`.
|
|
Merge local develop: `5d62515`.
|
|
|
|
## Validation
|
|
QA verte:
|
|
- `cargo fmt --check`
|
|
- `cargo test -p application --test orchestrator_service` => 81 passed
|
|
- `cargo test -p application orchestrator::rendezvous` => 5 passed
|
|
- `cargo test -p infrastructure --test mcp_server` => 40 passed
|
|
- `cargo test -p backend` => 87 passed, 7 ignored
|
|
|
|
AppImage rebuildée le 2026-09-08:
|
|
`/home/anthony/Documents/Projects/IdeA/target/release/bundle/appimage/IdeA_0.3.0_amd64.AppImage` (114M).
|
|
|
|
## Activation
|
|
Le binaire actif reste l'AppImage installée. Pour activer le fix en live, remplacer l'AppImage installée puis relancer IdeA. Cette relance tue l'orchestrateur courant, donc elle reste manuelle. |