--- name: checkpoint-auto-memory-harvest-lot-e1 description: memory note checkpoint-auto-memory-harvest-lot-e1 metadata: type: project --- # Checkpoint — Auto-memory harvest Lot E1 Date: 2026-06-21 ## État final Lot E1 `auto-memory harvest contrôlé` terminé, validé QA et mergé localement dans `develop`. Branche finale: - `develop` @ `61c330a` — merge local `feature/controlled-auto-memory-harvest`. - Branche `feature/controlled-auto-memory-harvest` supprimée après merge. - Aucun push, aucun merge vers `main`. - Working tree applicatif propre; seuls résidus non committés: bruit runtime `.ideai/*` volontairement exclu. ## Commits créés - `b12081b` — `feat(memory): récolte automatique contrôlée de la mémoire (Lot E1)` - Domaine: parsing pur de blocs fenced `idea-memory` avec limites et erreurs isolées. - Application: `HarvestMemoryFromTurn` best-effort sur `TurnRole::Response`, persistance via `MemoryStore`, événements `MemorySaved` via `EventBus`. - Orchestrateur: harvest branché après checkpoint/handoff sur chemins de succès ask/reply, non bloquant. - Lifecycle: directive mémoire IdeA injectée dans le contexte convention-file. - App/Tauri: wiring du use case dans `AppState`. - Frontend: refresh du panneau mémoire sur `memorySaved`; patch test-only mock gateway `workState`. - `8c7c47c` — `fix(mcp): fallback déterministe du runtime dir socket` - Durcit le choix du runtime dir socket MCP si `XDG_RUNTIME_DIR` est inutilisable. - Commit séparé car indépendant du Lot E1. - `61c330a` — `merge(memory): intègre la récolte automatique contrôlée (Lot E1) dans develop`. ## QA verte Commandes QA réelles: - `cargo fmt --all -- --check` OK. - `cargo check -p app-tauri` OK. - `cd frontend && npx tsc --noEmit` OK. - `cd frontend && npx vitest run` OK après patch test-only, `42 passed`, `405 tests`. - `cargo test -p domain memory_harvest -- --nocapture` OK, 14 passed. - `cargo test -p application --test memory_harvest -- --nocapture` OK, 5 passed. - `cargo test -p application --test orchestrator_service harvest -- --nocapture` OK, 4 passed. - `cargo test -p infrastructure --test memory_store idempotent -- --nocapture` OK, 1 passed. - `cargo test --workspace` brut rouge uniquement sur tests AF_UNIX/MCP bloqués par sandbox `Operation not permitted`; workspace filtré strictement sur ces tests environnementaux OK. ## Décisions produit/techniques - Harvest strictement best-effort: jamais bloquant pour réponse, délégation, handoff ou ticket. - Mémoire durable seulement via directive explicite `idea-memory`, plafonnée et validée; pas de log brut, pas de live-state, pas de handoff dans ce mécanisme. - `title` est exigé par directive mais non persisté car l'entité `Memory` n'a pas de champ titre; accepté pour E1 afin de ne pas élargir le lot. - Les fichiers runtime `.ideai/*` générés pendant la session restent hors commits applicatifs. ## Suite probable Prochains chantiers à cadrer par Architect avant implémentation: - persistance conversationnelle/canonical log + handoff incrémental cross-profile; - live-state projet persistant et séparé de la mémoire durable; - synchronisation documentaire architecture après les lots Work B/C/D et E1.