52980837a9
docs/need-review.md (cycle complet : états, sursis, gatekeeper, cron, review, rollback). CHLOVA_PHASE dans .env.example + compose (défaut 1). risk-tiers + README : application par phase. Compose revalidé, 45 tests, 0 vuln. Palier de risque : n/a (doc + config). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
# Paliers de risque
|
|
|
|
> Règle **non négociable**. Conditionne le sursis du cycle "need review".
|
|
> Le LLM **ne doit jamais** pouvoir reclasser un asset privilégié en réversible.
|
|
|
|
## Les deux paliers
|
|
|
|
### `reversible` — réversible / lecture seule
|
|
- Effet nul ou trivialement annulable, pas d'accès aux secrets, pas de mutation
|
|
d'infra.
|
|
- **7 jours de sursis PROVISOIRE autorisés** (exécutable pendant la fenêtre).
|
|
- Exemples : lister workflows n8n, lire l'état d'un conteneur, lister stacks,
|
|
inspecter (read-only), récupérer des logs.
|
|
|
|
### `privileged` — privilégié / destructeur
|
|
- **Aucun sursis** : l'asset est **BLOQUÉ** jusqu'à review explicite.
|
|
- Exemples : déploiement Portainer (stack/conteneur), montage de volume hôte,
|
|
accès à des secrets, suppression, exec dans un conteneur, modification réseau,
|
|
écriture/activation de workflow n8n, toute écriture sur l'infra.
|
|
|
|
## Classification
|
|
- Le palier est **déterminé par la nature de l'opération**, pas déclaré par le LLM.
|
|
- En cas de doute → **`privileged`** (fail-safe).
|
|
- La classification vit dans le code (table de correspondance outil/opération →
|
|
palier), versionnée et testée. Voir `orchestrator/src/gatekeeper/`.
|
|
|
|
## Invariant testé (anti-escalade)
|
|
- Un asset `privileged` **ne peut jamais** être réécrit en `reversible` par
|
|
l'agent. Tout changement de palier est une opération hors-agent (humain + commit).
|
|
- Ceci fait l'objet d'un test dédié (`gatekeeper.test.ts`) : tentative de
|
|
reclassement → rejet.
|
|
|
|
## Application par phase
|
|
- **Phase 1** (`CHLOVA_PHASE=1`, défaut) : seuls les outils `reversible`
|
|
(read-only) sont exposés ; les `privileged` ne sont pas branchés.
|
|
- **Phase 2** (`CHLOVA_PHASE=2`) : tous les outils exposés, mais chaque op
|
|
`privileged` passe par le **gatekeeper** (BLOQUÉ jusqu'à review). Voir
|
|
`docs/need-review.md`.
|