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:
2026-09-08 21:18:56 +02:00
parent 5d62515d4e
commit ee259dc93a
9 changed files with 196 additions and 8 deletions

View File

@ -90,3 +90,5 @@
- [project-plugin-skills-multi-harness-contract](project-plugin-skills-multi-harness-contract.md) — memory note project-plugin-skills-multi-harness-contract
- [ticket284-cross-project-contact-plugin-assignment](ticket284-cross-project-contact-plugin-assignment.md) — memory note ticket284-cross-project-contact-plugin-assignment
- [ticket285-sdk-plugin-root-runtime-api](ticket285-sdk-plugin-root-runtime-api.md) — memory note ticket285-sdk-plugin-root-runtime-api
- [ticket287-cross-project-rendezvous-live-activity-fix](ticket287-cross-project-rendezvous-live-activity-fix.md) — memory note ticket287-cross-project-rendezvous-live-activity-fix
- [ticket288-agent-self-restart-architecture](ticket288-agent-self-restart-architecture.md) — memory note ticket288-agent-self-restart-architecture

View File

@ -0,0 +1,51 @@
---
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.

View File

@ -0,0 +1,15 @@
---
name: ticket288-agent-self-restart-architecture
description: memory note ticket288-agent-self-restart-architecture
metadata:
type: project
---
# Ticket #288 — Agent Self-Restart MCP Architecture
Le tool core `idea_restart_self` doit être self-only et requester-scopé via le handshake MCP. Il ne prend pas de target fourni par le modèle. Il retourne seulement un accusé `scheduled`, car le process appelant est ensuite arrêté.
Le restart est un use case applicatif atomique au-dessus des briques existantes: snapshot de reprise, stop runtime, relance via `LaunchAgent` avec `fresh_start=false` et le même `conversation_id`. `LaunchAgent` reste l’unique endroit qui régénère contexte, mémoire, live-state, handoff, capabilities et skills/tools MCP de plugins.
Les événements normatifs sont `AgentRestartRequested`, `AgentRestartPhaseChanged`, `AgentRestartCompleted`, `AgentRestartFailed`. Les séparateurs exacts du CLI custom et l’overlay TUI native sont des projections UI, jamais du contenu conversationnel ni du prompt interne de reprise.
Invariant critique: le restart doit libérer l’état Busy/mailbox même si la connexion MCP disparaît quand l’agent est tué.