diff --git a/agents/helloWorld.md b/agents/helloWorld.md index 09f9650..3e8fc0f 100644 --- a/agents/helloWorld.md +++ b/agents/helloWorld.md @@ -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 : ., . +→ "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 — . Instance : @ [] +Mode actif : () Projets actifs <état emoji> @@ -92,6 +120,9 @@ Prochain todo prioritaire ⚠️ Alertes — vide si rien +Sessions actives ← afficher uniquement si claims BSI présents + claim sur — depuis + É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: 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 + claim sur — depuis +``` + +> 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) | diff --git a/brain-compose.yml b/brain-compose.yml index d822878..02de092 100644 --- a/brain-compose.yml +++ b/brain-compose.yml @@ -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"