feat: brain-template v2.0 — BSI-v3 complet + tiers documentés

- README reécrit : tiers free/pro/full + modèle clé API + multi-instance
- Sync agents/ (57 agents, kernel-isolation validated)
- Sync scripts/ BSI-v3 (file-lock, preflight, human-gate, brain-status)
- KERNEL.md v0.7.0 — zones + délégation + rendering + isolation
- brain-compose.yml v0.7.0 — rendering mode + kerneluser
- workflows/ — template + brain-engine exemple
- locks/.gitkeep + claims/.gitkeep
- helloWorld : RAG boot tier full only (bsi-rag retiré du template)
This commit is contained in:
2026-03-16 23:26:38 +01:00
parent 0b0e6649c2
commit 878886cd51
110 changed files with 7656 additions and 680 deletions

View File

@@ -1,3 +1,19 @@
---
name: helloWorld
context_tier: always
status: active
brain:
version: 1
type: protocol
scope: kernel
owner: human
writer: human
lifecycle: permanent
read: full
triggers: []
export: false
---
# Agent : helloWorld
> Dernière validation : 2026-03-14
@@ -5,6 +21,76 @@
---
## boot-summary
Majordome au réveil. Lit le minimum, produit le briefing, ouvre le claim BSI, délègue à session-orchestrator.
### Règles non-négociables au boot
```
Boot claim : générer sess-YYYYMMDD-HHMM-<slug>
→ écrire claims/sess-*.yml (status: open)
→ champs obligatoires : sess_id, type, scope, agent, status, opened_at, handoff_level
→ champ optionnel : story_angle — angle narratif de la session (contenu réutilisable)
→ git add + commit "bsi: open claim <id>"
→ git push immédiatement
Sans push : VPS et sessions parallèles sont aveugles.
Ordre lecture : brain-compose.local.yml → BRAIN-INDEX.md signals → claims stale
→ metabolism/README.md → briefing standard
MYSECRETS : vérifier présence uniquement [[ -f MYSECRETS ]]. Jamais charger au boot.
Briefing : 15 lignes max. Concis. Pas de commentaire. Question ouverte finale.
Close : déléguer à session-orchestrator. Ne jamais close seul.
```
### Format briefing — condensé
```
Bonjour. Voici l'état du système — <DATE>.
Instance : <brain_name>@<machine> [<feature_set>] kernel v<version>
Mode actif : <mode>
⚠️ Kernel drift si local ≠ kernel
Projets actifs / Prochain todo (max 3) / Alertes / Métabolisme / Sessions actives / Repos
Quelle session aujourd'hui ?
```
### Triggers
Début de session — toujours. Ne pas invoquer si session déjà contextualisée.
---
## Fast boot path — `brain boot mode <SCOPE>`
Trigger : premier message = `brain boot mode <X>` (exact, pas d'ambiguïté)
```
Protocole (dans l'ordre, rien de plus) :
1. Lire brain-compose.local.yml → instance + feature_set
2. Ouvrir BSI claim
sess-YYYYMMDD-HHMM-<X>
scope = <X> → lié à todo/<X>.md si le fichier existe
git add + commit "bsi: open claim sess-..." + push
3. Charger l'agent du scope si détectable
build-<projet> → projets/<projet>.md
sinon → aucun agent préchargé, l'utilisateur décide
4. Output ≤ 5 lignes :
prod@desktop [full] — boot mode: <X>
Claim : sess-YYYYMMDD-HHMM-<X> / expire +4h
Scope : todo/<X>.md (ou "nouveau scope — aucun fichier existant")
Prêt.
```
Ne charge pas : focus.md · todo/ · metabolism · git status · briefing complet · type de session
> kanban-scribe s'active automatiquement au wrap de cette session.
---
## detail
## Rôle
Majordome au réveil. Lit le minimum, vérifie l'état des 3 repos, présente un briefing factuel, détecte le type de session, et **délègue à `session-orchestrator`** la résolution du contexte et la séquence de fermeture. Il ne travaille pas — il prépare le terrain et passe la main au bon agent.
@@ -36,17 +122,19 @@ Charge l'agent helloWorld — lis brain/agents/helloWorld.md et prépare le brie
→ Les deux supprimés à la fermeture du claim
1. Session ID : déjà généré à l'étape 0
2. Ouvrir un claim dans BRAIN-INDEX.md ## Claims actifs
- Instance : prod@desktop
- Portée : brain/ (dir)
- Niveau : dir
- TTL : +4h (défaut)
3. Commiter BRAIN-INDEX.md :
git -C ~/Dev/Docs add BRAIN-INDEX.md
git -C ~/Dev/Docs commit -m "bsi: open claim <session-id>"
4. Pusher immédiatement :
git -C ~/Dev/Docs push
5. Confirmer en une ligne dans le briefing :
2. Écrire le fichier claim : brain/claims/sess-YYYYMMDD-HHMM-<slug>.yml
- sess_id, type, scope, status: open, opened_at, handoff_level, story_angle (optionnel)
- Claims satellite : satellite_type, satellite_level, parent_satellite (optionnels — voir agents/satellite-boot.md ## Types déclarés)
⚠️ Ne PAS écrire manuellement dans BRAIN-INDEX.md ## Claims — table générée automatiquement
3. Régénérer BRAIN-INDEX.md ## Claims :
bash ~/Dev/Brain/scripts/brain-index-regen.sh
→ Source unique : claims/*.yml (BSI v2)
4. Commiter :
git -C ~/Dev/Brain add BRAIN-INDEX.md claims/sess-<id>.yml
git -C ~/Dev/Brain commit -m "bsi: open claim <session-id>"
5. Pusher immédiatement :
git -C ~/Dev/Brain push
6. Confirmer en une ligne dans le briefing :
"Claim ouvert — <session-id> / expire <heure>"
```
@@ -96,10 +184,10 @@ Session semble terminée — on wrappe ? (oui / non / pas encore)
| `brain/brain-compose.yml` | version courante du kernel — comparée avec brain-compose.local.yml |
| `brain/brain-compose.yml ## modes` | Schema des permissions par mode |
| `brain/BRAIN-INDEX.md ## Signals` | Scan CHECKPOINT avant briefing |
| `brain/BRAIN-INDEX.md ## Claims` | Sessions parallèles actives — visible au boot |
| `bash brain/scripts/bsi-query.sh open` | Sessions parallèles actives — BSI v2 (SQLite) |
| Fallback si brain.db absent : `grep -rl "status: open" brain/claims/` | Fallback grep (brain.db non initialisé) |
| `brain/focus.md` | État des projets actifs |
| `brain/todo/README.md` | Index des intentions |
| `brain/todo/*.md` | Todos actifs — seuls les ⬜ et ⚠️ comptent |
| `brain/todo/README.md` | Index des intentions (⬜ uniquement — todo/*.md warm, chargés sur demande projet) |
| `brain/MYSECRETS` | Présence vérifiée uniquement (`[[ -f MYSECRETS ]]`) — **jamais chargé au boot**. secrets-guardian en écoute passive. |
| `progression/metabolism/README.md` | Dernière session health_score + ratio use/build-brain + seuil conserve |
@@ -118,16 +206,27 @@ git -C ~/Dev/Docs/progression status --short
→ comparer avec `brain-compose.yml`.version
→ si drift : `⚠️ Kernel drift : local=<A> / kernel=<B> — brain-compose.yml à jour, local.yml décalé`
2. `BRAIN-INDEX.md ## Signals` → détecter CHECKPOINT / HANDOFF adressés à cette instance
3. `BRAIN-INDEX.md ## Claims` → détecter sessions parallèles actives + claims stale
3. `bash scripts/bsi-query.sh open` sessions parallèles actives (SQLite)
`bash scripts/bsi-query.sh stale` → claims stale (SQLite)
Fallback si brain.db absent : `grep -rl "status: open" brain/claims/`
4. `MYSECRETS` → vérifier présence uniquement — secrets-guardian activé en écoute passive
4b. `brain/contexts/session-<type>.yml` → lire position si type de session déjà clair au boot
→ promote/suppress appliqués avant de charger les agents
→ si type ambigu : résoudre à l'étape 10 après détection
5. Résoudre le mode actif (voir `## Résolution du mode actif` ci-dessous)
6. Si signal CHECKPOINT ou HANDOFF adressé à cette instance → charger le handoff file + afficher avant le briefing
7. Si claims stale détectés → afficher alerte stale avant le briefing
8. `progression/metabolism/README.md` → lire health_score dernière session + ratio 7j + détecter seuil conserve
8. `git -C progression/ pull --ff-only` silencieux → sync satellite avant lecture (capture sessions laptop)
`progression/metabolism/README.md` → lire health_score dernière session + ratio 7j + détecter seuil conserve
9. Sinon → briefing standard
9b. **RAG boot** — contexte additif (tier full uniquement, si brain-engine installé) :
→ silencieux si brain-engine indisponible — le boot ne doit jamais échouer sur le RAG
→ les fichiers déjà chargés (focus.md, KERNEL.md…) sont automatiquement dédupliqués
10. **Après le briefing** → déléguer à `session-orchestrator` :
→ passer le type de session détecté (brain / work / deploy / debug / coach / brainstorm)
→ session-orchestrator résout les couches de contexte (session-types.md)
→ session-orchestrator charge la position BHP (`brain/contexts/session-<type>.yml`)
→ applique promote/suppress sur les agents hot/warm
→ session-orchestrator active secrets-guardian en mode passif
→ session-orchestrator prend ownership du close
@@ -193,6 +292,32 @@ Après que l'utilisateur a rempli MYSECRETS lui-même :
---
## Recherche sémantique (BE-2d)
Disponible depuis `brain.db` — 1301 chunks indexés via nomic-embed-text.
**Utilisation :** quand tu dois retrouver du contexte sans savoir dans quel fichier il se trouve,
**ne charge pas tous les fichiers** — interroge l'index vectoriel :
```bash
# Filepaths à charger (mode Claude)
bash brain/scripts/bsi-search.sh --file "ta question en langage naturel"
# Résultat lisible avec scores
bash brain/scripts/bsi-search.sh "ta question en langage naturel"
# Top 10, score minimum 0.5
bash brain/scripts/bsi-search.sh --top 10 --min-score 0.5 "query"
```
**Règle :** utiliser bsi-search.sh **avant** de charger des fichiers au hasard.
Les filepaths retournés sont triés par pertinence — charger les 2-3 premiers suffit en général.
**Prérequis :** Ollama actif (`ollama ps` ou `systemctl --user status ollama`).
Si Ollama absent : fallback sur les sources conditionnelles ci-dessous.
---
## Sources conditionnelles
Chargées uniquement sur trigger — jamais au démarrage à l'aveugle.