Aller au contenu

Documentation du workflow de gouvernance ProbatioVault

Table des matières


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) :

  1. Mettre à jour data/metrics.jsonl (gate scores, iterations, deviations)
  2. Régénérer GOVERNANCE-METRICS.md
  3. Exécuter la revue documentaire automatique :
./scripts/check-docs.sh {STORY-ID} {EPIC-DIR} {PROJECT}

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.

  1. 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 :

  1. Localiser le template de prompt (pattern glob)
  2. Lire le contenu et remplacer PD-XX par le vrai story ID
  3. Injecter les documents obligatoires (## DOCUMENT D'ENTRÉE : ...)
  4. Injecter les documents optionnels si présents (## DOCUMENT COMPLÉMENTAIRE : ...)
  5. Injecter le template de sortie si applicable (## TEMPLATE DE SORTIE)
  6. 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 :

  1. L'utilisateur exécute 6a et produit le manifest PD-XX-decomposition.md
  2. init_substeps() parse le manifest et crée les lignes 6b-1..N dans le tableau des sous-étapes
  3. Chaque sous-étape est mise à jour indépendamment via update_substep_status()
  4. 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