Files
IdeA/.ideai/memory/conversation-rotation-safety-design.md
Blomios 5ef001e7a3 chore(wip): état runtime .ideai (conversations, layouts, mémoire, checkpoints)
Persiste l'état runtime : manifestes agents, layouts, permissions, logs et
handoffs de conversations, index mémoire et checkpoints du chantier
orchestrator-designation (restart, backend-compile-fix, qa-verdict) ainsi que
la note conversation-rotation-safety-design.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-20 08:56:40 +02:00

2.7 KiB

name, description, metadata
name description metadata
conversation-rotation-safety-design memory note conversation-rotation-safety-design
type
project

Conversation Rotation Safety Design

Objectif : reduire le cout token des conversations longues sans degrader la stabilite des agents ni les contacts inter-agents.

Socle existant a reutiliser :

  • log canonique .ideai/conversations/<conversationId>/log.jsonl ;
  • handoff.md incremental ;
  • injection du handoff au lancement/relaunch ;
  • LeafCell.conversation_id = id logique IdeA de paire, distinct du resumable provider ;
  • providers.json pour (pair_conversation_id, provider_key) -> engine_session_id ;
  • InputMediator.busy_state(agent) et FIFO par agent ;
  • ask_agent avec lock de tour par agent + wait-for graph anti-deadlock ;
  • attach/detach cellule deja modelise : la cellule est une vue, TerminalSessions::rebind_agent_node existe ;
  • frontend write-portal sait deja compter la saisie humaine et declarer set_front_attached.

Regle produit centrale : rotation automatique opportuniste, jamais interruptive. IdeA ne compacte/rote une session qu'a un point sur.

Conditions minimales avant rotation :

  • agent Idle (InputMediator.busy_state == Idle) ;
  • aucune delegation/ticket/reply en cours ;
  • aucun contact entrant en cours, sinon queue ou ancienne session jusqu'a bascule ;
  • checkpoint durable OK : prompt/response appendes au log + handoff.md a jour ;
  • cellule stable : pas d'attach/detach ou changement de layout en cours ;
  • utilisateur non en train d'ecrire : focus/buffer non vide/frappe recente/IME composition/prompt interactif detectable ;
  • nouvelle session demarree detached/background et prete avant bascule ;
  • bascule atomique routing logique + attachement cellule ; ancienne session retiree ensuite.

Etat cible conceptuel : RotationRequested -> WaitForAgentIdle -> WaitForNoDelegation -> WaitForNoIncomingRoute -> WaitForCellStable -> WaitForUserInputClear -> Checkpointing -> StartReplacementDetached -> AttachReplacementToCell -> SwitchRouting -> RetireOldSession.

Premier lot recommande : fondation non destructive.

  • Ajouter modeles/policy de ConversationRotation et raisons de blocage.
  • Ajouter query/use case d'evaluation qui retourne Ready ou Blocked(reasons) sans tuer ni relancer.
  • Exposer les signaux manquants de cellule/saisie depuis le frontend vers backend, d'abord comme etat consultable.
  • Publier des events de statut de rotation uniquement informatifs.
  • Ne pas implementer la bascule physique avant que les tests de surete soient verts.