Files
IdeA/.ideai/memory/idea-program-surface-separation-and-livestate.md
Blomios 50e99e5ced chore(workstate): notes mémoire campagne MCP T1→T10 + état runtime
Capitalise la mémoire projet produite pendant la campagne de tests fonctionnels
MCP (rendez-vous inter-agents, backstop no-reply, réconciliation live-state au
reboot) et synchronise l'état runtime `.ideai/` (agents, layouts, skills, index
mémoire). Inclut la mise à jour du contexte de l'agent Git.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 13:32:28 +02:00

2.5 KiB
Raw Blame History

name: idea-program-surface-separation-and-livestate description: Cadrage du programme post-skills : ce qui existe vs reste, et la règle de frontière surface-agent/humaine. metadata: type: project

État au cadrage (develop @ 827d477) :

  • #2a handoff incrémental cross-profile = FAIT + CÂBLÉ (lots P1P8) : domain/conversation_log.rs (Handoff, HandoffStore, HandoffSummarizer::fold incrémental, ProviderSessionStore), application/conversation/record.rs (RecordTurn = append+fold), wiring state.rs (AppRecordTurnProvider), injection au lancement via HandoffProvider (P7). Résumeur = HeuristicHandoffSummarizer, seam async pour LlmHandoffSummarizer (P10) déjà en place. Reste : seam LLM + borne summary_md.
  • #2b log canonique = FAIT : ConversationLog append-only .ideai/conversations/<id>/log.jsonl, jamais injecté à un agent (doc domaine explicite). Reste : rétention/rotation + lecture paginée UI.
  • #1 live-state agent = À CONSTRUIRE (cœur) : aujourd'hui seul GetProjectWorkState (read-model HUMAIN dérivé, non durable). Construire un 4ᵉ store live-state.json (gitignored, runtime) : domain/live_state.rs (LiveState/LiveEntry/WorkStatus, port LiveStateStore, keyed last-writer-wins, JAMAIS append, champs bornés, prune TTL+max_n), use cases UpdateLiveState/GetLiveStateLean, adapter FsLiveStateStore, auto-update depuis orchestrator/service.rs (ask→Working, reply→Done), injection bornée # État du projet au lancement + outils MCP idea_workstate_read/idea_workstate_set. Ne stocke QUE le non-re-dérivable (intent/progrès/dernière délégation) ; busy/queue restent calculés.

Règle de frontière gravée (testable) : Surface AGENT = borné/distillé/pointeur uniquement (capacités, pointeurs mémoire, affordances skills, handoff summary_md, live-state lean). Surface HUMAINE = riche (ProjectWorkStatePanel, viewer fil-par-paire qui rejoue le log). Transcript / append-only INTERDIT d'injection dans un contexte agent ; seul un dérivé distillé franchit. 4 stores distincts : memory/ (savoir stable, versionné) · handoff.md (reprise par fil) · log.jsonl (transcript humain) · live-state.json (coordination transitoire maigre).

Découpage : LS0 doc baseline → LS1 domaine live-state → LS2 store+usecases → LS3 auto-update délégation → LS4 injection+MCP (clôt cold-start) ; LS5 seam LLM+borne handoff, LS6 rétention log+lecture UI (parallèles) ; LS7 UX fil-par-paire (front pur) ; LS8 doc clôture.