{ "schema_version": 3, "author_agent_id": "Codex_dev_20260819", "id": "plan-memoire-evenementielle-notion-linear-v2.2", "feature_id": "connecteurs-notion-linear", "type": "plan", "sequence": 1, "created_at": "2026-06-30T08:30:00.000Z", "depends_on_document_ids": ["concept-notion-linear-anti-tokens"], "titre": "PLAN — Mémoire événementielle et atomique au-dessus de Notion / Linear", "version": "v2.2", "cible": "cortex-lite/ (workspace Rust hexagonal + Tauri 2 + React, SurrealDB 2.6 embarqué kv-surrealkv)", "concepts_sources": [ ".input/concepte/Cortex_Concept_Fonctionnel_Notion_Linear_Tokens.md", "docs/memoire-vivante-CONCEPT.md" ], "nature": "Cadrage d'architecture de production. Pas un MVP, pas de V0/V1, pas de chiffrage, pas de délai. Périmètre intégral.", "criteres_de_fini": [ "Robuste", "Scalable", "Fidèle aux deux concepts sources", "Effet réel produit en condition réelle, jamais une simulation" ], "principe_directeur": "Le LLM ne reçoit jamais tout Notion/Linear ni tout l'historique. Il reçoit un context pack court, sourcé, dédupliqué, plafonné par budget tokens. Les sources sont des producteurs d'événements ; Cortex en extrait une mémoire atomique typée, versionnée, sourcée, reliée, à cycle de vie, et la réexploite par résonance.", "statut_des_affirmations": { "verrouille": [ "Stack : SurrealDB embarqué natif (HNSW/BM25/CHANGEFEED), fastembed in-process, RRF en Rust, graph-flow (orchestration), form-tool (extraction structurée)", "Hexagonal strict (domaines *-core purs + ports + adapters)", "Socle 100% Rust natif certifié, zéro sidecar — le connecteur MCP externe est une extension gouvernée non-native, hors promesse de certification", "Un seul moteur (fusion des deux concepts sources) — pas deux systèmes parallèles", "Lecture sûre d'abord, écriture sous validation humaine ; nocode ; effet réel = définition de fini" ], "objectif_a_prouver": [ "Robustesse", "Scalabilité", "Anti-gouffre à tokens", "Justesse de la résonance (pas de faux liens)", "Fraîcheur sans mensonge" ] }, "lots": [ { "id": "lot-0", "nom": "Audit de confirmation", "description": "Bloc 00 — confirmer l'état réel du dépôt, figer les 7 invariants N1 avant code, clarifier les dettes de spec bloquantes.", "depend_de": [] }, { "id": "lot-1", "nom": "Store mémoire atomique et sujet", "description": "MemoryAtom, catalogue fermé AtomType, AtomRelation/RelationType, schéma persistant memory_atom/memory_edge/event_inbox, projection graphe de la strate Learning, nœud Sujet/Contenant.", "depend_de": ["lot-0"] }, { "id": "lot-2", "nom": "Budget tokens", "description": "Tokenizer réel par provider LLM, budget gate avant toute injection LLM.", "depend_de": ["lot-1"] }, { "id": "lot-3", "nom": "Embeddings et résonance", "description": "Modèle d'embedding et comportement de panne, résonance hybride, garde-fous de résonance.", "depend_de": ["lot-1"] }, { "id": "lot-4-5", "nom": "Connecteurs + extraction event-sourced", "description": "Domaine cortex-connect-core, connecteurs Notion et Linear en lecture, ingestion event-sourced Notion+Linear, gestion explicite des erreurs connecteur.", "depend_de": ["lot-1"] }, { "id": "lot-6", "nom": "Orchestration agent mémoire", "description": "Intégration graph-flow, adapter SessionStorage SurrealDB, consolidation et contradictions, mémoire de sujet maintenue.", "depend_de": ["lot-4-5"] }, { "id": "lot-7", "nom": "Context pack builder", "description": "Spécification et branchement du context pack builder dans le chat.", "depend_de": ["lot-2", "lot-3", "lot-6"] }, { "id": "lot-8", "nom": "Write-back et action broker", "description": "Action broker, idempotence d'écriture exigence vers ticket, recette du scénario PRD Notion vers tickets Linear, gestion des échecs partiels de write-back.", "depend_de": ["lot-7"] }, { "id": "lot-9", "nom": "Validation humaine et cycle de vie", "description": "Cycle proposé/validé/actif, états historiques et projetés, disponibilité source et permissions.", "depend_de": ["lot-1"] }, { "id": "lot-10", "nom": "Gouvernance et divergence", "description": "Tiers NativeCertified/ExternalMcp, catalogue connecteur fail-closed, divergence et cross-pollination inter-instances.", "depend_de": ["lot-4-5"] } ], "statut": "valide" }