feat: preAlpha propagation — agent-types, contexts/, session-orchestrator, metabolism-scribe, helloWorld, _template type field
This commit is contained in:
188
profil/workspace-spec.md
Normal file
188
profil/workspace-spec.md
Normal 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 |
|
||||
Reference in New Issue
Block a user