feat: preAlpha propagation — agent-types, contexts/, session-orchestrator, metabolism-scribe, helloWorld, _template type field

This commit is contained in:
2026-03-14 20:34:06 +01:00
parent 65ded4cc9d
commit b0056d6d1f
17 changed files with 2185 additions and 21 deletions

188
profil/workspace-spec.md Normal file
View File

@@ -0,0 +1,188 @@
# Workspace inter-sessions — Spécification
> **Type :** Contexte — propriétaire : `scribe`
> Dernière mise à jour : 2026-03-14
> Statut : v1.0 — première implémentation
---
## Origine — comment cette feature est née
Le workspace n'a pas été planifié. Il a émergé d'une observation faite pendant
le premier sprint dual-agent OriginsDigital (2026-03-14).
**Le problème observé en conditions réelles :**
```
Session backend a une question pour session frontend
→ backend écrit la question dans son output
→ humain lit
→ humain copy-paste vers frontend
→ frontend répond
→ humain copy-paste la réponse vers backend
→ backend continue
```
L'humain était le **relay** entre deux sessions qui ne pouvaient pas se parler.
Ce relay prenait du temps, introduisait des erreurs de transcription, et
empêchait toute coordination autonome.
**L'insight :**
Les sessions ont besoin d'un espace partagé — volatile pendant le sprint,
persistant comme trace après. Exactement comme de la RAM dans un ordinateur :
rapide, structurée, vidée à la fin de l'exécution (sauf archivage explicite).
**Pourquoi c'est limpide rétrospectivement :**
Le brain a déjà `handoffs/` (snapshot fin de session) et
`progression/journal/` (bilan pédagogique). Il manquait le **pendant**
l'espace vivant où les sessions coexistent et coopèrent.
```
handoffs/ → snapshot APRÈS (ce qui a été fait)
progression/journal → bilan APRÈS (ce qu'on a appris)
workspace/ → vivant PENDANT (ce qui se passe maintenant)
```
Le workspace est la troisième pièce qui complète le triptyque.
---
## Principe cardinal
> **Un agent qui travaille ne charge qu'une seule section du workspace.**
> Jamais le workspace entier.
La valeur du workspace est nulle si chaque session doit tout lire pour
trouver ce qui la concerne. Les droits de lecture ne sont pas optionnels —
ils sont la colonne vertébrale du système.
---
## Structure
```
brain/workspace/
<projet>-<sprint>/
README.md → métadonnées, lifecycle, mode actif — 10 lignes max
ram.md → état live + questions inter-sessions (volatile)
log.md → décisions + audit trail (persistant)
feedback.md → retours post-sprint (jamais lu en sprint actif)
```
Un workspace par sprint. Pas par session, pas par projet global.
La granularité sprint est le bon niveau : assez court pour rester léger,
assez long pour capturer un arc de travail complet.
---
## Droits de lecture — par rôle
| Section | Worker | Supervisor | Coach-scribe |
|---------|--------|------------|--------------|
| `ram.md` | ✅ obligatoire | ✅ | ❌ |
| `log.md` | sur demande explicite | ✅ obligatoire | ✅ |
| `feedback.md` | ❌ jamais en sprint | ❌ jamais en sprint | ✅ après TTL |
**Règle d'or :** le worker charge `ram.md` au boot si un workspace actif existe.
Il ne charge `log.md` que si le supervisor le lui demande explicitement.
`feedback.md` n'existe pas pour lui pendant le sprint.
---
## Lifecycle — champ `archive` dans README.md
```yaml
## Lifecycle
ttl: 7d
archive: auto | keep | 30d | 90d | permanent
```
| Valeur | Comportement |
|--------|-------------|
| `auto` | TTL standard → archivé dans `handoffs/` → supprimé |
| `keep` | Suspend l'archivage — humain décide quand |
| `30d` / `90d` | Retention custom après fermeture du sprint |
| `permanent` | Jamais supprimé — devient référence documentaire |
**Qui gère le lifecycle :** `coach-scribe` — lit le champ `archive` au TTL expiry.
Si `keep` → notifie le supervisor pour décision humaine.
---
## Graduation par mode (`brain-compose.yml`)
Le contenu actif du workspace dépend du mode déclaré :
| Mode | Sections actives | Usage |
|------|-----------------|-------|
| `prod` | `ram.md` (state + questions) + `log.md` (décisions) | Sprint standard |
| `dev` | Tout | Expérimentation libre |
| `review` | `log.md` + resources ponctuels — pas de `ram` | Code review |
| `brainstorm` | `log.md` + `feedback.md` — pas de `ram` | Conception |
| `debug` | `ram.md` (state uniquement) + `log.md` | Debug focalisé |
---
## Anti-embourbage — règles dures
```
TTL workspace = durée sprint + 7 jours (défaut)
Max ram.md = 50 lignes actives (au-delà = stale, purger les résolus)
Max log.md = 1 ligne par décision — pas de justification longue ici
feedback.md = géré en session dédiée post-sprint par coach-scribe
Sections custom = interdites — seulement README + ram + log + feedback
```
**Pourquoi pas de sections custom :** chaque section custom crée un nouveau
droit de lecture à définir, un nouveau template à maintenir, une nouvelle
règle de chargement. Le coût explose vite. Si un besoin ne rentre pas dans
les 3 sections → c'est soit un handoff, soit un signal BSI.
---
## Valeur post-sprint
Le workspace archivé répond à la question : **"pourquoi on a fait ça ?"**
```
Dans 3 mois, on revient sur OriginsDigital.
Pourquoi /auth/me retourne roles[] ?
→ workspace/originsdigital-sprint2/log.md ligne 4 :
"2026-03-14 15:xx | Option 1 vs 2 — enrichir /auth/me | choisi : Option 1
| raison : un seul appel, coût DB négligeable à cette échelle"
```
Pas besoin de fouiller le git log, pas besoin de se souvenir.
Le workspace archivé EST la documentation du raisonnement.
---
## Connexion aux autres systèmes
| Système | Relation |
|---------|----------|
| `BRAIN-INDEX.md ## Signals` | Coordination légère — workspace est la couche lourde |
| `handoffs/` | Snapshot final — workspace est le live |
| `progression/journal/` | Bilan pédagogique — workspace est le raw material |
| `brain-compose.yml` | Mode actif → détermine les sections actives du workspace |
| `coach-scribe` | Gère le lifecycle et alimente `feedback.md` post-sprint |
---
## Templates
Voir `brain/workspace/_template/` :
- `README.md` — métadonnées + lifecycle
- `ram.md` — état live + questions
- `log.md` — décisions + audit trail
- `feedback.md` — retours post-sprint
---
## Changelog
| Date | Version | Changement |
|------|---------|------------|
| 2026-03-14 | 1.0 | Création — émergé du sprint dual-agent OriginsDigital, triptyque pendant/après/après, 3 sections, droits de lecture, graduation modes, anti-embourbage |