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:
@ -7,3 +7,7 @@
|
||||
- [permissions-sandbox-system-state](permissions-sandbox-system-state.md) — Systeme de permissions/sandbox complet (Landlock sur PTY + structure) et le risque residuel $HOME/resume du chemin structure.
|
||||
- [session-limit-handling-design](session-limit-handling-design.md) — Design valide (detecteur hierarchique + reprise auto annulable) pour les limites de session des agents.
|
||||
- [git-owns-commit-merge-decisions](git-owns-commit-merge-decisions.md) — Ne jamais demander a l'utilisateur s'il faut committer/merger/brancher : l'agent Git tranche toute la topologie du depot.
|
||||
- [conversation-rotation-safety-design](conversation-rotation-safety-design.md) — memory note conversation-rotation-safety-design
|
||||
- [checkpoint-orchestrator-designation-restart](checkpoint-orchestrator-designation-restart.md) — memory note checkpoint-orchestrator-designation-restart
|
||||
- [checkpoint-orchestrator-designation-backend-compile-fix](checkpoint-orchestrator-designation-backend-compile-fix.md) — memory note checkpoint-orchestrator-designation-backend-compile-fix
|
||||
- [checkpoint-orchestrator-designation-qa-verdict](checkpoint-orchestrator-designation-qa-verdict.md) — memory note checkpoint-orchestrator-designation-qa-verdict
|
||||
|
||||
@ -0,0 +1,54 @@
|
||||
---
|
||||
name: checkpoint-orchestrator-designation-backend-compile-fix
|
||||
description: memory note checkpoint-orchestrator-designation-backend-compile-fix
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Checkpoint — orchestrator-designation backend compile fix
|
||||
|
||||
Date: 2026-06-20
|
||||
|
||||
## Branche
|
||||
|
||||
`feature/orchestrator-designation`.
|
||||
|
||||
## Décision Git
|
||||
|
||||
Finir le chantier courant sur cette branche. Pas de stash, pas de switch. Après tests verts ou résidu qualifié: retour Git pour commits atomiques puis merge local vers `develop`.
|
||||
|
||||
## Incident live
|
||||
|
||||
La délégation vers Architect a été affichée dans son chat mais non soumise. Architect a été stoppé. Symptôme cohérent avec l'AppImage live qui n'intègre pas encore les correctifs WIP write-portal/headless delivery.
|
||||
|
||||
## Vérifications Main avant correction DevBackend
|
||||
|
||||
Verts:
|
||||
- `cargo test -p infrastructure input --lib`: 35 passed.
|
||||
- `cargo test -p application --test orchestrator_service`: 45 passed.
|
||||
- `cd frontend && npx vitest run`: 41 files, 384 tests passed.
|
||||
- `cd frontend && npx tsc --noEmit`: OK.
|
||||
|
||||
Rouge initial:
|
||||
- `cargo test --workspace` ne compilait pas `crates/application/src/orchestrator/context_guard.rs`:
|
||||
- `may_write_directly` appelé avec 2 args au lieu de 3 (`OrchestratorDesignation` manquant).
|
||||
- mauvais champ `orchestrator` mis sur `ManifestEntry` au lieu de `AgentManifest`.
|
||||
- init `AgentManifest` sans `orchestrator`.
|
||||
|
||||
## Correction DevBackend
|
||||
|
||||
DevBackend a modifié `crates/application/src/orchestrator/context_guard.rs`:
|
||||
- `ProposeContext` charge `AgentManifest`, récupère `manifest.orchestrator_designation()`, puis appelle `may_write_directly(requester, &GuardedResource::ProjectContext, &designation)`.
|
||||
- Le `FileGuard` reste un verrou, pas le propriétaire de l'autorisation.
|
||||
- Tests locaux adaptés à `AgentManifest { version, entries, orchestrator }`.
|
||||
|
||||
Validations DevBackend:
|
||||
- `cargo fmt --all && cargo test -p application --test orchestrator_service`: OK, 45 passed.
|
||||
- `cargo test -p application`: OK.
|
||||
- `cargo test --workspace`: compile maintenant plus loin mais échoue dans `app-tauri` sur tests loopback Unix socket sous sandbox (`PermissionDenied`/`Operation not permitted` lors du bind `/run/user/1000/idea-mcp/*.sock`).
|
||||
|
||||
## Prochaine étape
|
||||
|
||||
QA doit qualifier le résidu app-tauri:
|
||||
- confirmer que les suites métier/orchestration sont vertes,
|
||||
- confirmer si les échecs app-tauri sont environnement/sandbox et non régression,
|
||||
- proposer la commande de validation acceptable ou le besoin de correction test/env.
|
||||
@ -0,0 +1,42 @@
|
||||
---
|
||||
name: checkpoint-orchestrator-designation-qa-verdict
|
||||
description: memory note checkpoint-orchestrator-designation-qa-verdict
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Checkpoint — QA verdict orchestrator-designation
|
||||
|
||||
Date: 2026-06-20
|
||||
|
||||
## Branche
|
||||
|
||||
`feature/orchestrator-designation`.
|
||||
|
||||
## Verdict QA
|
||||
|
||||
Chantier validable sous contrainte d'environnement. Pas de régression fonctionnelle liée à `context_guard.rs`.
|
||||
|
||||
## Commandes vertes qui font foi
|
||||
|
||||
- `cargo fmt --all -- --check`: OK.
|
||||
- `cargo test -p application --test orchestrator_service`: OK, 45 passed.
|
||||
- `cargo test -p application`: OK, suite application complète verte, incluant les tests context guard orchestrateur/proposition.
|
||||
- `cargo test -p infrastructure input --lib`: OK, 35 passed.
|
||||
- `cd frontend && npx vitest run`: OK, 41 files / 384 tests passed.
|
||||
- `cd frontend && npx tsc --noEmit`: OK.
|
||||
|
||||
## Résidu app-tauri
|
||||
|
||||
- `cargo test -p app-tauri --lib`: rouge, 39 passed / 8 failed.
|
||||
- `cargo test --workspace`: rouge sur le même bloc app-tauri.
|
||||
|
||||
Échecs exacts: tests loopback Unix socket:
|
||||
- `mcp_bridge::tests::end_to_end_over_real_loopback`
|
||||
- `state::bind_endpoint_d1_tests::rebind_after_corpse_socket_succeeds`
|
||||
- `state::mcp_e2e_loopback_tests::*`
|
||||
|
||||
Cause qualifiée par QA: contrainte environnement/sandbox. Une sonde Node minimale échoue aussi à `listen()` sur Unix socket avec `EPERM` sous `/run/user/1000` et sous `/tmp`. Donc les tests qui exigent un vrai socket Unix ne sont pas exécutables dans ce sandbox.
|
||||
|
||||
## Prochaine étape
|
||||
|
||||
Retour à Git pour commits atomiques sur `feature/orchestrator-designation`, puis décision de merge local vers `develop` selon sa stratégie. Aucun push.
|
||||
38
.ideai/memory/checkpoint-orchestrator-designation-restart.md
Normal file
38
.ideai/memory/checkpoint-orchestrator-designation-restart.md
Normal file
@ -0,0 +1,38 @@
|
||||
---
|
||||
name: checkpoint-orchestrator-designation-restart
|
||||
description: memory note checkpoint-orchestrator-designation-restart
|
||||
metadata:
|
||||
type: project
|
||||
---
|
||||
# Checkpoint — reprise chantier orchestrator-designation
|
||||
|
||||
Date: 2026-06-20
|
||||
|
||||
## Situation
|
||||
|
||||
L'utilisateur a demandé de terminer les chantiers ouverts. Main a repris le cycle proprement.
|
||||
|
||||
## Décision Git obtenue
|
||||
|
||||
Git a inspecté l'état local et décidé:
|
||||
|
||||
- Branche courante: `feature/orchestrator-designation`.
|
||||
- Worktree dirty important mais analysé comme mono-thème: chantier orchestrateur/designation + diagnostic inter-agents.
|
||||
- Ne pas stash, ne pas switch, ne pas ouvrir une nouvelle branche maintenant.
|
||||
- Premier chantier à fermer: `orchestrator-designation` sur la branche actuelle.
|
||||
- Après stabilisation + tests verts: retour à Git pour commits atomiques puis merge local vers `develop`.
|
||||
- Ensuite seulement ouvrir des branches dédiées pour les autres chantiers.
|
||||
|
||||
## Incident de délégation
|
||||
|
||||
Main a tenté de demander à Architect de cadrer `orchestrator-designation` via `idea_ask_agent`.
|
||||
L'utilisateur a interrompu et signalé qu'Architect était bloqué avec le texte de la tâche affiché dans son chat mais non envoyé.
|
||||
|
||||
Interprétation: symptôme cohérent avec les problèmes actuels de write portal / soumission physique PTY / délégation visible-background. Ne pas empiler de nouvelles délégations tant que cette zone n'est pas stabilisée.
|
||||
|
||||
## Prochaine reprise recommandée
|
||||
|
||||
1. Nettoyer/arrêter l'agent Architect bloqué si nécessaire.
|
||||
2. Reprendre le chantier courant localement en lecture seule pour identifier exactement les changements WIP liés à la soumission de délégations.
|
||||
3. Comme Main ne code pas, utiliser la délégation seulement vers un agent dont la soumission est confirmée fonctionnelle, ou lancer les agents en visible et vérifier qu'ils reçoivent réellement la tâche.
|
||||
4. Priorité technique immédiate: fermer `orchestrator-designation`, car la délégation inter-agents fiable conditionne tous les autres chantiers.
|
||||
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