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.

Version 1.0 · Mis à jour

01

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.

02

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.

0,0 0,2 0,35 0,5 1,0 0j 30j 60j 90j 120j Temps (jours) seuil auto-inject seuil visibilité lien rappel +boost rappel +boost memory_strength(t)
Courbe de décroissance et renforcement : évolution de 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.
03

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 / contextuelles

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

CRON nocturne recalcul global Arrière-plan par lecture / écriture Relations / Arêtes weight_temporal = exp(−Δt/σ) σ=7j contextuelle σ=30j normale σ=90j fondationnelle Entités / Nœuds memory_strength = base×decay×boost retrieval_boost reward_factor emotional_mult < 0,2 → invisible en recherche < 0,35 → pas d'auto-injection
Deux surfaces de décroissance. Relations et entités décroissent indépendamment, déclenchées par le CRON nocturne et le traitement d'arrière-plan par événement. Chaque surface a sa propre formule, ses demi-vies configurables et son seuil comportemental distinct.
04

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,0

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

05

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.

06

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 :

ActionTypeFréquenceCible
Mise à jour de relationArrière-planPar événementweight_temporal
Accès à une entitéArrière-planPar recherchememory_strength
Nouvelle entrée bruteÉvénementielImmédiatrenforcement + Retain Job
Consolidation nocturneCRONChaque nuitDé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.

07

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.

ACTIF force ≥ 0,35 · injecté dans prompt DÉCROISSANT 0,2–0,35 · searchable only SUPPRIMÉ < 0,2 · invisible dans le graphe RANIMÉ ré-injecté decay nocturne decay continue entrée brute ou /rebuild force restaurée accès +boost
Machine à états du cycle de vie mémoriel. Une entité passe d'Actif à Décroissant puis Supprimé au fil des décroissances nocturnes. Les accès appliquent un boost à tout moment. La résurrection via une nouvelle entrée brute ou /rebuild compiled ramène l'entité à Ranimé, puis à Actif dès que la force franchit le seuil.