chore(wip): état runtime .ideai + mémoire (checkpoint Lot D actions contrôlées)

Conversations live, MEMORY.md et note checkpoint
workstate-controlled-actions-lot-d.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 19:54:45 +02:00
parent c1e99d13a7
commit 33e65dec74
6 changed files with 77 additions and 8 deletions

View File

@ -1,11 +1,9 @@
---
upTo: e43c2b68-a855-4433-8067-64f6fc4fa59c
upTo: 68b5b6c0-9d14-44f9-bcc6-e745f018662d
objective: Nouvelle feature cadrée par Architect, prête à démarrer le développement : « Gestion des limites de session des agents » (détection hiérarchique des limites de session + reprise auto annulable). C'est
---
**Objectif :** Nouvelle feature cadrée par Architect, prête à démarrer le développement : « Gestion des limites de session des agents » (détection hiérarchique des limites de session + reprise auto annulable). C'est
- **Response:** Décision Git : **MERGE effectué** (local, sans push). Feature terminée et QA verte (réserve env. acceptable : seuls les tests loopback socket Unix non exécutables en sandbox, alternatives skips vertes) → rien ne justifiait de différer. ## Ce qui a été fait 1. Pendant l'opération, des écritures runtime live (`.ideai/conversations/6bc594e8…`) ont resurgi et bloquaient le checkout. Je les ai committées proprement sur la feature : - `8074aec` — chore(wip): état runtime .ideai (flux conversation live) 2. `git checkout develop` puis `git merge --no-ff feature/agent-skill-awareness-v2`. - Pas de rebase nécessaire : `develop` était ancêtre direct, historique non divergent. - Merge commit : **`63eb49a`** — merge(skills): intègre agent-skill-awareness-v2 dans develop. ## Historique résultant (develop) ``` * 63eb49a merge(skills): intègre agent-skill-awareness-v2 dans develop |\ | * 8074aec chore(wip): état runtime .ideai (flux conversation live) | * cc575ef chore(wip): état runtime .ideai (…checkpoint skill-awareness) | * 018eb1a fix(input): fiabilise la livraison de délégation et journalise le submit | * befff76 feat(skills): injecte un paragraphe d'awareness skills dans le fichier de convention |/ * e832af5 (base commune) ``` Merge sans conflit (stratégie ort), 22 fichiers / +575 -95. ## État final - Branche courante : **`develop`**, tip = `63eb49a`. - `develop` : **devant `origin/develop` de 15 commits** (local uniquement, aucun push — conforme). - Working tree propre au moment du merge (le flux runtime live peut le re-salir à tout instant, c'est normal). - Branche `feature/agent-skill-awareness-v2` **conservée** (entièrement fusionnée). Je ne la supprime pas : tu as parlé de « reprise de chantier », donc je la garde disponible. Dis-moi si tu veux que je la supprime maintenant qu'elle est intégrée. Aucune action sortante effectuée. Pour publier (`push origin develop`), il me faut ta validation explicite.
- **Prompt:** Inventaire des chantiers en cours après merge local `feature/agent-skill-awareness-v2` dans `develop` (`63eb49a`). Branches visibles: locales `feature/agent-skill-awareness`, `feature/agent-skills`, `fix/cold-start-delivery-race`, `feature/agent-skill-awareness-v2`; distante `origin/feature/agent-session-limits`; develop ahead origin/develop de 15; main ahead origin/main de 4. Merci de déterminer pour chaque branche si elle est déjà intégrée, superseded, encore active ou à conserver, sans suppression pour l'instant. Identifie les chantiers applicatifs réellement en cours/restants et la stratégie repo avant de reprendre le prochain. Ne committe/merge/supprime rien dans cette étape.
- **Response:** Inventaire repo après merge `agent-skill-awareness-v2``develop` (`63eb49a`). **Aucune suppression / commit / merge fait** (lecture seule). Méthode : `git cherry` (patch-id) **+** vérification du contenu réel dans `develop`, car les branches sont anciennes et leurs patches ont été re-landés différemment (les patch-ids diffèrent même quand le contenu est présent). ## Statut par branche **`feature/agent-skill-awareness-v2`** — ✅ INTÉGRÉE (mergée à l'instant, `63eb49a`). Conserver tant que reprise possible, sinon supprimable. **`feature/agent-skill-awareness` (v1)** — 🟠 SUPERSEDED par v2. Ses commits uniques portent une **autre approche** : outil MCP `idea_skill_read` + manifeste de skills + brief « capacités IdeA » inconditionnel (`ab34363`, `566bff4`, `1a10d67`). Vérif : `idea_skill_read` **absent de develop** → v2 a délibérément retenu une autre voie (injection des corps de skills dans le fichier de convention + paragraphe d'awareness via `lifecycle.rs`). Son fix cold-start (`e93a2c1`) est déjà couvert par develop. ⇒ rien à récupérer sauf si tu veux ressusciter l'approche `idea_skill_read` (non recommandé, v2 a tranché). **À archiver/supprimer.** **`feature/agent-skills` (L12, `ef101db`)** — 🟢 INTÉGRÉE PAR ÉQUIVALENT. Le domaine skills est présent dans develop : `crates/domain/src/skill.rs`, `crates/application/src/skill/{mod,usecases}.rs`, `crates/infrastructure/src/store/skill.rs` (+ tests). Re-landé via un autre chemin. **Superseded en tant que branche.** **`fix/cold-start-delivery-race` (`9590eac`)** — 🟢 INTÉGRÉE PAR ÉQUIVALENT. La logique cold-start (`release_cold_start`, gate armé) est dans develop : `crates/infrastructure/src/input/mod.rs:341,895`. La branche traîne en plus de vieux `release(0.1.0)/(0.2.0)` → elle a divergé d'un vieux `main`. **Stale, supprimable.** **`origin/feature/agent-session-limits` (`3f3504e`)** — 🟢 MERGÉE (ancêtre de develop). Branche distante stale ; le feature session-limits est dans develop. **`origin/wip/p8c-checkpoint-before-codex`** — branche distante WIP fondations enforcement OS (permissions), non rattachée localement ; à clarifier si encore vivante (probablement absorbée par le chantier permissions/sandbox déjà livré en code). ## État publication (local-only, conforme « pas de push ») - `develop` : **ahead origin/develop de 15** (contient tout ce qui précède). - `main` : **ahead origin/main de 4** = `release(0.3.0)` mergée localement, jamais poussée. origin/main = encore 0.2.0. ## Chantiers applicatifs réellement restants (vs branches mortes) Les 4 branches non-mergées ne portent **aucun chantier vivant** : tout est soit intégré, soit superseded. Le travail restant est ailleurs (cf. mémoire projet, pas dans des branches) : 1. **Validation e2e réelle sur AppImage** — nombreux items « ✓ RÉSOLU EN CODE … valid. e2e restante » (socket MCP, MCP inter-agents au restart, MCP natif en structuré, modèle terminal natif). Bloqueur connu : `checkpoint-blocked-until-appimage-030` / blocage build AppImage 0.3.0. 2. **Enforcement permissions/sandbox** : résiduel `$HOME`/résume du chemin structuré (memory `permissions-sandbox-system-state`). 3. Optionnels persistance : P9 FileGuard, P10 résumé LLM. ## Stratégie repo recommandée avant le prochain chantier - **Nettoyage différé** (sur ton GO, étape suivante) : supprimer en local `feature/agent-skill-awareness`, `feature/agent-skills`, `fix/cold-start-delivery-race` (toutes superseded/intégrées) ; idem branches distantes stale `origin/feature/agent-session-limits` (suppression distante = action sortante → validation explicite requise). - **Prochaine branche** : repartir **de `develop`** (`63eb49a`) avec un `feature/<sujet>` neuf pour le prochain chantier (probablement la **validation e2e AppImage 0.3.0**, qui est le vrai bloqueur courant). - **Push** : `develop` (+15) et `main` (+4 / release 0.3.0) attendent une validation explicite avant publication — je ne pousse rien sans ton accord. Dis-moi quel chantier on reprend : je crée la branche adéquate depuis `develop`.
- **Prompt:** Démarrage du prochain chantier applicatif recommandé par Architect: `UX conversations/délégations + read-model live-state minimal`. Branche courante attendue `develop` à `63eb49a`, mais des fichiers runtime `.ideai/conversations/6bc594e8...` peuvent être dirty à cause du live. Merci de décider et exécuter la gestion repo locale avant implémentation: créer/basculer sur une branche de feature depuis develop, gérer proprement le dirty runtime sans perdre de données, et retourner branche courante + état. Ne supprime pas les branches obsolètes pour l'instant, ne push pas.
- **Response:** Gestion repo locale faite pour démarrer le chantier « UX conversations/délégations + read-model live-state minimal ». ## Décisions & exécution 1. **Dirty runtime géré sans perte** : 4 fichiers `.ideai/conversations/*` (handoff + log.jsonl, flux live append-only) étaient modifiés sur `develop`. Je les ai **committés sur develop** (leur place naturelle, develop accumule déjà l'état runtime) plutôt que de les stash/jeter → zéro perte. - `338051e` — chore(wip): état runtime .ideai (flux conversation live) 2. **Nouvelle branche de feature créée depuis un `develop` propre** : - `git checkout -b feature/conversation-ux-live-state` (depuis `develop` @ `338051e`). - Nom dérivé du sujet Architect (kebab-case). ## État final - **Branche courante : `feature/conversation-ux-live-state`** (tip `338051e`). - Base : `develop` (`338051e` = `63eb49a` + le chore runtime), historique linéaire, prête pour l'implémentation. - Working tree : propre au moment de la bascule (le flux live peut le re-salir, c'est attendu ; je re-figerai au moment de committer le code de la feature en séparant code / runtime). - `develop` désormais ahead origin/develop de **16** (local only). Aucune branche obsolète supprimée. **Aucun push.** DevBackend/DevFrontend peuvent implémenter sur `feature/conversation-ux-live-state`. Reviens vers moi à l'implémentation terminée (tests verts) pour les commits atomiques et la décision de merge.
@ -23,4 +21,6 @@ objective: Nouvelle feature cadrée par Architect, prête à démarrer le dével
- **Response:** Lot C `workstate conversation summaries` intégré. QA re-vérifié vert de mon côté avant tout commit (fmt OK ; application workstate 21, app-tauri dto_agents 21, aucun warning Rust ; vitest 2 fichiers/19 ; tsc clean). **3 commits atomiques** sur `feature/workstate-conversation-summaries` (code feature / runtime séparés) : - `e9edadc` feat(workstate): résumés de conversation dans le read-model (Lot C backend) — assemblage des résumés dans application + DTO camelCase et exposition app-tauri (dto.rs, state.rs). - `c50622e` feat(workstate): UI des résumés de conversation (Lot C frontend) — domaine/mock alignés, `ProjectWorkStatePanel` enrichi. - `78500d8` chore(wip): état runtime .ideai (flux conversation live) — runtime isolé, jamais mêlé au code feature. **Merge local** : feature TERMINÉE et VERTE → `git merge --no-ff feature/workstate-conversation-summaries` dans **develop** → commit de merge `6e1ba7e`. `--no-ff` pour garder la trace d'intégration du lot, cohérent avec Lot A (`3bfb932`) et Lot B (`64c2c14`). **Pas de push, aucune branche supprimée.** `feature/workstate-conversation-summaries` conservée (sur `e9edadc→78500d8`). **État final** : - Branche courante : `develop` (HEAD = `6e1ba7e`). - Working tree : propre (`git status` vide). - `feature/workstate-conversation-summaries` préservée et entièrement contenue dans `develop`. - `develop` en avance sur origin (rien poussé). - Trilogie workstate Lot A→B→C désormais intégrée dans `develop` ; prêt pour une future release `develop → main` sur ta validation explicite.
- **Prompt:** Prépare le dépôt pour le Lot D `workstate controlled actions` après Lot C mergé dans `develop` @ `6e1ba7e`. État probable: dirty runtime/memory lié au checkpoint Lot C (`.ideai/*`, nouvelle note mémoire). Merci de gérer ce dirty sans perte et sans le mélanger au futur code applicatif, puis créer/basculer sur une branche feature propre depuis `develop`. Nom suggéré: `feature/workstate-controlled-actions`. Contraintes: pas de push, pas de suppression de branche. Retourne commits éventuels, branche courante, status final.
- **Response:** Dépôt prêt pour le Lot D `workstate controlled actions`. **Dirty traité** : tout le dirty était runtime/mémoire (aucun code applicatif), commité tel quel sur `develop` : - `7c71544` chore(wip): état runtime .ideai + mémoire (checkpoint Lot C résumés conversation) — conversations live, layouts, `MEMORY.md` et nouvelle note `checkpoint-workstate-conversation-summaries-lot-c.md` (auparavant non suivie, désormais versionnée). Cohérent avec l'historique runtime. **Branche feature** : créée et basculée depuis `develop` (@ `7c71544`) : - `feature/workstate-controlled-actions` **Pas de push, aucune branche supprimée.** **État final** : - Branche courante : `feature/workstate-controlled-actions` (HEAD = `7c71544`, partagé avec `develop`). - Working tree : propre (`git status` vide). - `develop` en avance sur origin (checkpoint local, non poussé). Le dev Lot D peut démarrer. Reviens vers moi pour committer/merger une fois QA vert.
- **Prompt:** Lot D `workstate controlled actions` est validé QA vert sur `feature/workstate-controlled-actions`. Merci de gérer les commits atomiques et la décision de merge local, sans push. QA vert: - `cargo fmt --all -- --check` OK - `cargo test -p application --test workstate_actions` OK, 7 passed - `cargo test -p application --test workstate` OK, 21 passed - `cargo test -p app-tauri --test dto_agents` OK, 25 passed - `cargo test -p app-tauri --test list_live_agents_r0b` OK, 5 passed - `cargo check -p app-tauri` OK - `cd frontend && npx vitest run src/features/workstate/workstate.test.tsx src/features/projects/projects.test.tsx` OK, 25 tests - `cd frontend && npx vitest run src/adapters/agent.test.ts` OK, 8 tests - `cd frontend && npx vitest run src/features/layout/singletonAgent.test.tsx src/features/layout/agentAlreadyRunning.test.tsx` OK, 9 tests - `cd frontend && npx tsc --noEmit` OK Fichiers attendus: - Backend/Tauri: `crates/application/src/workstate/actions.rs`, `crates/application/tests/workstate_actions.rs`, `crates/application/src/workstate/mod.rs`, `crates/application/src/lib.rs`, `crates/app-tauri/src/{dto.rs,commands.rs,state.rs,lib.rs}`, `crates/app-tauri/tests/dto_agents.rs`. - Frontend: `frontend/src/ports/index.ts`, `frontend/src/adapters/{agent.ts,agent.test.ts}`, `frontend/src/adapters/mock/index.ts`, `frontend/src/features/workstate/{ProjectWorkStatePanel.tsx,workstate.test.tsx}`, `frontend/src/features/layout/{singletonAgent.test.tsx,agentAlreadyRunning.test.tsx}`. - Dirty runtime `.ideai/*` possible; isole-le si présent. Décide commits atomiques, merge local éventuel vers `develop`, état final. Ne push pas, ne supprime pas de branche.
- **Prompt:** Lot D `workstate controlled actions` est validé QA vert sur `feature/workstate-controlled-actions`. Merci de gérer les commits atomiques et la décision de merge local, sans push. QA vert: - `cargo fmt --all -- --check` OK - `cargo test -p application --test workstate_actions` OK, 7 passed - `cargo test -p application --test workstate` OK, 21 passed - `cargo test -p app-tauri --test dto_agents` OK, 25 passed - `cargo test -p app-tauri --test list_live_agents_r0b` OK, 5 passed - `cargo check -p app-tauri` OK - `cd frontend && npx vitest run src/features/workstate/workstate.test.tsx src/features/projects/projects.test.tsx` OK, 25 tests - `cd frontend && npx vitest run src/adapters/agent.test.ts` OK, 8 tests - `cd frontend && npx vitest run src/features/layout/singletonAgent.test.tsx src/features/layout/agentAlreadyRunning.test.tsx` OK, 9 tests - `cd frontend && npx tsc --noEmit` OK Fichiers attendus: - Backend/Tauri: `crates/application/src/workstate/actions.rs`, `crates/application/tests/workstate_actions.rs`, `crates/application/src/workstate/mod.rs`, `crates/application/src/lib.rs`, `crates/app-tauri/src/{dto.rs,commands.rs,state.rs,lib.rs}`, `crates/app-tauri/tests/dto_agents.rs`. - Frontend: `frontend/src/ports/index.ts`, `frontend/src/adapters/{agent.ts,agent.test.ts}`, `frontend/src/adapters/mock/index.ts`, `frontend/src/features/workstate/{ProjectWorkStatePanel.tsx,workstate.test.tsx}`, `frontend/src/features/layout/{singletonAgent.test.tsx,agentAlreadyRunning.test.tsx}`. - Dirty runtime `.ideai/*` possible; isole-le si présent. Décide commits atomiques, merge local éventuel vers `develop`, état final. Ne push pas, ne supprime pas de branche.
- **Response:** Lot D `workstate controlled actions` intégré. QA re-vérifié vert de mon côté avant tout commit (fmt OK ; application workstate_actions 7, workstate 21, app-tauri dto_agents 25, list_live_agents_r0b 5 ; frontend 5 fichiers/42 — workstate+projects 25, agent 8, singletonAgent+agentAlreadyRunning 9 ; tsc clean). **3 commits atomiques** sur `feature/workstate-controlled-actions` (code feature / runtime séparés) : - `3408c96` feat(workstate): actions contrôlées sur le work-state (Lot D backend) — nouveau module `workstate/actions.rs` + test `workstate_actions.rs`, intégration au read-model, commandes Tauri (commands/dto/state/lib). - `1c6441b` feat(workstate): UI des actions contrôlées (Lot D frontend) — port + adaptateur agent étendus, mock aligné, `ProjectWorkStatePanel` câblé. - `0976648` chore(wip): état runtime .ideai (flux conversation live) — runtime isolé. **Merge local** : feature TERMINÉE et VERTE → `git merge --no-ff feature/workstate-controlled-actions` dans **develop** → commit de merge `c1e99d1`. `--no-ff` cohérent avec Lots A (`3bfb932`), B (`64c2c14`), C (`6e1ba7e`). **Pas de push, aucune branche supprimée.** `feature/workstate-controlled-actions` conservée (sur `3408c96→0976648`). **État final** : - Branche courante : `develop` (HEAD = `c1e99d1`). - Working tree : propre (`git status` vide). - `feature/workstate-controlled-actions` préservée et entièrement contenue dans `develop`. - `develop` en avance sur origin (rien poussé). - Quadrilogie workstate Lot A→B→C→D intégrée dans `develop` ; prêt pour une future release `develop → main` sur ta validation explicite.
- **Prompt:** Prépare le dépôt pour le Lot E1 `controlled auto-memory harvest` après Lot D mergé dans `develop` @ `c1e99d1`. État probable: dirty runtime/memory lié au checkpoint Lot D (`.ideai/*`, nouvelle note mémoire). Merci de gérer ce dirty sans perte et sans le mélanger au futur code applicatif, puis créer/basculer sur une branche feature propre depuis `develop`. Nom suggéré: `feature/controlled-auto-memory-harvest`. Contraintes: pas de push, pas de suppression de branche. Retourne commits éventuels, branche courante, status final.

View File

@ -57,3 +57,5 @@
{"id":"c10a7683-5468-472c-adbb-37fb6fe8c470","conversation":"6bc594e8-a37c-0dbd-1de6-6e3b73002cb4","atMs":1781976728705,"source":{"kind":"agent","agentId":"a6ced819-b893-4213-b003-9e9dc79b9641"},"role":"prompt","text":"Prépare le dépôt pour le Lot D `workstate controlled actions` après Lot C mergé dans `develop` @ `6e1ba7e`.\n\nÉtat probable: dirty runtime/memory lié au checkpoint Lot C (`.ideai/*`, nouvelle note mémoire). Merci de gérer ce dirty sans perte et sans le mélanger au futur code applicatif, puis créer/basculer sur une branche feature propre depuis `develop`.\n\nNom suggéré: `feature/workstate-controlled-actions`.\n\nContraintes: pas de push, pas de suppression de branche. Retourne commits éventuels, branche courante, status final."}
{"id":"c5df55db-1dc4-465e-bb3a-512806489e73","conversation":"6bc594e8-a37c-0dbd-1de6-6e3b73002cb4","atMs":1781976745549,"source":{"kind":"agent","agentId":"cd0b4cf1-1bef-4fae-ade5-f0a6b49bbaf5"},"role":"response","text":"Dépôt prêt pour le Lot D `workstate controlled actions`.\n\n**Dirty traité** : tout le dirty était runtime/mémoire (aucun code applicatif), commité tel quel sur `develop` :\n- `7c71544` chore(wip): état runtime .ideai + mémoire (checkpoint Lot C résumés conversation) — conversations live, layouts, `MEMORY.md` et nouvelle note `checkpoint-workstate-conversation-summaries-lot-c.md` (auparavant non suivie, désormais versionnée). Cohérent avec l'historique runtime.\n\n**Branche feature** : créée et basculée depuis `develop` (@ `7c71544`) :\n- `feature/workstate-controlled-actions`\n\n**Pas de push, aucune branche supprimée.**\n\n**État final** :\n- Branche courante : `feature/workstate-controlled-actions` (HEAD = `7c71544`, partagé avec `develop`).\n- Working tree : propre (`git status` vide).\n- `develop` en avance sur origin (checkpoint local, non poussé).\n\nLe dev Lot D peut démarrer. Reviens vers moi pour committer/merger une fois QA vert."}
{"id":"e43c2b68-a855-4433-8067-64f6fc4fa59c","conversation":"6bc594e8-a37c-0dbd-1de6-6e3b73002cb4","atMs":1781977881625,"source":{"kind":"agent","agentId":"a6ced819-b893-4213-b003-9e9dc79b9641"},"role":"prompt","text":"Lot D `workstate controlled actions` est validé QA vert sur `feature/workstate-controlled-actions`. Merci de gérer les commits atomiques et la décision de merge local, sans push.\n\nQA vert:\n- `cargo fmt --all -- --check` OK\n- `cargo test -p application --test workstate_actions` OK, 7 passed\n- `cargo test -p application --test workstate` OK, 21 passed\n- `cargo test -p app-tauri --test dto_agents` OK, 25 passed\n- `cargo test -p app-tauri --test list_live_agents_r0b` OK, 5 passed\n- `cargo check -p app-tauri` OK\n- `cd frontend && npx vitest run src/features/workstate/workstate.test.tsx src/features/projects/projects.test.tsx` OK, 25 tests\n- `cd frontend && npx vitest run src/adapters/agent.test.ts` OK, 8 tests\n- `cd frontend && npx vitest run src/features/layout/singletonAgent.test.tsx src/features/layout/agentAlreadyRunning.test.tsx` OK, 9 tests\n- `cd frontend && npx tsc --noEmit` OK\n\nFichiers attendus:\n- Backend/Tauri: `crates/application/src/workstate/actions.rs`, `crates/application/tests/workstate_actions.rs`, `crates/application/src/workstate/mod.rs`, `crates/application/src/lib.rs`, `crates/app-tauri/src/{dto.rs,commands.rs,state.rs,lib.rs}`, `crates/app-tauri/tests/dto_agents.rs`.\n- Frontend: `frontend/src/ports/index.ts`, `frontend/src/adapters/{agent.ts,agent.test.ts}`, `frontend/src/adapters/mock/index.ts`, `frontend/src/features/workstate/{ProjectWorkStatePanel.tsx,workstate.test.tsx}`, `frontend/src/features/layout/{singletonAgent.test.tsx,agentAlreadyRunning.test.tsx}`.\n- Dirty runtime `.ideai/*` possible; isole-le si présent.\n\nDécide commits atomiques, merge local éventuel vers `develop`, état final. Ne push pas, ne supprime pas de branche."}
{"id":"07175815-62fd-4f58-9d20-1db29f66da1e","conversation":"6bc594e8-a37c-0dbd-1de6-6e3b73002cb4","atMs":1781977932121,"source":{"kind":"agent","agentId":"cd0b4cf1-1bef-4fae-ade5-f0a6b49bbaf5"},"role":"response","text":"Lot D `workstate controlled actions` intégré. QA re-vérifié vert de mon côté avant tout commit (fmt OK ; application workstate_actions 7, workstate 21, app-tauri dto_agents 25, list_live_agents_r0b 5 ; frontend 5 fichiers/42 — workstate+projects 25, agent 8, singletonAgent+agentAlreadyRunning 9 ; tsc clean).\n\n**3 commits atomiques** sur `feature/workstate-controlled-actions` (code feature / runtime séparés) :\n- `3408c96` feat(workstate): actions contrôlées sur le work-state (Lot D backend) — nouveau module `workstate/actions.rs` + test `workstate_actions.rs`, intégration au read-model, commandes Tauri (commands/dto/state/lib).\n- `1c6441b` feat(workstate): UI des actions contrôlées (Lot D frontend) — port + adaptateur agent étendus, mock aligné, `ProjectWorkStatePanel` câblé.\n- `0976648` chore(wip): état runtime .ideai (flux conversation live) — runtime isolé.\n\n**Merge local** : feature TERMINÉE et VERTE → `git merge --no-ff feature/workstate-controlled-actions` dans **develop** → commit de merge `c1e99d1`. `--no-ff` cohérent avec Lots A (`3bfb932`), B (`64c2c14`), C (`6e1ba7e`).\n\n**Pas de push, aucune branche supprimée.** `feature/workstate-controlled-actions` conservée (sur `3408c96→0976648`).\n\n**État final** :\n- Branche courante : `develop` (HEAD = `c1e99d1`).\n- Working tree : propre (`git status` vide).\n- `feature/workstate-controlled-actions` préservée et entièrement contenue dans `develop`.\n- `develop` en avance sur origin (rien poussé).\n- Quadrilogie workstate Lot A→B→C→D intégrée dans `develop` ; prêt pour une future release `develop → main` sur ta validation explicite."}
{"id":"68b5b6c0-9d14-44f9-bcc6-e745f018662d","conversation":"6bc594e8-a37c-0dbd-1de6-6e3b73002cb4","atMs":1781978078220,"source":{"kind":"agent","agentId":"a6ced819-b893-4213-b003-9e9dc79b9641"},"role":"prompt","text":"Prépare le dépôt pour le Lot E1 `controlled auto-memory harvest` après Lot D mergé dans `develop` @ `c1e99d1`.\n\nÉtat probable: dirty runtime/memory lié au checkpoint Lot D (`.ideai/*`, nouvelle note mémoire). Merci de gérer ce dirty sans perte et sans le mélanger au futur code applicatif, puis créer/basculer sur une branche feature propre depuis `develop`.\n\nNom suggéré: `feature/controlled-auto-memory-harvest`.\n\nContraintes: pas de push, pas de suppression de branche. Retourne commits éventuels, branche courante, status final."}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -16,3 +16,4 @@
- [checkpoint-delivery-submit-logging-fix](checkpoint-delivery-submit-logging-fix.md) — memory note checkpoint-delivery-submit-logging-fix
- [checkpoint-workstate-delegation-queue-lot-b](checkpoint-workstate-delegation-queue-lot-b.md) — memory note checkpoint-workstate-delegation-queue-lot-b
- [checkpoint-workstate-conversation-summaries-lot-c](checkpoint-workstate-conversation-summaries-lot-c.md) — memory note checkpoint-workstate-conversation-summaries-lot-c
- [checkpoint-workstate-controlled-actions-lot-d](checkpoint-workstate-controlled-actions-lot-d.md) — memory note checkpoint-workstate-controlled-actions-lot-d

View File

@ -0,0 +1,64 @@
---
name: checkpoint-workstate-controlled-actions-lot-d
description: memory note checkpoint-workstate-controlled-actions-lot-d
metadata:
type: project
---
# Checkpoint — Workstate controlled actions Lot D
Date: 2026-06-20
## État final
Lot D `workstate controlled actions` terminé, validé QA et mergé localement dans `develop`.
Branche finale:
- `develop` @ `c1e99d1` — merge local `feature/workstate-controlled-actions`.
- `feature/workstate-controlled-actions` conservée.
- Aucun push, aucune branche supprimée.
- Working tree propre après décision Git.
## Commits créés
- `3408c96``feat(workstate): actions contrôlées sur le work-state (Lot D backend)`
- Use cases agent-level `AttachLiveAgent` et `StopLiveAgent`.
- Commandes Tauri `attach_live_agent` et `stop_live_agent`.
- Attach rebind PTY/structured sans spawn; stop PTY/structured.
- DTO camelCase et wiring AppState/lib.
- `1c6441b``feat(workstate): UI des actions contrôlées (Lot D frontend)`
- Port/adaptateur agent alignés sur le nouveau contrat attach + stop.
- Panneau Work: Open, Attach, Stop, View conversation, Copy summary.
- Work n'appelle pas `launchAgent`; Stop passe par `stopLiveAgent`; View/Copy n'utilisent que les previews Lot C.
- `0976648``chore(wip): état runtime .ideai (flux conversation live)`
- Runtime isolé des commits feature.
- `c1e99d1` — merge local dans `develop`.
## QA verte
Commandes QA/Git validées:
- `cargo fmt --all -- --check` OK.
- `cargo test -p application --test workstate_actions` OK, 7 passed.
- `cargo test -p application --test workstate` OK, 21 passed.
- `cargo test -p app-tauri --test dto_agents` OK, 25 passed.
- `cargo test -p app-tauri --test list_live_agents_r0b` OK, 5 passed.
- `cargo check -p app-tauri` OK.
- `cd frontend && npx vitest run src/features/workstate/workstate.test.tsx src/features/projects/projects.test.tsx` OK, 25 tests.
- `cd frontend && npx vitest run src/adapters/agent.test.ts` OK, 8 tests.
- `cd frontend && npx vitest run src/features/layout/singletonAgent.test.tsx src/features/layout/agentAlreadyRunning.test.tsx` OK, 9 tests.
- `cd frontend && npx tsc --noEmit` OK.
Warnings restants uniquement côté Vite sur options `esbuild` dépréciées/ignorées au profit de `oxc`, non bloquants.
## Décisions produit/techniques
- Actions Lot D opèrent seulement sur l'état existant; pas de lancement d'agent neuf depuis Work.
- Attach ne crée ni session ni cellule; cible déterministe = cellule visible vide côté UI.
- Stop ne supprime ni agent, ni tickets, ni handoff/conversation summary.
- View/Copy restent limités aux previews bornées Lot C; aucun log brut exposé.
## Suite probable
La quadrilogie Work A/B/C/D est intégrée. Prochains chantiers restants à cadrer: persistance conversationnelle/cross-profile plus profonde, mise à jour automatique mémoire/contexte pendant la vie des agents, ou synchronisation documentaire architecture selon priorité Architect/Main.