---
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.