Documentation du workflow de gouvernance ProbatioVault¶
Table des matières¶
- Partie 1 : Documentation fonctionnelle
- 1.1 Vue d'ensemble
- 1.2 Diagramme d'état global
- 1.3 Fiches détaillées des 10 étapes
- 1.4 Gates PMO
- 1.5 Étape 6 — Multi-agents
- 1.6 Mapping agents → LLM
- 1.7 Artefacts produits
- 1.8 Verdicts PMO
- Partie 2 : Documentation technique
- 2.1 Architecture des composants
- 2.2 Scripts principaux
- 2.3 Bibliothèques (scripts/lib/)
- 2.4 Templates de prompts
- 2.5 Templates de sortie
- 2.6 Définitions des agents
- 2.7 Commandes Claude
- 2.8 Gestion de l'état (WORKFLOW-STATE.md)
- 2.9 Arborescence des fichiers
Partie 1 : Documentation fonctionnelle¶
1.1 Vue d'ensemble¶
Principe architectural¶
Le workflow de gouvernance ProbatioVault suit une architecture multi-agents gouvernée résumée par la maxime :
Les agents produisent. Claude orchestre. Le PMO juge. L'humain tranche.
- Agents spécialisés : chaque domaine (développement, sécurité, QA, métier, conformité) est confié à un agent dédié qui travaille en isolation.
- Claude (orchestrateur) : coordonne les agents, assemble les prompts, confronte les documents. Il ne produit pas le code principal lui-même.
- PMO : rend des verdicts structurés aux gates (étapes 3, 5, 8) sur la base de dossiers de conformité factuels.
- L'humain : autorité de décision finale, sollicité uniquement par escalade.
Deux LLM utilisés¶
| LLM | Rôle | Mode d'invocation |
|---|---|---|
| Claude | Orchestration, exécution directe (steps 0, 4, 6, 9), confrontation, agents spécialisés | claude -p (automatisé) ou plugin VS Code |
| ChatGPT | Spécification, tests, reviews, acceptabilité, agents métier/compliance | Copier-coller manuel (prompt assemblé → presse-papier) |
Cycle de vie d'une user story¶
Chaque user story (format PD-XX) traverse 10 étapes séquentielles. Trois d'entre elles sont des gates PMO (étapes 3, 5, 8) qui peuvent bloquer le workflow. L'étape 6 est un workflow multi-agents décomposé en sous-étapes.
1.2 Diagramme d'état global¶
stateDiagram-v2
[*] --> Step0_Besoin
Step0_Besoin: 0 — Expression de besoin (Claude)
Step1_Spec: 1 — Spécification (ChatGPT)
Step2_Tests: 2 — Tests & Validation (ChatGPT)
Step3_Gate: 3 — Review spécification (Gate CONFORMITY_CHECK)
Step4_Plan: 4 — Plan d'implémentation (Claude)
Step5_Gate: 5 — Review plan (Gate AMBIGUITY)
Step6_Impl: 6 — Implémentation (Multi-agents)
Step7_Accept: 7 — Acceptabilité (ChatGPT)
Step8_Gate: 8 — Review acceptabilité (Gate CLOSURE)
Step9_Rex: 9 — Retour d'expérience (Claude)
Step0_Besoin --> Step1_Spec
Step1_Spec --> Step2_Tests
Step2_Tests --> Step3_Gate
Step3_Gate --> Step4_Plan: GO / RESERVE
Step3_Gate --> Step2_Tests: NON_CONFORME (rework)
Step3_Gate --> Escalade3: ESCALADE
Step4_Plan --> Step5_Gate
Step5_Gate --> Step6_Impl: GO / RESERVE
Step5_Gate --> Step4_Plan: NON_CONFORME (rework)
Step5_Gate --> Escalade5: ESCALADE
Step6_Impl --> Step7_Accept
Step7_Accept --> Step8_Gate
Step8_Gate --> Step9_Rex: GO / RESERVE
Step8_Gate --> Step6_Impl: NON_CONFORME (rework)
Step8_Gate --> Escalade8: ESCALADE
Step9_Rex --> [*]
state Step6_Impl {
[*] --> S6a_Decomposition
S6a_Decomposition: 6a — Décomposition
S6b_Agents: 6b — Agents spécialisés (1..N)
S6c_Synthese: 6c — Synthèse
S6a_Decomposition --> S6b_Agents
S6b_Agents --> S6c_Synthese
S6c_Synthese --> [*]
}
state Escalade3 {
[*] --> DecisionHumaine3: Décision humaine requise
}
state Escalade5 {
[*] --> DecisionHumaine5: Décision humaine requise
}
state Escalade8 {
[*] --> DecisionHumaine8: Décision humaine requise
} 1.3 Fiches détaillées des 10 étapes¶
Étape 0 — Expression de besoin¶
| Agent | Claude |
| Type | Exécution directe |
| Documents d'entrée | Aucun (étape initiale) |
| Artefact de sortie | PD-XX-besoin.md |
| Condition de validation | Fichier besoin sauvegardé dans le dossier epic |
| Condition de rejet | Aucune (pas de gate) |
Description : Claude agit comme agent de clarification neutre. Il structure le besoin brut de l'humain en un document normalisé : contexte, objectifs, non-objectifs, contraintes, scénarios d'échec, tensions, questions ouvertes. Il ne propose jamais de solution technique.
Étape 1 — Spécification¶
| Agent | ChatGPT |
| Type | Prompt assemblé (copier-coller) |
| Documents d'entrée obligatoires | Aucun |
| Documents d'entrée optionnels | besoin, epic |
| Artefact de sortie | PD-XX-specification.md |
| Template de sortie | PD-XX-specification.md (10 sections) |
| Condition de validation | Fichier specification sauvegardé |
| Condition de rejet | Aucune (pas de gate) |
Description : ChatGPT produit une spécification normative contractuelle structurée en 10 sections : objectif, périmètre, définitions, invariants, flux nominaux, cas d'erreur, critères d'acceptation, scénarios de test, hypothèses, points ouverts.
Étape 2 — Tests & Validation¶
| Agent | ChatGPT |
| Type | Prompt assemblé (copier-coller) |
| Documents d'entrée obligatoires | specification |
| Artefact de sortie | PD-XX-tests.md |
| Template de sortie | PD-XX-tests.md |
| Condition de validation | Fichier tests sauvegardé |
| Condition de rejet | Aucune (pas de gate) |
Description : ChatGPT produit les scénarios de test contractuels au format Given/When/Then, tracés vers les exigences de la spécification (TC-XX). Chaque invariant critique et règle de sécurité doit être couvert par au moins un test.
Étape 3 — Review spécification (Gate CONFORMITY_CHECK)¶
| Agent | ChatGPT + Gate PMO |
| Type | Gate PMO en 4 phases |
| Gate | CONFORMITY_CHECK |
| Documents d'entrée obligatoires | specification, tests |
| Artefact de sortie principal | PD-XX-specification-review.md |
| Artefacts secondaires | PD-XX-confrontation-step3.md, PD-XX-dossier-conformite-step3.md, PD-XX-verdict-step3.yaml |
| Condition de validation | Verdict GO ou RESERVE |
| Condition de rejet | Verdict NON_CONFORME → workflow en pause |
| Escalade | Verdict ESCALADE → décision humaine requise |
Description : Cette gate vérifie la complétude et la testabilité de la spécification. ChatGPT produit la review, puis Claude confronte spec et tests automatiquement, le dossier de conformité est assemblé, et l'humain rend un verdict structuré.
Étape 4 — Plan d'implémentation¶
| Agent | Claude |
| Type | Exécution directe |
| Documents d'entrée obligatoires | specification, tests |
| Documents d'entrée optionnels | specification-review, verdict-step3 |
| Artefact de sortie principal | PD-XX-plan.md |
| Artefact secondaire | PD-XX-code-contracts.yaml |
| Template de sortie | PD-XX-plan.md (10 sections) |
| Condition de validation | Plan + code contracts sauvegardés |
| Condition de rejet | Aucune (pas de gate) |
Description : Claude produit le plan d'implémentation technique (composants, flux, mapping invariants→mécanismes, mapping tests→observables) et un fichier code-contracts.yaml qui définit les frontières de code par module : agent responsable, interfaces, invariants, patterns interdits, périmètre fichiers.
Étape 5 — Review plan (Gate AMBIGUITY)¶
| Agent | ChatGPT + Gate PMO |
| Type | Gate PMO en 4 phases |
| Gate | AMBIGUITY |
| Documents d'entrée obligatoires | specification, tests, plan |
| Documents d'entrée optionnels | specification-review, plan-review, code-contracts, verdict-step3 |
| Artefact de sortie principal | PD-XX-plan-review.md |
| Artefacts secondaires | PD-XX-confrontation-step5.md, PD-XX-dossier-conformite-step5.md, PD-XX-verdict-step5.yaml |
| Condition de validation | Verdict GO ou RESERVE |
| Condition de rejet | Verdict NON_CONFORME → workflow en pause |
| Escalade | Verdict ESCALADE → décision humaine requise |
Description : Cette gate vérifie que le plan d'implémentation n'introduit pas d'hypothèses non déclarées ni d'ambiguïtés par rapport à la spécification. La review inclut aussi l'audit des code contracts (complétude, cohérence des frontières, invariants).
Étape 6 — Implémentation (Multi-agents)¶
| Agent | Claude (orchestrateur) + agents spécialisés |
| Type | Workflow multi-agents en 3 sous-étapes |
| Documents d'entrée obligatoires | specification, tests, plan, code-contracts.yaml |
| Documents d'entrée optionnels | specification-review, plan-review, verdict-step5 |
| Artefact de sortie principal | Code intégré dans le projet cible |
| Artefacts secondaires | PD-XX-decomposition.md, PD-XX-agent-{nom}-{module}.md (1 par agent/module) |
| Condition de validation | Sous-étapes 6a, 6b-1..N, 6c toutes DONE |
| Condition de rejet | Manifest absent ou agent en échec |
Description : Voir section 1.5 Étape 6 — Multi-agents pour le détail du sous-workflow.
Étape 7 — Acceptabilité¶
| Agent | ChatGPT |
| Type | Prompt assemblé (copier-coller) |
| Documents d'entrée obligatoires | specification, tests, plan |
| Artefact de sortie | PD-XX-acceptability.md |
| Template de sortie | PD-XX-acceptability.md |
| Condition de validation | Fichier acceptability sauvegardé |
| Condition de rejet | Aucune (pas de gate) |
Description : ChatGPT réalise un audit d'acceptabilité qui confronte l'implémentation à la spécification et aux tests. Il rend un verdict interne (REFUSÉ / ACCEPTÉ AVEC RÉSERVES / ACCEPTÉ) et classifie les écarts éventuels (BLOQUANT / MAJEUR / MINEUR).
Étape 8 — Review acceptabilité (Gate CLOSURE)¶
| Agent | ChatGPT + Gate PMO |
| Type | Gate PMO en 4 phases |
| Gate | CLOSURE |
| Documents d'entrée obligatoires | specification, tests, acceptability |
| Documents d'entrée optionnels | acceptability-review, confrontation-step8 |
| Artefact de sortie principal | PD-XX-acceptability-review.md |
| Artefacts secondaires | PD-XX-confrontation-step8.md, PD-XX-dossier-conformite-step8.md, PD-XX-verdict-step8.yaml |
| Condition de validation | Verdict GO ou RESERVE |
| Condition de rejet | Verdict NON_CONFORME → workflow en pause |
| Escalade | Verdict ESCALADE → décision humaine requise |
Description : Gate de clôture. Vérifie que l'implémentation est conforme à la spécification, que tous les tests contractuels passent et que les écarts identifiés à l'acceptabilité ont été traités. Inclut la confrontation avec les livrables agents si disponibles.
Étape 9 — Retour d'expérience¶
| Agent | Claude |
| Type | Exécution directe |
| Documents d'entrée obligatoires | specification, plan, acceptability |
| Documents d'entrée optionnels | tests, rex, verdict-step8 |
| Artefact de sortie | PD-XX-rex.md |
| Template de sortie | PD-XX-rex.md |
| Condition de validation | Fichier rex sauvegardé + revue documentaire 12/12 OK |
| Condition de rejet | Revue documentaire incomplète (documents MD ou YAML manquants) |
Description : Claude documente les décisions techniques prises, la dette technique introduite, les risques identifiés et les améliorations potentielles. Ce document est en append-only (chaque passage ajoute, ne remplace pas).
Post-REX obligatoire (avant clôture Jira) :
- Mettre à jour
data/metrics.jsonl(gate scores, iterations, deviations) - Régénérer
GOVERNANCE-METRICS.md - Exécuter la revue documentaire automatique :
Vérifie les 12 documents obligatoires (6 MD + 6 YAML) : besoin, specification, tests, plan, acceptability, rex. Retourne exit 0 (clôture autorisée) ou exit 1 (clôture bloquée). Appelé automatiquement par gov-workflow.sh.
- Si
exit 0: Transition Jira → Done (31) avec le commentaire généré par le script.
1.4 Gates PMO¶
Les gates sont les étapes 3, 5 et 8. Elles constituent les points de contrôle qualité du workflow. Chaque gate suit un processus en 4 phases :
Diagramme de séquence d'une gate¶
sequenceDiagram
participant H as Humain
participant C as Claude (orchestrateur)
participant GPT as ChatGPT
participant PMO as PMO (verdict)
Note over C: Phase 1 — Review ChatGPT
C->>C: Assemble le prompt de review
C->>H: Copie le prompt dans le presse-papier
H->>GPT: Colle le prompt dans ChatGPT
GPT->>GPT: Analyse et produit la review
H->>H: Sauvegarde la review dans le dossier epic
Note over C: Phase 2 — Confrontation automatique
C->>C: Assemble le prompt de confrontation
C->>C: Exécute via claude -p
C->>C: Produit PD-XX-confrontation-stepN.md
Note right of C: Identifie convergences,<br/>divergences, zones d'ombre
Note over C: Phase 3 — Dossier de conformité
C->>C: Collecte tous les artefacts existants
C->>C: Extrait les hypothèses du plan
C->>C: Référence le rapport de confrontation
C->>C: Produit PD-XX-dossier-conformite-stepN.md
Note over C,PMO: Phase 4 — Verdict PMO
C->>H: Présente le menu de verdict
H->>PMO: Choisit GO / RESERVE / NON_CONFORME / ESCALADE
H->>PMO: Saisit la raison et l'action requise
PMO->>PMO: Génère PD-XX-verdict-stepN.yaml
PMO->>C: Retourne le code de sortie (0 / 2 / 3) Types de gates¶
| Étape | Type de gate | Objectif |
|---|---|---|
| 3 | CONFORMITY_CHECK | Vérifier la complétude et la testabilité de la spécification |
| 5 | AMBIGUITY | Vérifier que le plan ne contient pas d'hypothèses non déclarées |
| 8 | CLOSURE | Valider la conformité finale de l'implémentation |
Documents confrontés par gate¶
| Gate | Documents confrontés |
|---|---|
| 3 | specification ↔ tests |
| 5 | specification ↔ tests ↔ plan ↔ code-contracts |
| 8 | specification ↔ tests ↔ acceptability ↔ plan + livrables agents |
1.5 Étape 6 — Multi-agents¶
L'étape 6 est le cœur de l'implémentation. Elle est décomposée en 3 sous-étapes orchestrées par Claude.
Diagramme d'état du step 6¶
stateDiagram-v2
[*] --> S6a
state "6a — Décomposition" as S6a {
[*] --> LirePlan: Lire plan + code contracts
LirePlan --> Decouper: Découper en tâches par agent
Decouper --> SauverManifest: Sauver PD-XX-decomposition.md
SauverManifest --> InitSubsteps: Créer sous-étapes dans WORKFLOW-STATE.md
InitSubsteps --> [*]
}
state "6b — Agents spécialisés" as S6b {
[*] --> Boucle
Boucle --> Agent_N: Pour chaque tâche du manifest
Agent_N --> CheckLLM: Déterminer le LLM (claude/chatgpt)
CheckLLM --> AssemblerPrompt: Assembler prompt agent
AssemblerPrompt --> ExecClaude: Si claude → claude -p
AssemblerPrompt --> ExecChatGPT: Si chatgpt → presse-papier
ExecClaude --> SauverLivrable
ExecChatGPT --> SauverLivrable
SauverLivrable --> Boucle: Tâche suivante
Boucle --> [*]: Toutes les tâches terminées
}
state "6c — Synthèse" as S6c {
[*] --> CollecterLivrables: Collecter tous les livrables agents
CollecterLivrables --> Assembler: Assembler + vérifier cohérence
Assembler --> CodeFinal: Produire le code intégré
CodeFinal --> [*]
}
S6a --> S6b
S6b --> S6c
S6c --> [*] Déroulement détaillé¶
6a — Décomposition : Claude lit le plan d'implémentation et les code contracts, puis découpe le travail en tâches isolées. Chaque tâche est assignée à un agent spécialisé avec un périmètre fichiers précis. Le résultat est un manifest (PD-XX-decomposition.md) qui liste toutes les tâches.
6b — Agents spécialisés : Pour chaque tâche du manifest : 1. L'agent reçoit un prompt contenant : son système prompt (identité), le code contract de son module, la spécification, les tests, le plan, et la description de sa tâche. 2. Si l'agent est mappé sur claude → exécution automatique via claude -p. 3. Si l'agent est mappé sur chatgpt → le prompt est copié dans le presse-papier, l'humain le colle dans ChatGPT et sauvegarde la réponse. 4. Chaque agent produit un livrable : PD-XX-agent-{nom}-{module}.md.
6c — Synthèse : Claude reçoit tous les livrables agents, la spec, les tests, le plan et les code contracts. Il assemble le code final dans le projet cible en vérifiant la cohérence, en résolvant les conflits mineurs (style, nommage) et en signalant les conflits majeurs (logique, interfaces).
Isolation des agents¶
Les agents ne communiquent jamais entre eux. Chaque agent travaille en isolation avec uniquement : - Son système prompt (rôle, contraintes) - Le code contract de son module (interfaces, invariants, fichiers autorisés) - Les documents de référence (spec, tests, plan) - La description de sa tâche
Claude est le seul médiateur entre les agents.
1.6 Mapping agents → LLM¶
| Agent | LLM | Rôle |
|---|---|---|
agent-developer | claude -p | Production de code, implémentation principale |
agent-adversarial | claude -p | Red team, review sécurité, détection de vulnérabilités |
agent-sre | claude -p | Infrastructure, déploiement, monitoring |
agent-qa-unit-integration | claude -p | Tests unitaires et d'intégration |
agent-qa-ihm | claude -p | Tests IHM (Playwright, XCUITest) |
agent-qa | claude -p | QA généraliste |
agent-release-manager | claude -p | Préparation de release |
agent-documentation-maintainer | claude -p | Maintenance documentaire |
agent-metier | ChatGPT | Validation fonctionnelle métier (RAG / corpus documentaire) |
agent-compliance-auditor | ChatGPT | Conformité normative (RGPD, eIDAS, FIPS, OWASP) |
agent-architect | ChatGPT | Review d'architecture |
Les agents claude -p sont exécutés automatiquement. Les agents ChatGPT nécessitent un copier-coller manuel.
1.7 Artefacts produits¶
| Artefact | Format | Étape | Description |
|---|---|---|---|
PD-XX-besoin.md | MD | 0 | Expression de besoin structurée |
PD-XX-specification.md | MD | 1 | Spécification normative contractuelle |
PD-XX-tests.md | MD | 2 | Scénarios de test contractuels (GWT) |
PD-XX-specification-review.md | MD | 3 | Rapport de review de la spécification |
PD-XX-plan.md | MD | 4 | Plan d'implémentation technique |
PD-XX-code-contracts.yaml | YAML | 4 | Frontières de code par module |
PD-XX-plan-review.md | MD | 5 | Rapport de review du plan |
PD-XX-decomposition.md | MD | 6a | Manifest de décomposition multi-agents |
PD-XX-agent-{nom}-{module}.md | MD | 6b | Livrable d'un agent spécialisé |
PD-XX-acceptability.md | MD | 7 | Rapport d'acceptabilité |
PD-XX-acceptability-review.md | MD | 8 | Rapport de review post-correction |
PD-XX-rex.md | MD | 9 | Retour d'expérience |
PD-XX-confrontation-stepN.md | MD | 3, 5, 8 | Rapport de confrontation documentaire |
PD-XX-dossier-conformite-stepN.md | MD | 3, 5, 8 | Dossier de conformité pré-verdict |
PD-XX-verdict-stepN.yaml | YAML | 3, 5, 8 | Verdict PMO structuré |
Tous les artefacts sont stockés dans le dossier epic du projet cible : ProbatioVault-{projet}/docs/epics/{domaine}/{PD-XX-description}/
1.8 Verdicts PMO¶
Les 4 verdicts possibles¶
| Verdict | Code de sortie | Conséquence | Statut de l'étape |
|---|---|---|---|
| GO | 0 | Workflow continue normalement | DONE |
| RESERVE | 0 | Workflow continue, conditions à satisfaire ultérieurement | DONE_WITH_RESERVES |
| NON_CONFORME | 2 | Workflow en pause, corrections requises | REJECTED |
| ESCALADE | 3 | Workflow en pause, décision humaine requise | ON_HOLD |
Diagramme de flux des verdicts¶
flowchart LR
Gate[Gate PMO<br/>step 3/5/8] --> Verdict{Verdict}
Verdict -->|GO| Continue[Workflow continue<br/>étape suivante]
Verdict -->|RESERVE| ContinueR[Workflow continue<br/>avec conditions]
Verdict -->|NON_CONFORME| Pause[Workflow en pause<br/>corrections requises]
Verdict -->|ESCALADE| Hold[Workflow en pause<br/>décision humaine]
Continue --> NextStep[Étape N+1]
ContinueR --> NextStep
Pause --> Rework[Corriger les écarts]
Rework --> Relaunch[Relancer le workflow]
Relaunch --> Gate
Hold --> Human[Décision humaine]
Human --> Relaunch Format YAML du verdict¶
pmo_verdict:
workflow: PD-XX
step: 3
gate_type: CONFORMITY_CHECK
status: GO
reason: "Spécification complète et testable"
required_action: ""
escalation: false
date: 2026-01-15
reviewer: human
Partie 2 : Documentation technique¶
2.1 Architecture des composants¶
Diagramme de dépendances¶
flowchart TD
subgraph "Commandes Claude"
GOV["/gov"]
GOVSTEP["/gov-step"]
GOVSTATUS["/gov-status"]
GOVHELP["/gov-help"]
end
subgraph "Scripts principaux"
GW["gov-workflow.sh<br/>(orchestrateur séquentiel)"]
GS["gov-step.sh<br/>(exécution d'une étape)"]
GST["gov-status.sh<br/>(affichage état)"]
end
subgraph "Bibliothèques (scripts/lib/)"
STATE["state.sh<br/>(gestion WORKFLOW-STATE.md)"]
INJECT["inject-docs.sh<br/>(assemblage de prompts)"]
AGENTS["agents.sh<br/>(gestion multi-agents)"]
RPROJ["resolve-project.sh<br/>(résolution projet)"]
REPIC["resolve-epic.sh<br/>(résolution dossier epic)"]
end
subgraph "Données"
PROMPTS["templates/prompts/<br/>(14 templates de prompts)"]
TEMPLATES["templates/outputs/<br/>(13 templates de sortie)"]
AGENTDEFS["agents/<br/>(13 définitions d'agents)"]
STATE_FILE["WORKFLOW-STATE.md<br/>(dans le dossier epic)"]
end
subgraph "LLM"
CLAUDE["claude -p<br/>(automatisé)"]
CHATGPT["ChatGPT<br/>(copier-coller)"]
end
GOV --> GW
GOVSTEP --> GS
GOVSTATUS --> GST
GW --> GS
GW --> STATE
GW --> RPROJ
GW --> REPIC
GS --> STATE
GS --> INJECT
GS --> AGENTS
GS --> RPROJ
GS --> REPIC
GST --> STATE
GST --> RPROJ
GST --> REPIC
INJECT --> PROMPTS
INJECT --> TEMPLATES
AGENTS --> AGENTDEFS
STATE --> STATE_FILE
GS --> CLAUDE
GS --> CHATGPT
AGENTS --> CLAUDE
AGENTS --> CHATGPT 2.2 Scripts principaux¶
gov-workflow.sh¶
- Fichier :
scripts/gov-workflow.sh - Rôle : Orchestrateur principal. Lance les étapes séquentiellement, gère les pauses et interruptions.
- Arguments :
<STORY-ID> [projet] - Dépendances :
resolve-project.sh,resolve-epic.sh,state.sh
Fonctions : Aucune fonction propre (utilise les libs).
Flux d'exécution : 1. Valide les arguments 2. Résout le projet (cascade : argument → auto-détection → interactif) 3. Trouve ou crée le dossier epic 4. Initialise WORKFLOW-STATE.md 5. Affiche l'état courant 6. Détermine l'étape courante (première non DONE) 7. Boucle sur les étapes : - Lance gov-step.sh en sous-processus - Gère le code de sortie (0→continue, 2→NON_CONFORME, 3→ESCALADE) - Demande confirmation entre chaque étape
Codes de sortie :
| Code | Signification |
|---|---|
| 0 | Workflow complet ou en pause normale |
| 1 | Erreur ou abandon utilisateur |
gov-step.sh¶
- Fichier :
scripts/gov-step.sh - Rôle : Exécute une seule étape du workflow dans un contexte isolé.
- Arguments :
<STORY-ID> <STEP-NUM> [projet] - Dépendances :
resolve-project.sh,resolve-epic.sh,state.sh,inject-docs.sh,agents.sh
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
step_type() | step_type <step_num> | Retourne le type d'étape : claude, multiagent, chatgpt, ou gate |
execute_multiagent_step6() | execute_multiagent_step6 <story_id> <epic_dir> <project_path> <gov_root> | Orchestre les 3 sous-étapes 6a→6b→6c |
execute_confrontation() | execute_confrontation <step_num> <story_id> <epic_dir> <gov_root> | Exécute la confrontation pré-gate via claude -p |
collect_verdict() | collect_verdict <step_num> <story_id> <epic_dir> | Menu interactif pour le verdict PMO, génère le YAML |
Flux d'exécution principal (selon le type) :
- Claude (0, 4, 9) :
assemble_prompt()→pbcopy→ attente humaine → vérification artefact → DONE - Multi-agent (6) :
execute_multiagent_step6()→ 6a/6b/6c → DONE - ChatGPT (1, 2, 7) :
assemble_prompt()→pbcopy→ attente humaine → vérification artefact → DONE - Gate (3, 5, 8) :
assemble_prompt()(review) →execute_confrontation()→assemble_dossier()→collect_verdict()
Codes de sortie :
| Code | Signification |
|---|---|
| 0 | Succès (GO ou RESERVE) |
| 1 | Erreur générique |
| 2 | NON_CONFORME |
| 3 | ESCALADE |
gov-status.sh¶
- Fichier :
scripts/gov-status.sh - Rôle : Affiche l'état complet du workflow pour une story.
- Arguments :
<STORY-ID> [projet] - Dépendances :
resolve-project.sh,resolve-epic.sh,state.sh
Fonctions : Aucune fonction propre.
Flux d'exécution : 1. Résout le projet et le dossier epic 2. Appelle display_state() pour afficher le tableau d'état 3. Liste les artefacts principaux trouvés 4. Liste les artefacts de gouvernance (verdicts, confrontations, dossiers, code contracts, décomposition, livrables agents)
Code de sortie : 0 (succès) ou 1 (epic non trouvé).
2.3 Bibliothèques (scripts/lib/)¶
state.sh¶
- Fichier :
scripts/lib/state.sh - Rôle : Gestion du fichier
WORKFLOW-STATE.md(création, lecture, mise à jour).
Variables globales :
| Variable | Type | Description |
|---|---|---|
STEP_NAMES[0..9] | Array | Noms des 10 étapes |
STEP_AGENTS[0..9] | Array | Agent responsable de chaque étape |
STEP_ARTIFACTS[0..9] | Array | Nom de l'artefact principal (vide pour step 6) |
STEP_GATE_TYPES[0..9] | Array | Type de gate (vide pour les non-gates) |
STEP_SECONDARY_ARTIFACTS[0..9] | Array | Artefacts secondaires par étape |
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
trim() | trim [string] | Supprime les espaces en début/fin (utilisable en pipe) |
state_file_path() | state_file_path <epic_dir> | Retourne le chemin de WORKFLOW-STATE.md |
init_state() | init_state <story_id> <epic_dir> <project_name> | Crée le fichier d'état initial avec le tableau 10 étapes |
get_current_step() | get_current_step <epic_dir> | Retourne le numéro de la première étape non DONE (0-10) |
get_step_status() | get_step_status <epic_dir> <step_num> | Retourne le statut d'une étape spécifique |
update_step_status() | update_step_status <epic_dir> <story_id> <step_num> <status> [verdict_ref] | Met à jour le statut et la date d'une étape |
init_substeps() | init_substeps <epic_dir> <story_id> <manifest_file> | Crée les sous-étapes 6a/6b-N/6c à partir du manifest |
update_substep_status() | update_substep_status <epic_dir> <story_id> <substep_id> <status> | Met à jour le statut d'une sous-étape |
has_substeps() | has_substeps <step_num> | Retourne true pour step 6 |
get_verdict_path() | get_verdict_path <epic_dir> <story_id> <step_num> | Retourne le chemin du fichier verdict YAML |
display_state() | display_state <epic_dir> <story_id> | Affiche l'état formaté avec icônes et verdicts |
inject-docs.sh¶
- Fichier :
scripts/lib/inject-docs.sh - Rôle : Moteur d'assemblage des prompts avec injection de documents.
Variables globales :
| Variable | Type | Description |
|---|---|---|
PROMPT_PATTERNS[0..9] | Array | Patterns glob pour trouver les fichiers de prompt |
STEP_REQUIRED_DOCS[0..9] | Array | Documents obligatoires par étape |
STEP_OPTIONAL_DOCS[0..9] | Array | Documents optionnels par étape |
STEP_OUTPUT_TEMPLATES[0..9] | Array | Template de sortie par étape |
GATE_CONFRONTATION_DOCS | Assoc. array | Documents à confronter par gate |
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
find_prompt_file() | find_prompt_file <step_num> <prompts_dir> | Localise le fichier prompt via glob |
inject_yaml_doc() | inject_yaml_doc <yaml_file> <label> | Injecte un YAML wrappé dans un code block |
inject_doc() | inject_doc <doc_file> <label> [required\|optional] | Injecte un document MD ou YAML |
resolve_doc_path() | resolve_doc_path <doc_name> <story_id> <epic_dir> | Résout le chemin d'un document (.md puis .yaml) |
assemble_prompt() | assemble_prompt <step_num> <story_id> <epic_dir> <project_path> <gov_root> | Assemble le prompt complet pour une étape |
assemble_confrontation_prompt() | assemble_confrontation_prompt <step_num> <story_id> <epic_dir> <gov_root> | Assemble le prompt de confrontation pré-gate |
assemble_dossier() | assemble_dossier <step_num> <story_id> <epic_dir> <gov_root> | Génère le dossier de conformité (écrit le fichier, retourne le chemin) |
check_prerequisites() | check_prerequisites <step_num> <story_id> <epic_dir> | Vérifie la présence des documents obligatoires |
Mécanisme d'assemblage d'un prompt :
- Localiser le template de prompt (pattern glob)
- Lire le contenu et remplacer
PD-XXpar le vrai story ID - Injecter les documents obligatoires (
## DOCUMENT D'ENTRÉE : ...) - Injecter les documents optionnels si présents (
## DOCUMENT COMPLÉMENTAIRE : ...) - Injecter le template de sortie si applicable (
## TEMPLATE DE SORTIE) - Ajouter les instructions de sauvegarde (
## INSTRUCTIONS DE SAUVEGARDE)
agents.sh¶
- Fichier :
scripts/lib/agents.sh - Rôle : Gestion des agents spécialisés pour le workflow multi-agents (étape 6).
Variables globales :
| Variable | Type | Description |
|---|---|---|
AGENT_LLM_MAP | Assoc. array | Mapping agent → LLM (claude ou chatgpt) |
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
get_agent_llm() | get_agent_llm <agent_name> | Retourne "claude" ou "chatgpt" |
get_agent_system_prompt() | get_agent_system_prompt <agent_name> <gov_root> | Lit le fichier agents/{agent-name}.md |
get_agents_from_contracts() | get_agents_from_contracts <contracts_file> | Extrait la liste unique des agents depuis le YAML |
get_contract_for_module() | get_contract_for_module <contracts_file> <module_name> | Extrait le bloc YAML d'un module spécifique |
assemble_agent_task() | assemble_agent_task <agent> <module> <desc> <deliverable> <files_scope> <story_id> <epic_dir> <gov_root> | Construit le prompt complet avec système prompt + code contract + docs |
execute_claude_agent() | execute_claude_agent <prompt_file> <output_file> | Exécute claude -p < prompt > output |
execute_chatgpt_agent() | execute_chatgpt_agent <prompt_file> <agent_name> <module_name> <output_file> | Copie dans le presse-papier, attend la saisie humaine |
parse_decomposition_manifest() | parse_decomposition_manifest <manifest_file> | Parse le manifest, retourne AGENT\|MODULE\|DESC\|DELIVERABLE\|FILES par ligne |
resolve-project.sh¶
- Fichier :
scripts/lib/resolve-project.sh - Rôle : Résolution du chemin du projet cible en cascade.
Variables : PROBATIOVAULT_ROOT, KNOWN_PROJECTS (backend, app, site, infra, doc).
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
project_path() | project_path <project_name> | Retourne {root}/ProbatioVault-{name} |
validate_project() | validate_project <project_name> | Vérifie que le dossier existe |
detect_project_from_epic() | detect_project_from_epic <story_id> | Cherche le story ID dans tous les projets |
resolve_project() | resolve_project <explicit_project> <story_id> | Résolution en cascade : argument → détection → interactif |
resolve-epic.sh¶
- Fichier :
scripts/lib/resolve-epic.sh - Rôle : Localisation du dossier epic pour une user story.
Fonctions :
| Fonction | Signature | Description |
|---|---|---|
resolve_epic() | resolve_epic <story_id> <project_root> | Cherche docs/epics/*/{story_id}-* (dossier puis fichier spec) |
list_artifacts() | list_artifacts <epic_dir> <story_id> | Liste les artefacts existants |
2.4 Templates de prompts¶
Tous les templates sont dans templates/prompts/. Chaque prompt contient des placeholders PD-XX remplacés automatiquement par le story ID réel.
| Fichier | Étape | Agent | Description |
|---|---|---|---|
0 Expression de besoin.md | 0 | Claude | Clarification neutre du besoin |
1 Specification.md | 1 | ChatGPT | Production de la spécification normative |
2 Tests & Validation.md | 2 | ChatGPT | Scénarios de test contractuels (GWT) |
3 Spécification – Review.md | 3 | ChatGPT | Review pré-gate CONFORMITY_CHECK |
4 Plan d'implémentation.md | 4 | Claude | Plan technique + code contracts |
5 Plan d'implémentation - Review.md | 5 | ChatGPT | Review pré-gate AMBIGUITY |
6 Implémentation.md | 6 | Claude | Fallback si pas de code contracts |
6a Decomposition.md | 6a | Claude | Décomposition en tâches agents |
6b Agent Task.md | 6b | Agents | Méta-prompt avec substitution de variables |
6c Synthese.md | 6c | Claude | Synthèse des livrables agents |
7 Acceptabilité.md | 7 | ChatGPT | Audit d'acceptabilité |
8 Revue d'acceptabilité (post-correction).md | 8 | ChatGPT | Re-audit après corrections |
9 Retour d'expérience.md | 9 | Claude | Documentation REX |
confrontation.md | 3, 5, 8 | Claude | Confrontation documentaire pré-gate |
2.5 Templates de sortie¶
Tous les templates sont dans templates/outputs/. Ils définissent la structure attendue des artefacts produits.
| Fichier | Format | Usage |
|---|---|---|
PD-XX-specification.md | MD | Structure 10 sections pour la spécification |
PD-XX-tests.md | MD | Structure pour les scénarios de test |
PD-XX-plan.md | MD | Structure 10 sections pour le plan |
PD-XX-plan-review.md | MD | Structure pour la review du plan |
PD-XX-acceptability.md | MD | Structure pour le rapport d'acceptabilité |
PD-XX-acceptability-review.md | MD | Structure pour la review post-correction |
PD-XX-rex.md | MD | Structure pour le REX |
PD-XX-epic.md | MD | Descripteur d'epic |
PD-XX-code-contracts.yaml | YAML | Frontières de code par module |
PD-XX-decomposition.md | MD | Manifest de tâches agents |
PD-XX-confrontation.md | MD | Rapport de confrontation |
PD-XX-dossier-conformite.md | MD | Dossier de conformité pré-gate |
PD-XX-verdict.yaml | YAML | Verdict PMO structuré |
2.6 Définitions des agents¶
Chaque agent est défini dans un fichier Markdown dans agents/. Le fichier contient le système prompt de l'agent : son rôle, ses responsabilités, ses contraintes et ses interdictions.
| Fichier | Rôle | LLM |
|---|---|---|
agent-developer.md | Ingénieur logiciel senior, production de code | claude -p |
agent-adversarial.md | Red team, review sécurité, OWASP | claude -p |
agent-sre.md | Infrastructure, déploiement, monitoring | claude -p |
agent-qa-unit-integration.md | Tests unitaires et d'intégration | claude -p |
agent-qa-ihm.md | Tests IHM (Playwright, XCUITest) | claude -p |
agent-qa.md | QA généraliste | claude -p |
agent-release-manager.md | Préparation et coordination des releases | claude -p |
agent-documentation-maintainer.md | Rédaction et maintenance documentaire | claude -p |
agent-metier.md | Expert domaine métier (validation fonctionnelle) | ChatGPT |
agent-compliance-auditor.md | Audit de conformité normative | ChatGPT |
agent-architect.md | Review d'architecture technique | ChatGPT |
agent-human.md | Autorité de décision finale | Humain |
pmo.md | Coordination programme, consolidation, synthèse | Orchestrateur |
director-commercial.md | Direction commerciale | ChatGPT |
index.md | Index de tous les agents | — |
2.7 Commandes Claude¶
Les commandes slash sont définies dans .claude/commands/ et permettent d'invoquer le workflow directement depuis Claude Code.
| Commande | Fichier | Syntaxe | Description |
|---|---|---|---|
/gov | gov.md | /gov <STORY-ID> [projet] | Lance le workflow complet (prochaine étape) |
/gov | gov.md | /gov status <STORY-ID> [projet] | Affiche l'état du workflow |
/gov | gov.md | /gov help | Affiche l'aide |
/gov-step | gov-step.md | /gov-step <STORY-ID> <STEP> [projet] | Exécute une étape spécifique (0-9) |
/gov-status | gov-status.md | /gov-status <STORY-ID> [projet] | Affiche l'état du workflow |
/gov-help | gov-help.md | /gov-help | Affiche l'aide complète |
Arguments¶
- STORY-ID : Identifiant de la user story (ex:
PD-25,PD-42) - STEP : Numéro d'étape de 0 à 9
- projet (optionnel) : Nom du projet cible (
backend,app,infra,site,doc)
2.8 Gestion de l'état (WORKFLOW-STATE.md)¶
Format du fichier¶
Le fichier WORKFLOW-STATE.md est créé dans le dossier epic de chaque story. C'est un fichier Markdown avec un tableau structuré :
# Workflow State: PD-42
Projet cible: ProbatioVault-backend
| Étape | Nom | Agent | Statut | Gate | Artefact | Verdict | Date |
|-------|-----|-------|--------|------|----------|---------|------|
| 0 | Expression de besoin | Claude | DONE | | PD-42-besoin.md | | 2026-01-15 |
| 1 | Spécification | ChatGPT | DONE | | PD-42-specification.md | | 2026-01-16 |
| ...
## Gates PMO
- [x] Step 3: approuvé le 2026-01-18 (GO)
- [ ] Step 5: Review plan (AMBIGUITY)
- [ ] Step 8: Review acceptabilité (CLOSURE)
## Sous-étapes (step 6 — multi-agents)
| Sous-étape | Nom | Agent | LLM | Statut | Livrable | Date |
|------------|-----|-------|-----|--------|----------|------|
| 6a | Décomposition | Claude (orchestrateur) | claude | DONE | PD-42-decomposition.md | 2026-01-20 |
| 6b-1 | agent-developer — storage | agent-developer | claude | DONE | PD-42-agent-developer-storage.md | 2026-01-20 |
| 6b-2 | agent-adversarial — security | agent-adversarial | claude | IN_PROGRESS | ... | |
| 6c | Synthèse | Claude (orchestrateur) | claude | PENDING | (code) | |
Statuts possibles¶
| Statut | Icône | Description |
|---|---|---|
PENDING | ○ | Étape pas encore commencée |
IN_PROGRESS | ▶ | Étape en cours d'exécution |
PENDING_CHATGPT | ◆ | Prompt copié, en attente de la réponse ChatGPT |
PENDING_HUMAN | ⏸ | En attente d'action humaine (verdict) |
DONE | ✓ | Étape terminée avec succès |
DONE_WITH_RESERVES | ◈ | Étape terminée avec des conditions à satisfaire |
REJECTED | ✗ | Étape rejetée (verdict NON_CONFORME) |
ON_HOLD | ⏸ | Étape en pause (verdict ESCALADE) |
Mécanisme des sous-étapes¶
Les sous-étapes n'existent que pour l'étape 6 (multi-agents). Elles sont créées dynamiquement après la phase 6a de décomposition :
- L'utilisateur exécute 6a et produit le manifest
PD-XX-decomposition.md init_substeps()parse le manifest et crée les lignes 6b-1..N dans le tableau des sous-étapes- Chaque sous-étape est mise à jour indépendamment via
update_substep_status() - Le statut global de l'étape 6 passe à DONE quand toutes les sous-étapes sont DONE
2.9 Arborescence des fichiers¶
ProbatioVault-ia-governance/
├── CLAUDE.md # Instructions Claude Code
├── README.md
├── .claude/
│ ├── CLAUDE.md # Instructions locales
│ └── commands/
│ ├── gov.md # Commande /gov
│ ├── gov-step.md # Commande /gov-step
│ ├── gov-status.md # Commande /gov-status
│ └── gov-help.md # Commande /gov-help
├── agents/ # Définitions des agents
│ ├── index.md
│ ├── pmo.md
│ ├── agent-developer.md
│ ├── agent-adversarial.md
│ ├── agent-sre.md
│ ├── agent-qa.md
│ ├── agent-qa-unit-integration.md
│ ├── agent-qa-ihm.md
│ ├── agent-metier.md
│ ├── agent-compliance-auditor.md
│ ├── agent-architect.md
│ ├── agent-release-manager.md
│ ├── agent-documentation-maintainer.md
│ ├── agent-human.md
│ └── director-commercial.md
├── docs/
│ ├── AI-governance.md
│ ├── process-workflow.md
│ ├── specification_generale.md
│ ├── specification_architecture_multi_agents_gouvernee.md
│ ├── guide-claude-code-multi-agents.md
│ ├── workflow-documentation.md # CE DOCUMENT
│ ├── prompts/ # Templates de prompts (14 fichiers)
│ │ ├── 0 Expression de besoin.md
│ │ ├── 1 Specification.md
│ │ ├── 2 Tests & Validation.md
│ │ ├── 3 Spécification – Review.md
│ │ ├── 4 Plan d'implémentation.md
│ │ ├── 5 Plan d'implémentation - Review.md
│ │ ├── 6 Implémentation.md
│ │ ├── 6a Decomposition.md
│ │ ├── 6b Agent Task.md
│ │ ├── 6c Synthese.md
│ │ ├── 7 Acceptabilité.md
│ │ ├── 8 Revue d'acceptabilité (post-correction).md
│ │ ├── 9 Retour d'expérience.md
│ │ └── confrontation.md
│ ├── templates/ # Templates de sortie (13 fichiers)
│ │ ├── PD-XX-specification.md
│ │ ├── PD-XX-tests.md
│ │ ├── PD-XX-plan.md
│ │ ├── PD-XX-plan-review.md
│ │ ├── PD-XX-acceptability.md
│ │ ├── PD-XX-acceptability-review.md
│ │ ├── PD-XX-rex.md
│ │ ├── PD-XX-epic.md
│ │ ├── PD-XX-code-contracts.yaml
│ │ ├── PD-XX-decomposition.md
│ │ ├── PD-XX-confrontation.md
│ │ ├── PD-XX-dossier-conformite.md
│ │ └── PD-XX-verdict.yaml
│ └── skills/ # Compétences spécialisées
│ ├── index.md
│ ├── workflow/
│ ├── standards/
│ ├── compliance/
│ ├── documentation/
│ └── testing/
├── scripts/
│ ├── gov-workflow.sh # Orchestrateur principal
│ ├── gov-step.sh # Exécution d'une étape
│ ├── gov-status.sh # Affichage état
│ └── lib/
│ ├── state.sh # Gestion WORKFLOW-STATE.md
│ ├── inject-docs.sh # Assemblage de prompts
│ ├── agents.sh # Gestion multi-agents
│ ├── resolve-project.sh # Résolution projet
│ └── resolve-epic.sh # Résolution dossier epic
├── governance/ # Principes de gouvernance
│ ├── governance-principles.md
│ ├── decision-authority.md
│ ├── escalation-policy.md
│ └── interaction-rules.md
├── rbac/ # Rôles et permissions
│ ├── roles.md
│ └── permissions-matrix.md
├── workflows/ # Workflows métier
│ ├── code-generation.md
│ ├── spec-review.md
│ ├── qa-validation.md
│ ├── documentation-update.md
│ └── incident-response.md
├── integration/ # Guides d'intégration
│ ├── claude-code.md
│ ├── chatgpt-usage.md
│ ├── local-llm.md
│ └── migration-plan.md
└── history/ # Historique
├── decisions-log.md
└── major-changes.md