feat: brain-compose v0.4.0 — modes + detectmode + helloWorld Phase 4
This commit is contained in:
@@ -24,11 +24,14 @@ Charge l'agent helloWorld — lis brain/agents/helloWorld.md et prépare le brie
|
||||
| Fichier | Pourquoi |
|
||||
|---------|----------|
|
||||
| `brain/PATHS.md` | Résolution des chemins machine |
|
||||
| `brain-compose.local.yml` | Instance active + feature_set — filtre les agents disponibles |
|
||||
| `brain/BRAIN-INDEX.md` | Scan CHECKPOINT avant briefing — reprise si session interrompue |
|
||||
| `brain-compose.local.yml` | Instance active + feature_set + mode déclaré |
|
||||
| `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 |
|
||||
| `brain/focus.md` | État des projets actifs |
|
||||
| `brain/todo/README.md` | Index des intentions |
|
||||
| `brain/todo/*.md` | Todos actifs — seuls les ⬜ et ⚠️ comptent |
|
||||
| `brain/MYSECRETS` | Secrets machine — chargé silencieusement. Jamais affiché. |
|
||||
|
||||
Puis exécuter silencieusement pour état des repos :
|
||||
|
||||
@@ -41,10 +44,34 @@ git -C ~/Dev/Docs/progression status --short
|
||||
> Si un chemin est absent : "Information manquante — vérifier PATHS.md"
|
||||
|
||||
**Ordre de lecture obligatoire :**
|
||||
1. `brain-compose.local.yml` → identifier instance active + feature_set
|
||||
2. `BRAIN-INDEX.md ## Signals` → détecter CHECKPOINT avant tout briefing
|
||||
3. Si CHECKPOINT trouvé → afficher avant le briefing standard
|
||||
4. Sinon → briefing standard
|
||||
1. `brain-compose.local.yml` → instance active + feature_set + mode déclaré
|
||||
2. `BRAIN-INDEX.md ## Signals` → détecter CHECKPOINT
|
||||
3. `BRAIN-INDEX.md ## Claims` → détecter sessions parallèles actives
|
||||
4. `MYSECRETS` → charger silencieusement
|
||||
5. Résoudre le mode actif (voir `## Résolution du mode actif` ci-dessous)
|
||||
6. Si CHECKPOINT trouvé → afficher avant le briefing standard
|
||||
7. Sinon → briefing standard
|
||||
|
||||
## Règle MYSECRETS — non négociable
|
||||
|
||||
**Ne jamais demander un secret dans le chat. Sans exception.**
|
||||
|
||||
Comportement si des valeurs sont vides dans MYSECRETS pour le projet actif :
|
||||
|
||||
```
|
||||
⚠️ Secrets manquants : <projet>.<KEY>, <projet>.<KEY>
|
||||
→ "Remplis brain/MYSECRETS dans ton éditeur, puis dis-moi quand c'est fait."
|
||||
→ [attendre]
|
||||
→ Re-lire MYSECRETS
|
||||
→ Continuer
|
||||
```
|
||||
|
||||
Si l'utilisateur propose de dicter un secret dans le chat :
|
||||
→ Refuser. Rappeler : "Édite directement brain/MYSECRETS — jamais dans le chat."
|
||||
|
||||
Après que l'utilisateur a rempli MYSECRETS lui-même :
|
||||
→ Proposer de gérer les prochaines écritures dans MYSECRETS automatiquement si souhaité.
|
||||
→ Ne pas insister si refus.
|
||||
|
||||
---
|
||||
|
||||
@@ -79,6 +106,7 @@ Puis briefing standard :
|
||||
Bonjour. Voici l'état du système — <DATE>.
|
||||
|
||||
Instance : <brain_name>@<machine> [<feature_set>]
|
||||
Mode actif : <mode> (<contrainte principale si non-prod>)
|
||||
|
||||
Projets actifs
|
||||
<projet> <état emoji> <description courte>
|
||||
@@ -92,6 +120,9 @@ Prochain todo prioritaire
|
||||
⚠️ Alertes
|
||||
<items ⚠️ dans focus.md ou todo/> — vide si rien
|
||||
|
||||
Sessions actives ← afficher uniquement si claims BSI présents
|
||||
<sess-id@machine> claim sur <fichier> — depuis <TTL>
|
||||
|
||||
État des repos
|
||||
brain/ → ✅ propre / ⚠️ X fichiers non commités
|
||||
progression/ → ✅ propre / ⚠️ X fichiers non commités
|
||||
@@ -116,6 +147,48 @@ Concis. Pas de commentaire. Juste les faits. La dernière ligne est toujours une
|
||||
|
||||
> Règle : si le signal est clair → charger sans demander. Si ambigu → une question, pas un formulaire.
|
||||
|
||||
## Résolution du mode actif
|
||||
|
||||
**Priorité (la plus haute gagne) :**
|
||||
```
|
||||
1. Déclaration explicite en session "mode: dev" dans le message
|
||||
2. detectmode signaux détectés au boot
|
||||
3. brain-compose.local.yml mode: <valeur> dans l'instance active
|
||||
4. safe default prod
|
||||
```
|
||||
|
||||
**detectmode — signaux :**
|
||||
```
|
||||
agents [vps, ci-cd, pm2] dans le contexte → deploy
|
||||
agents [code-review, frontend-stack] → review-front
|
||||
agents [code-review, security] → review-back
|
||||
agent [debug] → debug
|
||||
mot "brainstorm" dans la session → brainstorm
|
||||
agents [coach] + progression/ → coach
|
||||
claim BSI type HANDOFF ouvert → HANDOFF
|
||||
aucun signal fort → prod
|
||||
```
|
||||
|
||||
**Comportement detectmode :**
|
||||
- Si mode détecté ≠ mode déclaré dans brain-compose.local.yml → afficher la proposition
|
||||
- Format : `Mode détecté : deploy — confirmer ? (mode déclaré : prod)`
|
||||
- L'utilisateur confirme, surcharge, ou laisse passer → mode actif retenu pour la session
|
||||
|
||||
**Affichage dans le briefing :**
|
||||
```
|
||||
Mode actif : prod
|
||||
Invariants → confirmation requise
|
||||
Brain write → désactivé
|
||||
|
||||
# Si sessions parallèles détectées (## Claims BSI) :
|
||||
Sessions actives
|
||||
<sess-id@machine> claim sur <fichier> — depuis <TTL>
|
||||
```
|
||||
|
||||
> Si aucun claim actif → ne pas afficher la section Sessions actives (ne pas alourdir le briefing propre)
|
||||
|
||||
---
|
||||
|
||||
## Feature flags — filtrage agents (Phase 3)
|
||||
|
||||
helloWorld lit le `feature_set` de l'instance active depuis `brain-compose.local.yml` et ne suggère que les agents disponibles dans ce tier.
|
||||
@@ -229,3 +302,5 @@ Ne pas invoquer si :
|
||||
|------|------------|
|
||||
| 2026-03-13 | Création — majordome bootstrap, briefing standard, détection hybride, git status 3 repos, vision CLAUDE.md minimal |
|
||||
| 2026-03-14 | Phase 3 — lecture feature_set (brain-compose.local.yml), filtrage agents par tier, scan CHECKPOINT avant briefing, Instance dans le briefing |
|
||||
| 2026-03-14 | MYSECRETS — chargement silencieux au démarrage, jamais affiché, disponible en session |
|
||||
| 2026-03-14 | Phase 4 — système de modes : résolution priorité 4 niveaux, detectmode, affichage mode dans briefing, lecture ## Claims BSI (sessions parallèles visibles au boot) |
|
||||
|
||||
@@ -2,7 +2,162 @@
|
||||
# Versionné dans le kernel. Schema + feature flags + registre agents.
|
||||
# Géré par l'agent brain-compose — ne pas éditer manuellement.
|
||||
|
||||
version: "0.3.0"
|
||||
version: "0.4.0"
|
||||
|
||||
# ---
|
||||
# Modes — comportement de session (permissions BSI + agents autorisés)
|
||||
# Priorité : déclaration explicite > detectmode > brain-compose.local.yml > prod (safe default)
|
||||
# ---
|
||||
|
||||
modes:
|
||||
|
||||
prod:
|
||||
description: "Session normale — Invariants protégés, écriture confirmée"
|
||||
permissions:
|
||||
invariant: confirm
|
||||
contexte: confirm
|
||||
reference: write
|
||||
personnel: write
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: "*"
|
||||
|
||||
dev:
|
||||
description: "Forge — pleine puissance, écriture libre sur le brain"
|
||||
permissions:
|
||||
invariant: confirm # même en dev, les Invariants demandent confirmation
|
||||
contexte: write
|
||||
reference: write
|
||||
personnel: write
|
||||
brain_write: true
|
||||
forge: true
|
||||
agents: "*"
|
||||
|
||||
toolkit-only:
|
||||
description: "Croissance autonome — toolkit source unique, docs officielles si inconnu"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: toolkit-scribe-only
|
||||
forge: false
|
||||
docs_fetch: ask # always | ask | never
|
||||
agents: [toolkit-scribe, debug, code-review]
|
||||
behavior: |
|
||||
Pattern connu dans toolkit → agit seul
|
||||
Pattern inconnu → docs officielles (selon docs_fetch) → toolkit-scribe écrit
|
||||
Jamais d'invention
|
||||
|
||||
brainstorm:
|
||||
description: "Réflexion scopée — pas d'écriture système"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: scope-only
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: [brainstorm, coach]
|
||||
|
||||
coach:
|
||||
description: "Mentorat — progression en écriture, brain en lecture"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: write
|
||||
brain_write: progression-only
|
||||
forge: false
|
||||
agents: [coach, coach-scribe, scribe]
|
||||
|
||||
deploy:
|
||||
description: "Déploiement — agents infra uniquement"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: [vps, ci-cd, pm2, secrets-guardian]
|
||||
|
||||
debug:
|
||||
description: "Debug — lecture + agents debug"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: scope-only
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: [debug, code-review]
|
||||
|
||||
projet-audit:
|
||||
description: "Audit lecture seule — todo-scribe uniquement en écriture"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: todo-scribe-only
|
||||
forge: false
|
||||
agents: [coach, agent-review]
|
||||
|
||||
review-front:
|
||||
description: "Review frontend"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: [code-review, frontend-stack, testing]
|
||||
|
||||
review-back:
|
||||
description: "Review backend/sécu"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: false
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: [code-review, security, testing]
|
||||
|
||||
HANDOFF:
|
||||
description: "Reprise propre depuis une session précédente"
|
||||
permissions:
|
||||
invariant: false
|
||||
contexte: scope-only
|
||||
reference: read
|
||||
personnel: false
|
||||
brain_write: false
|
||||
forge: false
|
||||
agents: "*"
|
||||
|
||||
# ---
|
||||
# detectmode — helloWorld détecte le mode selon les signaux de session
|
||||
# ---
|
||||
|
||||
detectmode:
|
||||
signals:
|
||||
- match: [vps, ci-cd, pm2]
|
||||
mode: deploy
|
||||
- match: [code-review, frontend-stack]
|
||||
mode: review-front
|
||||
- match: [code-review, security]
|
||||
mode: review-back
|
||||
- match: [debug]
|
||||
mode: debug
|
||||
- match: [brainstorm]
|
||||
mode: brainstorm
|
||||
- match: [coach, progression]
|
||||
mode: coach
|
||||
- bsi_claim: HANDOFF
|
||||
mode: HANDOFF
|
||||
default: prod
|
||||
|
||||
# ---
|
||||
# Feature sets — contrôlent les agents invocables par instance
|
||||
@@ -76,3 +231,6 @@ changelog:
|
||||
- version: "0.3.0"
|
||||
date: "2026-03-14"
|
||||
notes: "orchestrator-scribe (free), brain-compose+config-scribe (pro), CHECKPOINT signal, session-as-identity, orchestration-patterns"
|
||||
- version: "0.4.0"
|
||||
date: "2026-03-14"
|
||||
notes: "Système de modes — 11 modes, permissions BSI par mode, detectmode, toolkit-only autonome avec docs_fetch"
|
||||
|
||||
Reference in New Issue
Block a user