MÉMOIRE VIVANTE
La Décroissance Temporelle
Pourquoi une mémoire vivante doit oublier : le modèle de décroissance exponentielle et de renforcement par l'accès qui maintient la pertinence du graphe de connaissance.
Pourquoi l'oubli est une fonctionnalité
Un graphe de connaissance qui s'accumule sans élagage dérive vers le bruit. Des relations périmées remontent dans les résultats de recherche, le contexte de prompt gonfle de faits obsolètes, et la latence de rappel augmente à mesure que le graphe croît de façon indiscriminée. L'oubli n'est pas un mode de défaillance — c'est une exigence de conception.
Le précédent biologique est précis : le cerveau humain oublie sélectivement, non aléatoirement. La mémoire de travail reste exploitable parce que l'hippocampe déprioritise les traces qui ne sont pas renforcées. Cortex hérite directement de ce principe.
L'objectif de conception est une décroissance progressive et non destructive. Rien n'est jamais supprimé. La saillance est réduite jusqu'à ce qu'elle soit explicitement ravivée. La couche Brute est immuable par invariant : même une entité dont la force a chuté à quasi-zéro peut être ressuscitée en rejouant le journal d'événements bruts. La décroissance opère uniquement sur les couches Sémantique et Compilée.
La courbe d'oubli d'Ebbinghaus
Hermann Ebbinghaus (1885) a établi la première loi quantifiée de l'oubli humain : la rétention décroît exponentiellement avec le temps écoulé depuis l'encodage. La courbe est donnée par R = exp(−Δt / σ), où Δt est le temps écoulé et σ le paramètre de stabilité (équivalent : R = 0,5^(Δt / demi-vie) — les deux formes expriment la même enveloppe exponentielle).
Cortex traite la courbe d'Ebbinghaus comme sa ligne de base — la forme de la décroissance avant tout renforcement. La conséquence pratique est déterministe : une entité laissée sans renforcement franchira le seuil d'invisibilité à un moment prévisible. Le système n'a pas besoin d'heuristiques pour décider quand la supprimer ; les mathématiques s'en chargent.
memory_strength d'une entité dans le temps. La décroissance exponentielle est interrompue par des accès qui remontent la force et réinitialisent l'horloge. Les deux bandes horizontales marquent les seuils d'auto-injection et de visibilité des liens.Deux surfaces de décroissance : liens et entités
La décroissance ne s'applique pas uniformément au graphe. Elle opère indépendamment sur deux structures distinctes, chacune avec sa propre formule et ses paramètres configurables.
Relations / arêtes : weight_temporal = exp(−Δt / σ), où Δt est le nombre de jours depuis le dernier renforcement et σ est une demi-vie configurable par classe de relation :
σ = 90j # relations fondationnelles (ex. is_core_concept_of)
σ = 30j # relations normales
σ = 7j # relations faibles / contextuellesEntités / nœuds : le modèle complet memory_strength décrit dans la section suivante. Cette surface est plus sophistiquée parce que les entités portent un poids sémantique injecté directement dans le contexte de prompt.
La séparation est intentionnelle. Une relation peut s'estomper tandis que les entités qu'elle connecte restent fortes, et inversement. La décroissance sur les arêtes élague la topologie périmée du graphe ; la décroissance sur les entités contrôle la saillance dans les prompts. Les deux s'exécutent indépendamment, selon des planifications et des seuils différents.
La formule memory_strength
Le modèle simplifié (lignée hippo-memory, variante d'implémentation) :
memory_strength = base_strength × (1 + reinforcement_factor) × exp(−Δt / half_life)Le modèle étendu, tel que défini dans la spécification architecturale, décompose chaque facteur explicitement :
strength(t) = base × decay × retrieval_boost × emotional_multiplier
decay = 0,5 ^ (Δt / effective_half_life)
effective_half_life = half_life × reward_factor
reward_factor = 1 + 0,5 × ((pos − neg) / (pos + neg + 1))
retrieval_boost = 1 + 0,1 × log₂(retrieval_count + 1)
emotional_mult = neutre:1,0 | positif:1,3 | négatif:1,5 | critique:2,0Sémantique des paramètres : base_strength est la force initiale à la création, dans [0,0 ; 1,0]. half_life est configurable par classe d'entité — 45j pour les projets, 10j pour les concepts mineurs, 30j pour les patterns comportementaux, 90j pour les connaissances monde, 60j pour les instructions de l'opérateur. Toutes les valeurs résident dans config/decay.yaml.
Le reward_factor étend la demi-vie effective proportionnellement à l'historique de feedback positif — modélisant la consolidation synaptique modulée par la dopamine. Le emotional_mult s'applique à l'encodage : les souvenirs négatifs et critiques sont retenus plus longtemps, conformément au biais de négativité bien établi dans la mémoire humaine.
Renforcement par l'accès — répétition espacée
Chaque accès — qu'il s'agisse d'un résultat de recherche, d'une injection dans un prompt ou d'une nouvelle mention brute de l'entité — renforce sa mémoire. Dans le modèle simplifié, cela ajoute +0,3 au reinforcement_factor. Dans le modèle étendu, cela incrémente retrieval_count, qui alimente le terme retrieval_boost via une échelle logarithmique (rendements décroissants sur les accès répétés).
La base cognitive est l'effet de test (Roediger & Karpicke, 2006) : l'acte de rappeler un souvenir le renforce davantage que la simple ré-exposition passive. Cela correspond au rejeu hippocampique — le rappel ré-encode la trace à une stabilité plus élevée. Cortex traite chaque résultat de recherche comme un événement de rappel et applique le boost en conséquence.
Le reward_factor étend la demi-vie effective lorsqu'une entité a accumulé des retours positifs (pos > neg), opérationnalisant le principe selon lequel les représentations prédictives de récompense sont préférentiellement consolidées (Schultz, 1998). Les entités utiles restent utiles plus longtemps.
Chaque nuit, un document Compiled Truth est régénéré pour chaque entité active. C'est l'équivalent système de la reconsolidation mémorielle : chaque cycle de rappel réécrit l'artefact synthétisé avec la pondération de force actuelle, de sorte que la sortie reflète l'état présent du graphe plutôt que son état lors de la dernière ingestion.
Déclencheurs de décroissance et planification
Quatre modes de déclenchement distincts pilotent la décroissance et le renforcement. Ils ne sont pas mutuellement exclusifs — un seul événement peut en activer plusieurs :
| Action | Type | Fréquence | Cible |
|---|---|---|---|
| Mise à jour de relation | Arrière-plan | Par événement | weight_temporal |
| Accès à une entité | Arrière-plan | Par recherche | memory_strength |
| Nouvelle entrée brute | Événementiel | Immédiat | renforcement + Retain Job |
| Consolidation nocturne | CRON | Chaque nuit | Décroissance globale + consolidation |
La décroissance d'arrière-plan s'exécute en ligne sur chaque chemin lecture/écriture — aucun démon séparé n'est requis. Le CRON nocturne effectue le recalcul en masse et déclenche la passe de consolidation en cycle de sommeil, durant laquelle les documents Compiled Truth sont régénérés et les entités périmées sont supprimées sous le seuil.
Seuils et conséquences comportementales
Deux seuils gouvernent les transitions d'état comportemental. Aucun ne déclenche de suppression.
weight_temporal < 0,2 sur une relation : l'arête devient effectivement invisible dans la recherche multi-stratégie. Elle reste interrogeable via une recherche temporelle explicite, mais elle ne remontera pas dans le parcours de graphe standard ni dans l'assemblage du contexte de prompt.
memory_strength < 0,35 sur une entité : le document Compiled Truth de cette entité n'est plus auto-injecté dans les prompts. Le fichier Markdown persiste sur disque et conserve son entrée d'index de recherche, mais il perd sa priorité dans la passe de classement.
La couche Brute est immuable. La résurrection est toujours possible via /rebuild compiled <slug> ou en rencontrant à nouveau l'entité dans une nouvelle entrée brute. La décroissance est un gradient, non une falaise — aucun changement d'état n'est irréversible du point de vue de l'opérateur.
/rebuild compiled ramène l'entité à Ranimé, puis à Actif dès que la force franchit le seuil.