MÉMOIRE VIVANTE
Taxonomie des Entités
Pourquoi la mémoire reste interrogeable plutôt que de devenir un blob : la grille 2D qui classe chaque entité que le Cortex retient.
Pourquoi une taxonomie
Sans entités typées, le graphe est un blob non ordonné : les requêtes deviennent des scans complets, et les taux de déclin sont uniformes donc dénués de sens. Une taxonomie n'est pas de la comptabilité — elle conditionne quatre choses concrètes : quelles catégories d'Observation cortex-insight doit produire, comment le périmètre mémoire est partitionné, quels handlers le Retain Job enregistre, et quels sujets de requête l'API mémoire expose.
La première intuition — un monde extérieur (personnes, organisations, projets) contre un monde intérieur (causes racines, patterns, préférences d'agents) — est une grille de lecture utile, mais elle écrase trop de distinctions pour servir de structure finale. La décision : modéliser les entités sur une grille 2D, type-mémoire × référent, pour que chaque nœud porte à la fois un registre cognitif et un contexte positionnel.
Fondements biomimétiques
La grille n'est pas inventée de rien ; chaque axe s'ancre dans une science cognitive établie.
- Tulving — la tripartition épisodique / sémantique / procédurale, empiriquement fondée, se projette directement sur les trois registres de la grille.
- Husserl & Merleau-Ponty — le noème (l'objet visé) contre la noèse (l'acte de viser) : les objets ne sont jamais des données brutes, toujours des objets-pour-un-agent. Cela fonde l'axe référent.
- Théorie de l'esprit — modéliser les états mentaux d'autrui n'est pas trivial et exige une classe
otherdédiée, distincte de soi et des agents. - Théorie des actes de langage (Austin, Searle) — communiquer, c'est agir ; la mémoire d'interaction est typée par acte illocutoire, permettant des requêtes comme « surtout directif avec l'agent X, expressif avec la personne Y ».
- Modèles internes opérants (Bowlby) — les représentations des relations motivent l'espace de noms
agent:*:relationship:*. - Modèle hippocampique — l'hippocampe encode l'épisodique à court terme, le cortex consolide le sémantique à long terme, le cycle de sommeil nocturne est la passe de consolidation. Architecturalement :
cortex-insightencode,cortex-memoryconsolide.
La grille de classification 2D
Deux axes. Type de mémoire (Tulving) : épisodique — évènements datés, ce qui s'est passé ; sémantique — faits vrais sur le monde ; procédurale — comment faire les choses. Référent : self (l'opérateur), agent (les agents IA), other (personnes, organisations), object (projets, artefacts, lieux), abstract (concepts, valeurs, principes).
L'intuition intérieur/extérieur survit comme lecture de l'axe référent : self + agent est intérieur, other + object extérieur, abstract transversal. Chaque cellule porte ses propres half_life_days et emotional_multiplier par défaut, ce qui rend le déclin sémantiquement signifiant plutôt qu'arbitraire. Les colonnes type et subtype deviennent des espaces de noms en chemin (world:person:anya, agent:claude-code:rc:RC-2) plutôt qu'un enum plat.
Le nœud entité
Une Entité est un nœud de graphe durable — un namespace:slug avec un type, un sous-type, des champs de force et une référence vers sa vérité compilée. La force suit le modèle de mémoire hippocampique.
strength(t) = base_strength
× (0.5 ^ (Δt / effective_half_life))
× retrieval_boost
× emotional_multiplier
reward_factor = 1 + 0.5 × ((pos − neg) / (pos + neg + 1))
effective_half_life = half_life_days × reward_factor
retrieval_boost = 1 + 0.1 × log₂(retrieval_count + 1)
emotional_multiplier : neutre 1.0 · positif 1.3 · négatif 1.5 · critique 2.0Une entité pinned = TRUE a une force infinie, exemptée de déclin — instructions permanentes, faits fondamentaux. La taxonomie modèle les défauts : world:* prend une demi-vie longue ; agent:*:rc:* une courte car les patterns changent ; agent:*:instruction:* longue ou épinglée.
pinned restent plates en haut ; les modificateurs par cellule décident de la vitesse d'effacement du reste.Déclin et ajustement au schéma
Le déclin applique un poids temporel weight_temporal = exp(−Δt/σ) à chaque relation lors de la passe de consolidation nocturne. σ est configuré par type de relation dans la config [graph] — des fenêtres de pertinence propres au domaine, jamais codées en dur.
L'ajustement au schéma (schema_fit, 0..1) mesure à quel point une Observation entrante correspond aux patterns déjà présents dans le graphe, et il arbitre le Retain Job :
< 0,3— matière noire : signal nouveau, non classé ; demi-vie ×0,5, retenu provisoirement et mis en file de revue avant tout renforcement.> 0,7— voie rapide : consolidation à haute confiance ; demi-vie ×1,5, saute la passe de dédup coûteuse.0,3 … 0,7— le chemin normal, avec détection de conflits.
Les deux interagissent via reward_factor : un world:person vu rarement avec un faible schema_fit s'efface vite ; un agent:claude-code:rc récurrent à issues positives gagne une demi-vie effective plus longue et persiste.
De l'Observation à la Vérité compilée : le Retain Job
L'Observation est le contrat de publication de cortex-insight vers cortex-memory — un fait typé et encodé, pas encore résolu contre le graphe (id, source, timestamp, category, actors, topic, sentiment, payload_typed, correlation). Insight sait analyser les sources mais ignore l'état du graphe ; memory sait consolider mais ignore la sémantique des sources. L'Observation est la frontière nette entre les deux.
Pour chaque Observation, le Retain Job (dans cortex-memory) résout les acteurs en entités, déduplique, calcule le schema_fit, détecte les conflits, écrit entités et relations, met à jour force et déclin, et déclenche une régénération de Vérité compilée quand l'impact franchit le seuil. Une Vérité compilée est le markdown par entité — durable, versionné par une chaîne superseded_by — là où une Observation est transitoire. Les handlers sont indexés par (category, target_namespace) : la taxonomie décide directement quelle logique de consolidation se déclenche pour quelle classe d'entité.
schema_fit routant différemment le nouveau et le familier.Actuation : fermer la boucle
L'actuation est la façon dont la mémoire fait remonter les patterns vers le comportement : détecter un pattern récurrent dans le graphe, générer un diff proposé (une édition de CLAUDE.md, un nouveau skill, une entrée de mémoire, une allowlist de réglages), le pousser dans la file d'approbation, et ouvrir une PR automatique une fois approuvé. La file — typée par diff_type : claude_md | memory_entry | skill | allowlist — découple la détection de l'application, de sorte que l'opérateur révise avant toute mutation.
Le typage des interactions alimente cela directement : si l'analyse d'un fil détecte un pattern directif-plus-expressif persistant avec un contact donné, elle peut proposer une entrée de mémoire ou une annotation CLAUDE.md mettant ce style au jour. Comme les handlers du Retain Job sont indexés par (category, target_namespace), la taxonomie n'est pas descriptive — c'est la table d'aiguillage qui décide quelle logique s'exécute et quel comportement le système est autorisé à proposer.