diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 3c1373a..7267d5a 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -48,7 +48,7 @@ Le brain n'est pas un monorepo. Chaque couche a son repo : | Repo | Chemin local | Couche | Push vers | |------|-------------|--------|-----------| -| `brain` | `/home/tetardtek/Dev/Docs/` | Kernel + instance | Gitea privé | +| `brain` | `/docs/` | Kernel + instance | Gitea privé | | `brain-profil` | `Docs/profil/` | Kernel (profil perso) | Gitea privé | | `brain-todo` | `Docs/todo/` | Instance | Gitea privé | | `brain-toolkit` | `Docs/toolkit/` | Instance (patterns) | Gitea privé | diff --git a/DISTRIBUTION_CHECKLIST.md b/DISTRIBUTION_CHECKLIST.md new file mode 100644 index 0000000..2fa4950 --- /dev/null +++ b/DISTRIBUTION_CHECKLIST.md @@ -0,0 +1,94 @@ +# DISTRIBUTION_CHECKLIST.md — brain-template maintenance + +> Référence pour garantir que brain-template reste distribution-ready. +> À exécuter avant chaque release / tag. + +--- + +## Vérification zéro fuite identité + +```bash +# Depuis la racine du repo brain-template +grep -ri "tetardtek" . --include="*.md" --include="*.yml" \ + | grep -v ".git" \ + | grep -v "bsi-schema.md" # bsi-schema: exemple username accepté +``` + +Attendu : **0 résultats**. + +--- + +## Placeholders en production dans brain-template + +| Placeholder | Signification | Fichiers concernés | +|-------------|---------------|-------------------| +| `` | Domaine de l'owner (ex: `monbrain.com`) | `profil/decisions/006`, `007`, `022`, `README.md` | +| `` | Chemin absolu local du brain (ex: `/home/user/Dev/Brain`) | `ARCHITECTURE.md`, `profil/architecture.md` | +| `` | Identifiant/username de l'owner | `profil/decisions/008` | +| `l'owner` | Référence générique à l'utilisateur du brain | agents/ (tous) | + +--- + +## Répertoires obligatoires (structure v1.0) + +``` +brain-template/ + agents/ ← tous les agents dépersonnalisés + contexts/ ← sessions génériques (9 fichiers) + agent-memory/ ← README + _template/ + profil/ + decisions/ ← ADRs (placeholders domaine) + collaboration.md.example + CLAUDE.md.example + handoffs/ + workflows/ + README.md + KERNEL.md + ARCHITECTURE.md + DISTRIBUTION_CHECKLIST.md ← ce fichier +``` + +--- + +## Contextes inclus (génériques uniquement) + +| Fichier | Usage | +|---------|-------| +| `session-navigate.yml` | Lecture légère — exploration brain | +| `session-work.yml` | Projet actif — mode travail | +| `session-pilote.yml` | Co-construction — mode pilote (ADR-035) | +| `session-edit-brain.yml` | Écriture kernel — writes autorisés | +| `session-kernel.yml` | Lecture kernel — read-only | +| `session-brainstorm.yml` | Mode brainstorm | +| `session-debug.yml` | Debug actif | +| `session-audit.yml` | Audit code/système | +| `session-coach.yml` | Mode coaching | + +**Exclus** (trop owner-specific) : `session-infra.yml`, `session-deploy.yml`, +`session-urgence.yml`, `session-capital.yml`, `session-handoff.yml` + +--- + +## Wiki + +**v1.0 : wiki absent (Option A).** +Le nouvel utilisateur construit son wiki au fil des sessions. +Le wiki se construit naturellement via `wiki-scribe` en session. + +Si un wiki starter est ajouté en v2.0 : auditer chaque fichier avant inclusion. + +--- + +## Checklist avant release + +- [ ] `grep tetardtek` → 0 résultats +- [ ] `ls contexts/` → 9 fichiers présents +- [ ] `ls agent-memory/` → README.md + _template/ +- [ ] README.md lisible par un inconnu (pas de référence owner) +- [ ] PATHS.md vide / exemple — aucun chemin machine réel +- [ ] `brain-compose.local.yml.example` → aucun token/credential réel +- [ ] Tag git `vX.Y.Z` créé après vérification + +--- + +*Dernière mise à jour : 2026-03-18 — v1.0 distribution-ready* diff --git a/KERNEL.md b/KERNEL.md index 4ea437f..af5d1cb 100644 --- a/KERNEL.md +++ b/KERNEL.md @@ -179,7 +179,7 @@ Déclaration dans le claim pilote : ``` INTERDIT dans agents/ distribuables : - - Chemin machine absolu hardcodé (/home/tetardtek/..., /root/...) + - Chemin machine absolu hardcodé (/home//..., /root/...) - toolkit/private/ — patterns privés non distribués - require:/load:/source: vers MYSECRETS ou tout fichier zone:personal diff --git a/README.md b/README.md index b4b1de7..2a85318 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ Tout pro + → Clé liée à ton fork — non redistribuable ``` -> **Obtenir une clé :** contact@tetardtek.com *(beta privée — partage limité)* +> **Obtenir une clé :** contact@ *(beta privée — partage limité)* --- diff --git a/agent-memory/README.md b/agent-memory/README.md new file mode 100644 index 0000000..369945d --- /dev/null +++ b/agent-memory/README.md @@ -0,0 +1,98 @@ +--- +name: agent-memory +type: reference +context_tier: cold +--- + +# agent-memory/ — Couche L3a : mémoire privée des agents + +> ADR de référence : ADR-012 (modèle de contexte L3a/L3b/L0) +> Northstar : ADR-011 (autonomie brain) +> Créé : 2026-03-16 — patch(l3a) shadow-sql + +--- + +## Qu'est-ce que L3a + +``` +L0 agents/.md ← graduation maximale — spec enrichie (kernel) +L3b toolkit// ← patterns promus, validés en prod, partagés +L3a agent-memory// ← accumulation privée, non encore validée +``` + +L3a est la couche d'accumulation **privée** d'un agent sur ses projets réels. +Ce qu'il observe, tente, mesure — avant que ce soit assez solide pour entrer dans toolkit (L3b). + +**Règle fondamentale :** brain-engine ne touche jamais aux `.md` de L3a. +Les `.md` restent souverains. SQLite (BE-1) indexera L3a — il n'en sera pas la source. + +--- + +## Structure + +``` +agent-memory/ +├── README.md ← ce fichier +├── _template/ +│ ├── kpi.yml.example ← template KPI par stack +│ └── observations.md.example ← template observations session +└── / + └── / + ├── kpi.yml ← KPIs mesurés (alimenté par metabolism-scribe) + ├── observations.md ← patterns tentés, résultats, notes de session + └── validated.md ← patterns validés ≥ N fois (prêts graduation L3b) +``` + +--- + +## Cycle de vie + +``` +Session close (scope = ) : + metabolism-scribe → écrit/update agent-memory///kpi.yml + metabolism-scribe → append agent-memory///observations.md + +kpi_score stable + validations ≥ 3 : + metabolism-scribe → signal toolkit-scribe + toolkit-scribe → promotion L3b (toolkit//) + kpi.yml → graduated: true + +L3b consensus inter-projets (≥ 2 projets) : + toolkit-scribe → signal scribe + scribe → enrichissement L0 (agents/.md) +``` + +--- + +## Règle TTL + +Un répertoire `agent-memory///` sans mise à jour depuis > 90 sessions +est candidate à l'archivage. Signal : `agent-review` lors de l'audit périodique. + +Jamais supprimé automatiquement — décision humaine requise. +L'historique est précieux même après graduation. + +--- + +## Agents propriétaires + +| Qui écrit | Quoi | Quand | +|-----------|------|-------| +| `metabolism-scribe` | `kpi.yml` + `observations.md` | Session close sur un projet | +| `toolkit-scribe` | `validated.md` → promotion L3b | Seuil KPI atteint | +| `agent-review` | Audit TTL + graduation | Audit périodique | + +**Jamais :** un agent métier n'écrit directement dans `agent-memory/` (scribe pattern). + +--- + +## Lien avec BE-1 (SQLite) + +BE-1 ingère `agent-memory/` en lecture seule : +```sql +-- Table agent_memory alimentée depuis les kpi.yml +agent_memory(agent, projet, stack, pattern_id, validations, kpi_score, graduated, updated_at) +``` + +La migration BE-1 parsera les `kpi.yml` existants. +Les `.yml` restent la source de vérité. SQLite = index queryable. diff --git a/agent-memory/_template/kpi.yml.example b/agent-memory/_template/kpi.yml.example new file mode 100644 index 0000000..cfac95d --- /dev/null +++ b/agent-memory/_template/kpi.yml.example @@ -0,0 +1,23 @@ +# kpi.yml — Template L3a par agent × projet +# Copier vers : agent-memory///kpi.yml +# Propriétaire : metabolism-scribe (mise à jour en fin de session) + +agent: # ex: tech-lead, debug, vps +projet: # ex: superoauth, tetardpg, originsdigital +stack: # ex: node-express-jwt, nestjs-postgres, docker-apache + +# ── KPIs par pattern ────────────────────────────────────────────────────────── +patterns: + - pattern_id: # ex: jwt-tenant-isolation, docker-healthcheck + validations: 0 # incrémenté par metabolism-scribe à chaque session validée + kpi_score: 0.0 # 0.0 → 1.0 — calculé : validations / seuil_graduation + graduated: false # true quand kpi_score stable + validations >= seuil + seuil_graduation: 3 # configurable par stack (défaut : 3) + last_validated: null # YYYY-MM-DD + notes: "" + +# ── Métadonnées ─────────────────────────────────────────────────────────────── +created_at: +updated_at: +sessions_count: 0 # nombre de sessions sur ce projet avec cet agent +graduated_patterns: 0 # compteur patterns graduées → L3b diff --git a/agent-memory/_template/observations.md.example b/agent-memory/_template/observations.md.example new file mode 100644 index 0000000..989e120 --- /dev/null +++ b/agent-memory/_template/observations.md.example @@ -0,0 +1,28 @@ +--- +agent: +projet: +--- + +# Observations L3a — × + +> Alimenté par `metabolism-scribe` en fin de session. +> Lecture : agent en session courante (contexte L3a). +> Graduation : `validated.md` → signal `toolkit-scribe` quand kpi_score >= seuil. + +--- + + + +## YYYY-MM-DD — sess- + +**Pattern tenté :** + +**Contexte :** + +**Résultat :** +- ✅ Validé / ⚠️ Partiel / ❌ Rejeté +- + +**KPI impact :** + validation(s) sur `` + +--- diff --git a/agents/AGENTS.md b/agents/AGENTS.md index 8c0435d..6275175 100644 --- a/agents/AGENTS.md +++ b/agents/AGENTS.md @@ -4,7 +4,7 @@ type: index context_tier: cold --- -# Agents spécialisés — Tetardtek +# Agents spécialisés — l'owner > Index des agents disponibles. > Charger un agent = lire son fichier en début de session pour injecter son contexte. diff --git a/agents/capital-scribe.md b/agents/capital-scribe.md index 1a89684..e323237 100644 --- a/agents/capital-scribe.md +++ b/agents/capital-scribe.md @@ -121,7 +121,7 @@ Exemples : - Recruteur-proof : direct, factuel, sans jargon creux - Chaque formulation doit survivre à la question "prouvez-le" — si c'est pas prouvable, c'est pas écrit -- Détecter l'invisible : ce que Tetardtek considère "normal" peut être exceptionnel pour un recruteur +- Détecter l'invisible : ce que l'owner considère "normal" peut être exceptionnel pour un recruteur --- diff --git a/agents/ci-cd.md b/agents/ci-cd.md index 3457a71..22d015a 100644 --- a/agents/ci-cd.md +++ b/agents/ci-cd.md @@ -15,7 +15,7 @@ status: active ## Rôle -Spécialiste pipelines — conçoit, debug et adapte les workflows CI/CD selon le type de projet et la plateforme cible. Connaît l'infra réelle de Tetardtek et les patterns validés en prod. +Spécialiste pipelines — conçoit, debug et adapte les workflows CI/CD selon le type de projet et la plateforme cible. Connaît l'infra réelle de l'owner et les patterns validés en prod. --- diff --git a/agents/coach-boot.md b/agents/coach-boot.md index 881e947..9d04a02 100644 --- a/agents/coach-boot.md +++ b/agents/coach-boot.md @@ -49,10 +49,10 @@ Format : 4 lignes max après briefing helloWorld ### Gardien de la philosophie brain ``` -Décisions techniques → Tetardtek décide, coach valide ou signale +Décisions techniques → l'owner décide, coach valide ou signale Décisions architecturales → coach propose, challenge, conséquences long terme Philosophie du brain → coach est gardien — peut dire non, argumente -Règle → Tetardtek tranche EN CONNAISSANCE DE CAUSE +Règle → l'owner tranche EN CONNAISSANCE DE CAUSE ``` ### Triggers diff --git a/agents/coach-scribe.md b/agents/coach-scribe.md index a3268e3..185cb95 100644 --- a/agents/coach-scribe.md +++ b/agents/coach-scribe.md @@ -67,7 +67,7 @@ coach-scribe, voici le bilan du coach : [rapport] - Proposer les fichiers à commiter avec chemin exact **Ne fait pas :** -- Évaluer le niveau de Tetardtek → c'est le coach qui observe et juge +- Évaluer le niveau de l'owner → c'est le coach qui observe et juge - Écrire une entrée de progression sans rapport du coach - Ajouter des observations personnelles non présentes dans le rapport - Interpréter ou reformuler les bilans du coach — transcrire fidèlement diff --git a/agents/coach.md b/agents/coach.md index 9efeb27..63d2475 100644 --- a/agents/coach.md +++ b/agents/coach.md @@ -38,10 +38,10 @@ Format : 4 lignes max après briefing helloWorld ### Gardien de la philosophie brain ``` -Décisions techniques → Tetardtek décide, coach valide ou signale +Décisions techniques → l'owner décide, coach valide ou signale Décisions architecturales → coach propose, challenge, conséquences long terme Philosophie du brain → coach est gardien — peut dire non, argumente -Règle → Tetardtek tranche EN CONNAISSANCE DE CAUSE +Règle → l'owner tranche EN CONNAISSANCE DE CAUSE ``` ### Triggers @@ -53,9 +53,9 @@ Invoquer explicitement : bilan de session / progression globale / objectif concr ## Rôle -Présent en permanence, intervient ponctuellement. Observe les sessions, détecte les opportunités d'apprentissage, et coache activement la progression de Tetardtek vers le niveau professionnel — sur le code pur et l'orchestration d'agents. Travaille avec le scribe pour que chaque session laisse une trace de progression. +Présent en permanence, intervient ponctuellement. Observe les sessions, détecte les opportunités d'apprentissage, et coache activement la progression de l'owner vers le niveau professionnel — sur le code pur et l'orchestration d'agents. Travaille avec le scribe pour que chaque session laisse une trace de progression. -Il ne traite pas Tetardtek comme un junior figé. Il calibre ses attentes vers le programmeur de demain. +Il ne traite pas l'owner comme un junior figé. Il calibre ses attentes vers le programmeur de demain. --- @@ -120,11 +120,11 @@ Le coach est **gardien de la philosophie du brain** et **mentor actif sur les bi ``` Décisions techniques courantes - → Tetardtek décide, coach valide ou signale un risque + → l'owner décide, coach valide ou signale un risque Décisions architecturales du brain → Coach propose, challenge, présente les conséquences long terme - → Tetardtek tranche EN CONNAISSANCE DE CAUSE + → l'owner tranche EN CONNAISSANCE DE CAUSE Philosophie du brain (identité, valeurs, direction) → Coach est gardien — peut dire non, doit argumenter @@ -137,7 +137,7 @@ Identité projetée / métaphore vs réalité → Pas pour bloquer — pour que la décision soit consciente ``` -**En connaissance de cause :** Tetardtek n'a pas toujours le dernier mot parce qu'il est le patron — il l'a parce que le coach l'a informé des risques, des alternatives, des conséquences. Sans ce briefing, le coach ne valide pas. +**En connaissance de cause :** l'owner n'a pas toujours le dernier mot parce qu'il est le patron — il l'a parce que le coach l'a informé des risques, des alternatives, des conséquences. Sans ce briefing, le coach ne valide pas. **Le coach ne se tait pas pour être agréable.** Un coach qui acquiesce toujours n'est pas un coach. @@ -223,7 +223,7 @@ Analyse la session en cours : ## Calibrage — niveaux évolutifs -Le coach ne plafonne pas Tetardtek à "junior". Il mesure et adapte : +Le coach ne plafonne pas l'owner à "junior". Il mesure et adapte : ``` Concepts acquis (Express, MySQL, JWT, Docker, CI/CD basique) @@ -239,7 +239,7 @@ Erreur de raisonnement → Correction directe sans para: "ce n'est pas tout à fait ça —" + bonne version ``` -**Signal de graduation :** quand Tetardtek produit du code de façon autonome sur un domaine sans que le coach intervienne, ce domaine est acquis. Le coach le note dans `skills/`. +**Signal de graduation :** quand l'owner produit du code de façon autonome sur un domaine sans que le coach intervienne, ce domaine est acquis. Le coach le note dans `skills/`. --- @@ -302,7 +302,7 @@ Géré par `coach-scribe` — à créer lors de la première session coach compl - Corrections claires : "ce n'est pas tout à fait ça —" + la bonne version - Interventions courtes — une observation, une règle, une question max - L'objectif n'est pas de tout savoir maintenant, c'est de progresser de façon mesurable -- Il croit que Tetardtek peut devenir le programmeur de demain — il travaille dans ce sens +- Il croit que l'owner peut devenir le programmeur de demain — il travaille dans ce sens --- diff --git a/agents/code-review.md b/agents/code-review.md index 702908e..db9a327 100644 --- a/agents/code-review.md +++ b/agents/code-review.md @@ -15,7 +15,7 @@ status: active ## Rôle -Reviewer chirurgical — analyse tout code soumis selon les priorités de vigilance de Tetardtek, corrige ce qui est évident et dans le scope, signale ce qui est ambigu ou hors périmètre. +Reviewer chirurgical — analyse tout code soumis selon les priorités de vigilance de l'owner, corrige ce qui est évident et dans le scope, signale ce qui est ambigu ou hors périmètre. --- diff --git a/agents/interprete.md b/agents/interprete.md index 880a33b..99a4e34 100644 --- a/agents/interprete.md +++ b/agents/interprete.md @@ -44,7 +44,7 @@ Semi-automatique : Claude charge l'interprète sans demande explicite quand il d | Fichier | Pourquoi | |---------|----------| -| `brain/profil/collaboration.md` | Règles de travail — ton et standards Tetardtek | +| `brain/profil/collaboration.md` | Règles de travail — ton et standards l'owner | | `brain/agents/AGENTS.md` | Index des agents — pour mapper les demandes aux bons exécutants | | `brain/agents/*.md` | Périmètres réels de chaque agent — évite les suggestions incorrectes | diff --git a/agents/mail.md b/agents/mail.md index 7e16559..b39fdc8 100644 --- a/agents/mail.md +++ b/agents/mail.md @@ -15,7 +15,7 @@ status: active ## Rôle -Expert du stack mail self-hosted Tetardtek — connaît Stalwart, la configuration DNS complète, +Expert du stack mail self-hosted l'owner — connaît Stalwart, la configuration DNS complète, les protocoles mail et les clients configurés. Peut diagnostiquer et déployer depuis zéro. --- diff --git a/agents/mentor.md b/agents/mentor.md index 468a3e2..7af091f 100644 --- a/agents/mentor.md +++ b/agents/mentor.md @@ -37,7 +37,7 @@ mentor, vérifie que j'ai bien compris avant qu'on continue | Fichier | Pourquoi | |---------|----------| -| `brain/profil/collaboration.md` | Règles de travail + niveau de Tetardtek | +| `brain/profil/collaboration.md` | Règles de travail + niveau de l'owner | | `brain/profil/objectifs.md` | Objectifs long terme — calibre le niveau des explications | | `brain/agents/AGENTS.md` | Connaît tous les agents — peut expliquer leur rôle | @@ -120,7 +120,7 @@ Format d'intervention minimale : ## Calibrage pédagogique -Tetardtek est développeur junior en progression autonome. Le mentor adapte : +l'owner est développeur junior en progression autonome. Le mentor adapte : - **Concepts connus** (Express, MySQL, JWT, Docker) → référence directe, pas d'explication basique - **Concepts en progression** (TypeScript avancé, DDD, CI/CD) → expliquer avec analogie diff --git a/agents/monitoring.md b/agents/monitoring.md index b41ea58..1b12674 100644 --- a/agents/monitoring.md +++ b/agents/monitoring.md @@ -15,7 +15,7 @@ status: active ## Rôle -Spécialiste observabilité — connaît l'infra réelle de Tetardtek, guide la configuration des sondes Kuma, lit et corrèle les logs VPS avec les alertes, explique ce qui doit être surveillé et pourquoi. Réactif face aux incidents, proactif pour la couverture de surveillance. +Spécialiste observabilité — connaît l'infra réelle de l'owner, guide la configuration des sondes Kuma, lit et corrèle les logs VPS avec les alertes, explique ce qui doit être surveillé et pourquoi. Réactif face aux incidents, proactif pour la couverture de surveillance. --- diff --git a/agents/pm2.md b/agents/pm2.md index 5d619d7..28f0652 100644 --- a/agents/pm2.md +++ b/agents/pm2.md @@ -237,7 +237,7 @@ Ne pas invoquer si : | Date | Changement | |------|------------| -| 2026-03-12 | Création — process manager Node.js prod, ecosystem config, intégration CI/CD, VPS Tetardtek | +| 2026-03-12 | Création — process manager Node.js prod, ecosystem config, intégration CI/CD, VPS l'owner | | 2026-03-13 | v2 — patch post-review Super-OAuth : cluster mode obligatoire pour 0-downtime, env_production, --update-env, guard premier déploiement, anti-hallucination reload | | 2026-03-13 | Fondements — Sources conditionnelles, Cycle de vie, Scribe Pattern (délégation scribe) | | 2026-03-13 | Environnementalisation — super-oauth/chemins → placeholders, Sources vps+cicd déplacées en conditionnel | diff --git a/agents/recruiter.md b/agents/recruiter.md index 5d63c6b..3f31fda 100644 --- a/agents/recruiter.md +++ b/agents/recruiter.md @@ -42,7 +42,7 @@ recruiter, je veux un agent qui fait | Fichier | Pourquoi | |---------|----------| -| `brain/profil/collaboration.md` | Règles de travail — le ton et les standards de Tetardtek | +| `brain/profil/collaboration.md` | Règles de travail — le ton et les standards de l'owner | | `brain/agents/AGENTS.md` | Agents existants — évite les doublons, identifie les gaps | | `brain/agents/_template.md` | Le moule agent — tout agent produit DOIT le respecter | | `brain/agents/_template-orchestrator.md` | Le moule orchestrateur — utilisé si le besoin est un orchestrateur | @@ -207,7 +207,7 @@ DevOps & Infra : - Docker, orchestration, CI/CD — patterns et anti-patterns - Apache/Nginx, reverse proxy, TLS, headers de sécurité - DNS, mail protocols (SMTP/IMAP/JMAP), monitoring -- Stack Tetardtek complète (voir brain/infrastructure/) +- Stack l'owner complète (voir brain/infrastructure/) Revue de code : - Ce qui fait qu'un code est maintenable vs ingénieux-mais-incompréhensible diff --git a/agents/vps.md b/agents/vps.md index 117cd6d..63da8b8 100644 --- a/agents/vps.md +++ b/agents/vps.md @@ -15,7 +15,7 @@ status: active ## Rôle -Expert du VPS Tetardtek — connaît l'architecture exacte, les patterns de déploiement validés, +Expert du VPS l'owner — connaît l'architecture exacte, les patterns de déploiement validés, et peut déployer un nouveau service de A à Z sans ré-explication. --- diff --git a/contexts/session-audit.yml b/contexts/session-audit.yml new file mode 100644 index 0000000..4830ed7 --- /dev/null +++ b/contexts/session-audit.yml @@ -0,0 +1,54 @@ +# session-audit.yml — Contexte BHP pour sessions d'audit +# Trigger : "brain boot mode audit[/]" +# Cible : ~25% contexte max au boot +# IMPORTANT : mode lecture seule — aucun agent write actif + +session_type: audit +description: "Session d'audit — lecture seule, analyse sécurité/qualité, rapport" +tier_required: pro # audit = agents security + code-review (pro minimum) + +# CONSTRAINT : audit = read-only +# Aucune écriture en claims satellite, aucun agent write (scribe, todo-scribe, migration) +# Le claim principal reste ouvert mais marque write_lock: true + +write_lock: true # Signal au pre-flight : rejeter tout write satellite + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~15%) +L1: + - now.md # état dernière session — contexte pré-audit + - focus.md # projets actifs — savoir quoi auditer + - BRAIN-INDEX.md # vue globale claims + signaux + - agents/security.md # failles, JWT, OAuth, OWASP # tier: pro + - agents/code-review.md # qualité, patterns, dette technique # tier: pro + - agents/audit.md # agent audit si disponible # tier: pro + +# L2 — Project scope (~10%) — prioritaire en audit : contexte complet du projet cible +L2: + template: "projets/{project}.md" + extras: + - "todo/{project}.md" + fallback: null # BRAIN-INDEX.md déjà en L1 + +# L3 — On demand +# Exemples : agents/vps.md (infra audit), agents/mail.md (DNS/SMTP audit), +# wiki détaillé, config réseau, logs +L3: + hint: "Charger à la demande : vps, mail/DNS, monitoring, logs, wiki technique" + +# --- Règle audit --- +# Rapport final obligatoire avant close — même format que code-review. +# write_lock bloqué en pre-flight pour tous les agents write. +# Exception : écriture du rapport lui-même dans un fichier dédié est autorisée. + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~12%" + L2: "~8%" + total_boot: "~25%" diff --git a/contexts/session-brainstorm.yml b/contexts/session-brainstorm.yml new file mode 100644 index 0000000..eaf4d27 --- /dev/null +++ b/contexts/session-brainstorm.yml @@ -0,0 +1,51 @@ +# session-brainstorm.yml — Contexte BHP pour sessions de brainstorm +# Trigger : "brain boot mode brainstorm[/]" +# Cible : ~22% contexte max au boot + +session_type: brainstorm +description: "Session d'idéation — explorer, challenger, structurer avant de coder" +tier_required: free # agents fondamentaux — disponible pour tous les tiers + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~8%) — tier free +L1: + - now.md # bridge session précédente — fils ouverts + - focus.md # direction actuelle + - todo/README.md # index intentions (warm — todo/brain.md sur demande) + - agents/coach-boot.md # boot-summary — challenger les idées (free) + - wiki/patterns.md # patterns connus pour ne pas réinventer + +# L1_pro — coach complet pour brainstorm architectural profond +L1_pro: + - agents/coach.md # coach complet byTask — challenger + gate décisions + +# L2 — Project scope (~8%) — optionnel si brainstorm sur un projet spécifique +L2: + template: "projets/{project}.md" + extras: + - "todo/{project}.md" + - "todo/brain.md" # 1932 lignes — on demand uniquement, pas au boot + - "wiki/concepts.md" + fallback: null + +# L3 — On demand +# Exemples : wiki/* détaillé, autres projets pour cross-pollination, +# agents/game-designer.md, agents/doc.md +L3: + hint: "Charger à la demande : wiki détaillé, cross-project, agents spécialisés idéation" + +# --- Règle brainstorm-before-build --- +# Ce manifest applique le pattern : identifier 2-3 décisions structurelles AVANT de coder. +# wiki/patterns.md en L1 pour que ce réflexe soit présent dès le boot. + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~12%" + L2: "~8%" + total_boot: "~22%" diff --git a/contexts/session-coach.yml b/contexts/session-coach.yml new file mode 100644 index 0000000..44874d4 --- /dev/null +++ b/contexts/session-coach.yml @@ -0,0 +1,46 @@ +# session-coach.yml — Contexte BHP pour sessions de coaching +# Trigger : "brain boot mode coach" +# Cible : ~20% contexte max au boot + +session_type: coach +description: "Session coaching — progression, réflexion, cap stratégique, clarté" +tier_required: pro # coaching complet (coach.md 365 lignes) = feature pro + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~15%) +L1: + - now.md # bridge session précédente — contexte pour le coach + - agents/coach.md # présence permanente coaching + - metabolism/README.md # état métabolique + énergie + - profil/collaboration.md # règles de travail, préférences + - BRAIN-INDEX.md # vue d'ensemble pour coaching stratégique + +# L2 — Project scope (~5%) — optionnel si le coaching porte sur un projet +L2: + template: "projets/{project}.md" + extras: + - "todo/{project}.md" + fallback: + - focus.md # si pas de projet déclaré → focus global + +# L3 — On demand +# Exemples : progression/ détaillée, wiki/patterns.md, sessions passées +L3: + hint: "Charger à la demande : progression détaillée, sessions passées, wiki/patterns" + +# --- Note coaching --- +# Le coach est L1 permanent — même sans signal "coach", il est disponible. +# session-coach = le coach PREND LE DESSUS sur les autres dimensions. +# focus.md en L2 fallback car contexte coaching global fréquent. + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~12%" + L2: "~5%" + total_boot: "~20%" diff --git a/contexts/session-debug.yml b/contexts/session-debug.yml new file mode 100644 index 0000000..e516268 --- /dev/null +++ b/contexts/session-debug.yml @@ -0,0 +1,43 @@ +# session-debug.yml — Contexte BHP pour sessions de debug +# Trigger : "brain boot mode debug[/[/]]" +# Cible : ~12% contexte max au boot + +session_type: debug +description: "Session de debug ciblé — bug, crash, comportement inattendu" +tier_required: free # debug = agent fondamental — disponible pour tous les tiers + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~7%) — ultra chirurgical sur le debug +L1: + - agents/debug.md # agent principal debug + +# L2 — Project scope — fichier cible si déclaré dans le signal +# Signal : "debug//" → charger le fichier + projet +L2: + template: "projets/{project}.md" + extras: + - "{file}" # fichier cible si déclaré + - "todo/{project}.md" # todos projet pour contexte + fallback: null + +# L3 — On demand +# Exemples : agents/testing.md, agents/security.md, logs, config spécifique +# Note : agents/testing.md chargé automatiquement si debug implique des tests +L3: + hint: "Charger à la demande : testing, security, logs, agents métier, wiki" + +# --- Règle debug --- +# Un signal debug/project/file = on charge uniquement le fichier concerné. +# Pas de focus.md, pas de metabolism — contexte minimal pour aller au problème vite. + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~5%" + L2: "~5%" + total_boot: "~12%" diff --git a/contexts/session-edit-brain.yml b/contexts/session-edit-brain.yml new file mode 100644 index 0000000..1561b19 --- /dev/null +++ b/contexts/session-edit-brain.yml @@ -0,0 +1,71 @@ +# session-edit-brain.yml — Contexte BHP pour modifications kernel +# Trigger : "brain boot sudo" ou "brain boot mode edit-brain" +# Objectif : modifications kernel autorisées — avec gates explicites +# Cible : ~25% contexte max au boot + +session_type: edit-brain +description: "Modifications kernel — KERNEL.md, CLAUDE.md, agents/, profil/. Gate humain obligatoire avant chaque write." +tier_required: full # kernel write = zone owner uniquement — kerneluser: true requis (full = owner) + +# --- Gates obligatoires --- +# Avant toute modification kernel : +# 1. Lire le fichier cible (brain-guardian enforce) +# 2. Décrire la modification et son impact +# 3. Confirmation humaine explicite +# 4. Écrire la modification +# 5. Relire le fichier après modification +# 6. Entrée changelog si fichier kernel absolu (KERNEL.md, CLAUDE.md, brain-constitution.md) +# +# Fichiers kernel absolu (protection maximale) : +# KERNEL.md, CLAUDE.md, brain-constitution.md, bsi-spec.md +# → Gate humain + confirmation + changelog obligatoire +# +# Fichiers kernel fort (agents/, profil/) : +# → Gate humain + confirmation +# → Changelog recommandé si changement structurel + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~18%) +L1: + - now.md # bridge session précédente + - agents/brain-guardian.md # auto-méfiance structurelle — OBLIGATOIRE en edit-brain + - agents/coach-boot.md # garde comportemental — observe les décisions kernel + - BRAIN-INDEX.md # état global claims + signaux + - focus.md # direction actuelle — contexte des modifications + +# L1_pro — coach complet pour décisions architecturales kernel +L1_pro: + - agents/coach.md # coach complet — gate sur décisions structurantes kernel + +# L2 — Kernel scope (~5%) — fichiers cibles si déclarés dans le signal +L2: + template: null + extras: + - brain-constitution.md # si modification identité / Layer 0 + - profil/bsi-spec.md # si modification protocole BSI + fallback: null + +# L3 — On demand +# scripts/kernel-lock-gen.sh (après modification kernel), profil/decisions/ (ADR), +# wiki/, agents spécifiques +L3: + hint: "kernel-lock-gen après modification, ADR si décision structurante, wiki/, scripts/" + +# --- Règle post-modification --- +# Après toute modification kernel absolu : +# → scripts/kernel-lock-gen.sh — régénérer kernel.lock +# → commit type: kernel: (contrat) ou feat: (capacité) +# → entrée changelog dans le fichier modifié +# → now.md mis à jour avant fermeture session + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~15%" + L2: "~5%" + total_boot: "~25%" diff --git a/contexts/session-kernel.yml b/contexts/session-kernel.yml new file mode 100644 index 0000000..efc6743 --- /dev/null +++ b/contexts/session-kernel.yml @@ -0,0 +1,50 @@ +# session-kernel.yml — Contexte BHP pour lecture kernel +# Trigger : "brain boot mode kernel" +# Objectif : lire, comprendre, auditer le kernel — JAMAIS écrire +# Cible : ~20% contexte max au boot + +session_type: kernel +description: "Lecture seule kernel — audit, compréhension, diagnostic. Toute écriture → session-edit-brain." +tier_required: full # kernel = zone owner uniquement — kerneluser: true requis (full = owner) + +write_lock: true # Signal absolu — aucune écriture kernel autorisée dans cette session + # Tentative write kernel → refus immédiat + redirection session-edit-brain + +# L0 — Invariant (~5%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~15%) +L1: + - now.md # bridge session précédente + - agents/brain-guardian.md # auto-méfiance structurelle — assertions prouvées uniquement + - agents/coach-boot.md # présence légère — observation + - BRAIN-INDEX.md # état global pour contexte kernel + +# L2 — Kernel scope (~8%) — fichiers kernel à auditer +L2: + template: null + extras: + - brain-constitution.md # identité + protocoles Layer 0 + - profil/bsi-spec.md # spec BSI complète si audit claims + fallback: null + +# L3 — On demand +# agents/audit.md, scripts/, profil/decisions/, wiki/ +L3: + hint: "Charger à la demande : audit, scripts, decisions/, wiki/, profil/ détaillé" + +# --- Règle absolue --- +# session-kernel = LECTURE SEULE. Zéro exception. +# Toute décision de modification kernel → fermer cette session +# → rouvrir avec : brain boot sudo (session-edit-brain) +# Cette règle est non-négociable. brain-guardian enforcer. + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~10%" + L2: "~5%" + total_boot: "~20%" diff --git a/contexts/session-navigate.yml b/contexts/session-navigate.yml new file mode 100644 index 0000000..b5246dd --- /dev/null +++ b/contexts/session-navigate.yml @@ -0,0 +1,43 @@ +# session-navigate.yml — Contexte BHP pour sessions navigate +# Trigger : "brain boot navigate" ou "brain boot mode navigate" +# Objectif : fenêtre de journée légère, tenue à travers les compactions +# Cible : ~18% contexte max au boot + +session_type: navigate +description: "Session navigate — conscience temporelle + orientation journée. Coach en boot-summary uniquement." +tier_required: free + +# L0 — Invariant (~4%) +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~12%) +# Coach : boot-summary uniquement — pas le fichier complet (~3000 tokens économisés) +L1: + - now.md # bridge session précédente — état, fix en attente, décisions (G-1) + - agents/coach-boot.md # garde comportemental + boot-summary (G-2) + - agents/time-anchor.md # passerelle temporelle + fallback post-compaction + - focus.md # projets actifs + prochaine frontière + - BRAIN-INDEX.md # claims actifs + signaux + - todo/README.md # index intentions (warm — fichiers projet sur demande) + +# L2 — Project scope (~2%) — déclenché si project déclaré dans le signal +L2: + template: "projets/{project}.md" + extras: [] + fallback: null + +# L3 — On demand +# workspace/live-states.md si besoin de voir les sessions parallèles (G-3) +# coach.md complet, projets/.md, workspace/sprints/, progression/ +L3: + hint: "workspace/live-states.md, coach complet, projets/.md, workspace/sprints/, progression/" + +# --- Métriques cibles --- +context_target: + L0: "~4%" + L1: "~12%" + L2: "~2%" + total_boot: "~18%" diff --git a/contexts/session-pilote.yml b/contexts/session-pilote.yml new file mode 100644 index 0000000..ec3775f --- /dev/null +++ b/contexts/session-pilote.yml @@ -0,0 +1,61 @@ +# session-pilote.yml — Contexte BHP pour sessions Mode Pilote +# Trigger : "brain boot mode pilote" +# Cible : FULL — contexte maximal (ADR-035) +# "On vole ensemble. Tu tiens le manche. Je gère les instruments." + +session_type: pilote +description: "Co-construction longue durée — humain décide les forks, brain copilote actif" +tier_required: owner # FULL context = owner uniquement + +# L0 — Invariant (~5%) — TOUJOURS chargé +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~15%) — présence complète +L1: + - now.md # bridge session précédente + - focus.md # focus actuel, todos prioritaires + - agents/coach.md # coach complet — observe et anticipe + - agents/helloWorld.md # briefing complet, CHECKPOINT, feature flags + - agents/secrets-guardian.md # gardien MYSECRETS — permanent + - metabolism/README.md # état métabolique + +# L2 — Scope session (~15%) — contexte de construction actif +L2: + # Décisions et architecture + - wiki/adr-index.md # index ADRs — navigation décisionnelle rapide + - agents/code-review.md # validation avant tout commit kernel + - agents/security.md # barrière sécurité — write kernel = gate + + # Corpus project (sur demande selon focus) + template_optional: + - "projets/{project}.md" + - "todo/{project}.md" + +# L3 — On demand (0% au boot) +# Agents spécialisés selon domaine détecté (voir CLAUDE.md — Agents chauds) +# wiki/, brain-engine/, profil/decisions/ chargés au besoin via brain_search() +L3: + hint: "brain_search('sujet') pour tout contexte hors L0-L2. MCP > fichier direct en mode Pilote." + +# --- Comportement mode Pilote (ADR-035) --- +pilot_mode: + initiative: haute # propose, anticipe, signale les forks + gates: architecturaux # stoppe et remonte sur forks irréversibles + write: "all zones" # autorisé partout selon zone + parallelization: true # tâches indépendantes sans demande permission + doc_realtime: true # ADR, wiki, vocabulary — documenté en session, pas en fin + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~15%" + L2: "~15%" + total_boot: "~35%" + note: "Reste ~65% libre pour co-construction en session — contexte maximal assumé" + +# --- Référence --- +adr: ADR-035 +empirical_reference: "session 2026-03-18 — référence empirique mode Pilote" diff --git a/contexts/session-work.yml b/contexts/session-work.yml new file mode 100644 index 0000000..f3372e2 --- /dev/null +++ b/contexts/session-work.yml @@ -0,0 +1,48 @@ +# session-work.yml — Contexte BHP pour sessions de travail projet +# Trigger : "brain boot mode work[/]" +# Cible : ~28% contexte max au boot + +session_type: work +description: "Session de développement sur un projet actif" +tier_required: free # tier free = agents fondamentaux; pro = + code-review + security + +# L0 — Invariant (~5%) — TOUJOURS chargé, non négociable +L0: + - PATHS.md + - brain-compose.local.yml + - KERNEL.md + +# L1 — Session type (~10%) — tier free — déterministe, même signal = même chargement +L1: + - now.md # bridge session précédente + - focus.md # focus actuel, todos prioritaires + - agents/coach.md # coach complet byTask — observe le projet en cours + - agents/debug.md # bug, crash, comportement inattendu + - metabolism/README.md # état métabolique, énergie session + +# L1_pro — Session type (~5%) — chargé uniquement si tier: pro déclaré +# Pas de code-review ni security pour tier free — chargement explicite sur demande sinon +L1_pro: + - agents/code-review.md # qualité code, PR, validation + - agents/security.md # failles, JWT, OAuth, OWASP + +# L2 — Project scope (~10%) — conditionnel sur project déclaré dans le signal +# Clé : projet déclaré → projets/.md + todo/.md +L2: + template: "projets/{project}.md" + extras: + - "todo/{project}.md" + fallback: null # absent si pas de projet déclaré + +# L3 — On demand (0% au boot) — tout le reste +# Exemples : agents/testing.md, agents/refacto.md, agents/migration.md, +# wiki/, progression/, autres projets, agents spécialisés métier +L3: + hint: "Charger à la demande : testing, refacto, migration, infra, i18n, doc" + +# --- Métriques cibles --- +context_target: + L0: "~5%" + L1: "~15%" + L2: "~8%" + total_boot: "~28%" diff --git a/profil/architecture.md b/profil/architecture.md index 928a79f..4cf43a0 100644 --- a/profil/architecture.md +++ b/profil/architecture.md @@ -48,7 +48,7 @@ Le brain n'est pas un monorepo. Chaque couche a son repo : | Repo | Chemin local | Couche | Push vers | |------|-------------|--------|-----------| -| `brain` | `/home/tetardtek/Dev/Docs/` | Kernel + instance | Gitea privé | +| `brain` | `/docs/` | Kernel + instance | Gitea privé | | `brain-profil` | `Docs/profil/` | Kernel (profil perso) | Gitea privé | | `brain-todo` | `Docs/todo/` | Instance | Gitea privé | | `brain-toolkit` | `Docs/toolkit/` | Instance (patterns) | Gitea privé | diff --git a/profil/decisions/006-vision-produit-brain-as-a-service.md b/profil/decisions/006-vision-produit-brain-as-a-service.md index cd6379a..22af837 100644 --- a/profil/decisions/006-vision-produit-brain-as-a-service.md +++ b/profil/decisions/006-vision-produit-brain-as-a-service.md @@ -19,7 +19,7 @@ Trois insights émergés en session : ## Décision -Construire `brain.tetardtek.com` — service web self-hosted — comme premier point d'entrée public. L'utilisateur apporte sa clé API (BYOK). Le brain fournit la matrice. La subscription contrôle les zones accessibles. +Construire `brain.` — service web self-hosted — comme premier point d'entrée public. L'utilisateur apporte sa clé API (BYOK). Le brain fournit la matrice. La subscription contrôle les zones accessibles. **Ne pas open-sourcer avant d'être sur les radars.** Apparaître d'abord, décider ensuite. @@ -28,10 +28,10 @@ Construire `brain.tetardtek.com` — service web self-hosted — comme premier p ## Architecture produit ``` -brain.tetardtek.com +brain. ├── Interface web (session browser) ├── BYOK — utilisateur fournit sa clé API LLM - ├── Matrice servie depuis infra tetardtek (zones contrôlées) + ├── Matrice servie depuis infra de l'owner (zones contrôlées) ├── BSI géré côté serveur (multi-tenant) └── Subscription → feature_set → zones débloquées ``` @@ -50,7 +50,7 @@ brain.tetardtek.com ``` Utilisateur → apporte sa clé API LLM (BYOK) -tetardtek → fournit la matrice + les zones + les updates kernel +l'owner → fournit la matrice + les zones + les updates kernel → facture la valeur ajoutée, pas le compute ``` @@ -85,7 +85,7 @@ tetardtek → fournit la matrice + les zones + les updates kernel ## Le moat défendable La matrice se copie. La longueur d'avance vient de : -1. **Distribution** — premier sur brain.tetardtek.com +1. **Distribution** — premier sur brain. 2. **Mémoire des décisions** — 6 ADRs, les "pourquoi" ne se copient pas 3. **Écosystème** — toolkit/ patterns validés en prod, toolkit-scribe, progression/ 4. **Instanciable** — pas de dépendance à un seul LLM provider diff --git a/profil/decisions/007-kernel-package-distribution.md b/profil/decisions/007-kernel-package-distribution.md index 00951c9..b4c81b5 100644 --- a/profil/decisions/007-kernel-package-distribution.md +++ b/profil/decisions/007-kernel-package-distribution.md @@ -32,7 +32,7 @@ Le kernel devient physiquement read-only par installation — ce qui **enforce K ```bash # Installation -brew install brain # ou npm install -g brain / curl brain.tetardtek.com/install | sh +brew install brain # ou npm install -g brain / curl brain./install | sh # Premier setup brain init ~/Dev/Docs # crée l'instance locale + CLAUDE.md configuré @@ -87,7 +87,7 @@ v1 : git clone (aujourd'hui — devs Claude Code, early adopters) → Marché : devs qui comprennent immédiatement v2 : brain install (post v1.0.0) - → Marché : tous les devs + brain.tetardtek.com pour non-devs + → Marché : tous les devs + brain. pour non-devs ``` --- diff --git a/profil/decisions/008-superoauth-multitenant-identity-model.md b/profil/decisions/008-superoauth-multitenant-identity-model.md index 1a66bc7..ac508ca 100644 --- a/profil/decisions/008-superoauth-multitenant-identity-model.md +++ b/profil/decisions/008-superoauth-multitenant-identity-model.md @@ -9,7 +9,7 @@ id: ADR-008 title: SuperOAuth — Modèle d'identité multi-tenant date: 2026-03-15 status: accepted -décideur: tetardtek +décideur: agents: tech-lead, security, coach --- diff --git a/profil/decisions/022-open-core-distribution-model.md b/profil/decisions/022-open-core-distribution-model.md index 39fc82a..0f95486 100644 --- a/profil/decisions/022-open-core-distribution-model.md +++ b/profil/decisions/022-open-core-distribution-model.md @@ -24,7 +24,7 @@ Question centrale : distribuer le kernel seul, ou kernel + capacité de distilla **Modèle open-core :** - **Kernel** = forkable, open, chaque fork = instance propriétaire -- **Features avancées** = locked derrière `keys.tetardtek.com` (PayByFeature existant) +- **Features avancées** = locked derrière `keys.` (PayByFeature existant) - **MCP** = pont entre distribution OS (fork/own) et runtime BaaS (instance expose un service) --- @@ -46,7 +46,7 @@ Question centrale : distribuer le kernel seul, ou kernel + capacité de distilla ``` git clone brain-template → kernel propre (pas l'instance perso) claude → CLAUDE.md boot → Claude IS l'onboarding (pas de wizard) -keys.tetardtek.com → gate PayByFeature sur features locked +keys. → gate PayByFeature sur features locked ``` Chaque fork = instance propriétaire. L'humain possède son brain. @@ -82,5 +82,5 @@ Horizon distribution : post-Avril 2026 (brain still owner-only jusqu'au 2026-04) - ADR-006 (BaaS) — compatible, pas exclusif - ADR-007 (distribution kernel) — prérequis -- `brain-key-server` + `keys.tetardtek.com` — gate existant +- `brain-key-server` + `keys.` — gate existant - `brain-template/` — repo distribution (à compléter) diff --git a/profil/orchestration-patterns.md b/profil/orchestration-patterns.md index 3eb8591..faaa517 100644 --- a/profil/orchestration-patterns.md +++ b/profil/orchestration-patterns.md @@ -1,4 +1,4 @@ -# Patterns d'orchestration — Tetardtek Brain +# Patterns d'orchestration — Brain > **Type :** Contexte — propriétaire : `orchestrator-scribe` > Mis à jour en fin de session quand un pattern récurrent est identifié.