Files
brain-template/profil/decisions/028-learning-loop-detect-iterate.md
Tetardtek 8c95b70314 feat(template): ADRs 018-035 — 14 décisions architecturales manquantes
Synchronise le template avec les décisions fondatrices 2025-2026 :
- 018 : migration Rust strangler fig toolkit
- 023 : Cortex/Cosmos product vision
- 025 : cortex composition operator
- 026 : IPC context packet access matrix
- 027 : ambient autonomy engine
- 028 : learning loop detect-iterate
- 029 : Cosmos frontend brain
- 030 : boot mode empirical validation
- 031 : distribution model
- 032 : execution mode vs workflow
- 033/033a : embedding language strategy + zone filter
- 034 : infra separation local/VPS/template
- 035 : session pilote mode (ADR-035)

Dépersonnalisation : keys/brain.<OWNER_DOMAIN>, deciders: [<owner>]
2026-03-18 22:38:36 +01:00

5.8 KiB

scope, name, title, status, date, deciders
scope name title status date deciders
kernel ADR-028 Learning loop — detect → collect → propose → approve → update accepted 2026-03-18
<owner>

ADR-028 — Learning loop : detect → collect → propose → approve → update

La boucle complète

ambient run  →  RETURN collecté  →  pattern-scribe détecte
                                           ↓
                                    pattern nouveau ?
                                     oui ↓      non ↓
                              log pattern    incrément compteur
                                     ↓
                              seuil atteint ?
                                     ↓ oui
                              propose update (ADR / workflow / agent)
                                     ↓
                              humain approve / reject
                                     ↓ approve
                              brain_write() → update
                                     ↓
                              BACT enregistre la progression

Ce qui ferme la boucle ouverte

Avant cet ADR :

  • pattern-scribe détectait → loggait → s'arrêtait
  • Humain devait lire le log et agir manuellement

Après cet ADR :

  • pattern-scribe détecte → log → propose si seuil atteint
  • Humain approuve ou rejette — le brain exécute

Sources d'entrée de la boucle

Source Ce qu'elle apporte
workspace/pattern-log.md Patterns inter-sessions détectés
ambient/runs/*.yml Run records workflow (ADR-027)
BSI claims (fermés) Historique décisions de session
now.md chain Contexte bridge entre sessions

Seuils de déclenchement

thresholds:
  pattern_occurrences: 3      # même pattern 3x → propose correction
  escalate_same_cause: 2      # même ESCALATE 2x → propose règle ambient
  error_same_workflow: 2      # même ERROR 2x → propose fix workflow spec
  bact_milestone: 10          # 10 cycles appris → coach L2 unlock signal

Format de proposition

Quand le seuil est atteint, le brain génère une proposition :

proposal:
  id: prop-20260318-001
  trigger: pattern_occurrences
  pattern: "deploy instance-0x échoue si port 443 pas encore ouvert"
  observed: 3x dans runs/deploy-batch-*.yml
  proposes:
    type: workflow_update
    file: workflows/deploy-batch.yml
    change: "ajouter step check-port-443 avant spawn deploy"
  requires: human_approval
  expires_at: ISO8601  # 72h — si pas de réponse → archive

Approbation humaine

brain-ui    →  panneau "Proposals"  →  approve / reject / modify
Telegram    →  notification résumée →  /approve prop-001 | /reject prop-001
Claude      →  en début de session  →  "1 proposition en attente — tu veux la voir ?"

Règle : jamais d'update automatique sans approbation. L'autonomie croît par accumulation de confiance, pas par défaut.


Connexion BACT

Chaque approbation humaine = un cycle d'apprentissage enregistré dans BACT :

bact_entry:
  date: ISO8601
  type: workflow_improvement
  pattern: "..."
  approved_by: human
  applied_to: workflows/deploy-batch.yml
  outcome: null  # rempli après le prochain run

Après le prochain run :

  outcome: success  # le fix a fonctionné
  # → confiance += 1 sur ce type de décision

Accumulation de confiance → certains patterns futurs peuvent passer en auto-approve si confiance suffisante + pattern identique déjà résolu.


La vision long terme capturée

Chaque run = un exemple d'entraînement. Chaque ESCALATE résolu = une règle apprise. Chaque approbation = de la confiance accumulée dans BACT.

Sur le long terme : le brain sait que tu as un VPS, qu'il tourne sur tel port, que tel pattern d'erreur se résout comme ça. Les ESCALATEs deviennent rares. Tu restes décisionnaire final — mais uniquement sur ce qui est vraiment nouveau.


Bootstrap protocol — comment on arrive à l'autonomie

L'autonomie ne se déclare pas. Elle se gagne par itérations supervisées.

Itération 1 — ensemble
  Humain + brain côte à côte sur le premier run.
  Humain repère les gaps, le scope drift, les décisions mal calibrées.
  Brain apprend la tolérance exacte — pas plus, pas moins.

Itération 2 — supervisée
  Brain exécute. Humain observe sans intervenir sauf ESCALATE réel.
  Validation que les corrections de l'itération 1 ont tenu.
  Ajustements fins si nécessaire.

Itération 3+ — autonome
  Brain tourne seul. Humain = décisionnaire final uniquement.
  Les ESCALATEs sont rares — le brain a vu le pattern avant.

Règle de passage : on ne passe à l'itération suivante que si l'itération courante n'a produit aucun scope drift non détecté. Un drift non détecté = retour à l'itération 1.

Ce que "ensemble" signifie en pratique :

  • Humain lit les run records après chaque step
  • Signale les écarts de scope immédiatement
  • Approuve ou rejette chaque proposition générée
  • Le brain ne "suppose" pas — il demande si ambigu

Ce qui change à l'itération 3 :

  • Le brain a un historique suffisant sur ce workflow précis
  • Les propositions de ce type passent en auto-approve (confiance BACT)
  • L'humain reçoit un résumé, pas une demande d'approbation step-by-step

Ce que cet ADR ne définit pas

  • Stockage BACT (format base, vecteurs, ou simple YAML) → à décider à l'implémentation
  • Interface Cosmos "Proposals panel" → produit
  • Seuil d'auto-approve (confiance suffisante) → à calibrer empiriquement

Changelog

Date Note
2026-03-18 Création — boucle complète detect→propose→approve→update, seuils, format proposition, connexion BACT, vision long terme gravée