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>
2.7 KiB
2.7 KiB
name, description, metadata
| name | description | metadata | ||
|---|---|---|---|---|
| mcp-t7-backstop-600s-reply-rejected-livestate-stale | memory note mcp-t7-backstop-600s-reply-rejected-livestate-stale |
|
Finding — tests MCP T7 (2026-06-24, QA)
Contexte
Série de tests du rendez-vous idea_ask_agent ⇄ idea_reply et du backstop no-reply (cap ~600s), demandés par Main :
- T7d (debug build x3, avant-plan) : cumul ~3m49s < 600s → reply OK.
- T7b (9 étapes
sleep 82, entrelacées) : le harness BLOQUE toutsleepavant-plan → exécutées en run_in_background ; reply OK (tardif mais < fenêtre côté ticket T7b). - T7e (release build répété, avant-plan, sans sleep ni bg) : 7 cycles, cumul réel 08:01:14 → 08:14:21 = 13 min 07 s, franchit largement 600s.
Défaut observé
À la fin de T7e (et de T7b, terminé au même tour, après >600s d'occupation continue), les DEUX idea_reply (tickets 4613262f… T7b et d2398b22… T7e) sont refusés :
invalid input: no pending request to reply to for agent aefdbd61-…
→ Le backstop a libéré le demandeur (Main) côté rendez-vous après dépassement du cap, ce qui est le comportement voulu. MAIS :
- Le résultat réel (builds OK, horodatages non falsifiés) ne peut plus être délivré : il est perdu pour le demandeur.
idea_workstate_readmontre encore le worker QAstatus=working ticket=d2398b22…après le rejet du reply → le live-state du worker n'est PAS réconcilié quand le backstop ferme le rendez-vous côté demandeur. Incohérence demandeur (libéré) vs worker (toujours working).
Conséquence / piste
- Le cap 600s du rendez-vous reste trop court pour des tâches lourdes légitimes (cf. rendezvous-600s-cap-too-short-heavy-tasks) : ici un travail réel et honnête >13 min est « jeté ».
- À corriger : quand le backstop ferme un rendez-vous, soit (a) accepter encore un reply tardif (le router vers le demandeur même après timeout / le persister), soit (b) réconcilier le live-state du worker (passer son ticket à done/abandon) pour ne pas laisser un
workingfantôme. Voir backstop-fires-on-intra-task-turn-rootcause et rendezvous-no-reply-backstop-design.
Reproductible
Charge avant-plan réelle (cargo build --release --workspace en boucle clean) dépassant 600s, puis tenter idea_reply sur le ticket d'origine → rejet systématique.