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>
This commit is contained in:
49
.ideai/memory/conversation-rotation-safety-design.md
Normal file
49
.ideai/memory/conversation-rotation-safety-design.md
Normal file
@ -0,0 +1,49 @@
|
||||
---
|
||||
name: conversation-rotation-safety-design
|
||||
description: memory note conversation-rotation-safety-design
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
---
|
||||
name: conversation-rotation-safety-design
|
||||
description: Cadrage initial pour la compression/rotation automatique non interruptive des conversations d'agents.
|
||||
metadata:
|
||||
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.
|
||||
Reference in New Issue
Block a user