Capitalise la mémoire projet produite pendant la campagne de tests fonctionnels MCP (rendez-vous inter-agents, backstop no-reply, réconciliation live-state au reboot) et synchronise l'état runtime `.ideai/` (agents, layouts, skills, index mémoire). Inclut la mise à jour du contexte de l'agent Git. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
4.3 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| rendezvous-600s-cap-too-short-heavy-tasks | memory note rendezvous-600s-cap-too-short-heavy-tasks |
|
T7 — plafond rendez-vous trop court : FIX LIVRÉ (2026-06-24)
Défaut (rappel, observé 2026-06-23)
Délégation dev lourde (impl + cargo test --workspace + clippy) → la cible bosse en un seul long tour > 600 s sans émettre de turn_duration. L'enveloppe serveur timeout(600s, dispatch) plate (crates/infrastructure/src/orchestrator/mcp/server.rs) expirait sec : (a) faux -32001/no-reply retryable alors que la cible n'est pas muette mais active ; (b) drop du dispatch → canal de report mort → idea_reply final non livrable (« no pending request »).
Fix (branche de travail courante, pas encore committé)
Implémenté par subagent Claude (Architect+DevBackend, hors idea_ask_agent car le rendez-vous était le sujet), vérifié par Main (QA réelle), AppImage rebuildée.
- Algorithme
run_inactivity_watchdogdansserver.rs:ASK_RENDEZVOUS_TIMEOUT(600 s, envIDEA_ASK_RENDEZVOUS_TIMEOUT_MS) devient une fenêtre d'inactivité (budget de silence), pas un plafond absolu. Boucletimeout(fenêtre, dispatch); à chaque expiration, sonde l'activité de la cible :- progrès & sous plafond → réarme (extension) ;
- progrès & plafond atteint →
rendezvous_ceiling_active_error(nouveau code JSON-RPCerror_codes::RENDEZVOUS_CEILING_ACTIVE = -32_002,data.code="RENDEZVOUS_CEILING_ACTIVE",retryable:false, message « still actively working… do not retry blindly, check the target's in-progress work/branch ») ; - pas de progrès (vrai silence, ou pas de probe = fallback plat) →
rendezvous_no_reply_errorinchangé (retryable:true).
- Signe de vie = octets cumulés des
.jsonldu run-dir cible (couvre le long tour unique sansturn_duration). Nouvelleinspector::claude_paths::transcript_activity_token(fs, home, cwd) -> Option<u64>. - Plafond absolu
ASK_RENDEZVOUS_CEILING(défaut 4 h, envIDEA_ASK_RENDEZVOUS_CEILING_MS). - Wiring : sonde optionnelle
AskActivityProbeinjectée dansMcpServer(modèleevents/ready_sink, additif → zéro régression), branchée par la composition rootcrates/app-tauri/src/state.rs(qui résout nom→AgentId→run-dir via nouveauservice.resolve_agent_id_by_name). Infra reste libre d'AgentId. - Fichiers :
server.rs,jsonrpc.rs,mcp/mod.rs,lib.rs,inspector/claude_paths.rs+mod.rs,application/.../service.rs,app-tauri/state.rs.
Validation (preuve réelle, Main)
cargo test -p infrastructure --lib = 251 passed/0 (dont 6 nouveaux tests : silence→no-reply, fallback sans probe→no-reply, active→extension puis resolved, active→ceiling, codes/retryable distincts). mcp_server 22/0, inspector_claude 4/0, cargo test -p application tout vert. clippy -p infrastructure -p application --all-targets = 0 warning nouveau (résiduels pré-existants : input/mod.rs, lifecycle.rs, fileguard.rs, server.rs:132 ready_sink). AppImage rebuildée 2026-06-24 09:21, installée sur /home/anthony/Documents/IdeA_0.3.0_amd64.AppImage, backup ….old-pre-t7-fix (08:41).
Reste à faire
- Validation live T7 après relance IdeA : déléguer une tâche lourde >600 s ; attendu = pas d'expiration tant que la cible écrit son transcript, et soit résolution normale, soit (si >4 h) message ceiling-active non-retryable distinct ; idea_reply tardif non perdu tant qu'on n'a pas atteint le plafond.
- Commit par Git (non fait — laissé à Git, cf. git-owns-commit-merge-decisions) : décider de le faire avant ou après la validation live T7.
- Reprise complète des tests depuis T1 (skill mcp-rendezvous-functional-test). État pré-relance : T1→T6 verts cette passe, dont fix T5 validé live (cf. checkpoint-mcp-tests-t1-t5-and-t5-livestate-defect).
Lié à rendezvous-no-reply-backstop-design, backstop-fires-on-intra-task-turn-rootcause, mcp-functional-test-plan-2026-06-24.