Aller au contenu

PD-244 — Plan d'implémentation v2 (audit documentaire)

Changelog v1 → v2

Écart Correction appliquée
ECT-02 Ajout TASK-12 : Validation schéma YAML
ECT-04 TASK-½ : Ajout contrôle d'unicité
ECT-05 TASK-6 : Valeurs contractuelles reprises
ECT-06 TASK-⅞/9 : Mécanisme vérification YAML→MD
ECT-07 TASK-5 : Attributs preuves complétés
ECT-08 TASK-11 : Structure corporate_claims définie
ECT-09 TASK-½ : Mécanisme anti-citation explicité

1. Nature de la story

PD-244 est une story documentaire : elle produit des matrices de conformité, pas du code. L'implémentation consiste à extraire, analyser et documenter les exigences normatives.

2. Sources normatives

Norme Version Fichier source Sections principales
ISO 14641 2018 docs/normes/ISO-14641-2018.txt 14 sections (§1-§14) + 3 annexes
NF Z42-013 2020 docs/normes/Z42-013.pdf À analyser

3. Tâches d'implémentation

TASK-1 : Extraction inventaire ISO 14641:2018

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-01, CA-PD244-01, INV-PD244-08

Description : Parcourir ISO 14641:2018.txt et extraire chaque exigence normative avec :

  • Identifiant de section (ex: 5.5.1, 10.1.2)
  • Texte de l'exigence (paraphrasé, pas de citation verbatim)
  • Niveau d'exigence (SHALL/SHOULD/MAY → obligatoire/recommandé/optionnel)

Contrôle anti-citation (INV-PD244-08) :

  • Chaque texte DOIT être reformulé, jamais copié verbatim
  • Vérification : aucune phrase > 10 mots identiques au PDF source
  • Revue finale par l'orchestrateur avant génération des matrices

Contrôle d'unicité (INV-PD244-01) :

  • Chaque requirement_id DOIT être unique dans l'inventaire
  • Format : ISO-14641-{section} (ex: ISO-14641-5.5.1)
  • Vérification : script de dédoublonnage avant TASK-3

Output : Section ISO de PD-244-inventaire-reference.yaml

Estimation : ~80-120 exigences

TASK-2 : Extraction inventaire NF Z42-013:2020

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-01, CA-PD244-02, INV-PD244-08

Description : Analyser NF Z42-013:2020.pdf (via extraction texte) et extraire les exigences. Structure attendue similaire à ISO 14641 (norme française dérivée).

Contrôle anti-citation (INV-PD244-08) :

  • Identique à TASK-1
  • Double attention car PDF (risque OCR copie exacte)

Contrôle d'unicité (INV-PD244-01) :

  • Format : NF-Z42013-{section} (ex: NF-Z42013-6.2.1)
  • Pas de collision inter-normes (préfixes distincts)

Output : Section NF de PD-244-inventaire-reference.yaml

Dépendance : Aucune (parallélisable avec TASK-1)

TASK-3 : Filtrage d'applicabilité SAE B2C

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-05, CA-PD244-08

Description : Pour chaque exigence de l'inventaire, qualifier :

  • applicable: true → exigence pertinente pour un SAE B2C
  • applicable: false → exigence hors périmètre (tiers archiveur, B2B, etc.)

Chaque exclusion DOIT porter une justification testable.

Output : Champ applicable + applicability_justification par exigence

Dépendance : TASK-1, TASK-2

TASK-4 : Mapping exigences → stories ProbatioVault

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-02, INV-PD244-04, CA-PD244-03, CA-PD244-04

Description : Pour chaque exigence applicable, identifier :

  • Les stories ProbatioVault qui la couvrent (PD-XX)
  • Le statut de couverture parmi les valeurs contractuelles :
  • CONFORME : couverture intégrale avec preuves
  • PARTIEL : couverture incomplète, plan de remédiation requis
  • NON_IMPLEMENTE : aucune couverture, story gap obligatoire
  • HORS_PERIMETRE : non applicable (déjà filtré en TASK-3)

Stories à analyser (depuis le besoin) :

  • Backend : PD-37, PD-39, PD-40, PD-60, PD-31
  • Infra : PD-4, PD-5, PD-6, PD-44, PD-7
  • App : PD-33, PD-34, PD-42, PD-54
  • Blockchain : PD-52, PD-53, PD-245

Méthode :

  1. Lire les specs/REX de chaque story dans data/specs-index/
  2. Identifier les invariants/fonctionnalités correspondant à l'exigence
  3. Qualifier le niveau de couverture selon les règles section 5 de la spec

Output : Champs stories, status, status_justification par exigence

Dépendance : TASK-3

TASK-5 : Collecte des preuves

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-03, CA-PD244-03

Description : Pour chaque exigence CONFORME ou PARTIEL, documenter au moins une preuve avec les attributs obligatoires (schéma section 4.2) :

evidence:
  - evidence_id: "EVD-{requirement_id}-{N}"  # Identifiant unique
    type: "code" | "test" | "doc" | "architecture_decision" | "ticket"
    path: "<chemin relatif ou identifiant artefact>"
    locator: "<fonction, section, test case, ancre doc>"
    version: "<commit hash ou version doc>"
    verifiable: true
    verified_date: "YYYY-MM-DD"

Règle : Aucune exigence CONFORME sans preuve verifiable: true.

Output : Champ evidence[] par exigence

Dépendance : TASK-4

TASK-6 : Identification et documentation des gaps

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-04, CA-PD244-04, CA-PD244-07

Description : Pour chaque exigence PARTIEL ou NON_IMPLEMENTE :

  1. Créer un gap dans PD-244-gaps.yaml
  2. Attribuer une sévérité selon la table contractuelle section 4.5 :
Sévérité Définition Délai cible
CRITICAL Non-conformité majeure bloquant fiabilité/sécurité/audit <= 30j
HIGH Écart significatif impactant conformité/traçabilité <= 90j
MEDIUM Écart modéré avec impact limité <= 180j
LOW Écart mineur de complétude documentaire <= 365j
  1. Créer ou référencer une story Jira sous PD-217

Valeurs autorisées gaps[].status (section 4.3) :

  • PLANNED : story créée, non démarrée
  • IN_PROGRESS : story en cours
  • DONE : story terminée

Schéma gap complet (section 4.2) :

- gap_id: "GAP-ISO-5.5.1-01"
  requirement_id: "ISO-14641-5.5.1"
  description: "..."
  severity: "HIGH"
  planned_story: "PD-XXX"
  epic_parent: "PD-217"
  owner: "TechLead"
  status: "PLANNED"
  target_date: "2026-06-30"

Output : PD-244-gaps.yaml

Dépendance : TASK-4, TASK-5

TASK-7 : Génération matrice ISO 14641:2018

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-06, CA-PD244-01, CA-PD244-05

Description : Assembler PD-244-iso-14641-matrix.yaml selon le schéma canonique (section 4.2). Générer PD-244-iso-14641-matrix.md fidèlement depuis le YAML.

Mécanisme de vérification fidélité YAML→MD :

  1. Compteur d'exigences : total_yaml == total_md
  2. Compteur par statut : CONFORME_yaml == CONFORME_md, etc.
  3. Hash des identifiants : hash(requirement_ids_yaml) == hash(requirement_ids_md)
  4. Aucune information dans MD absente du YAML source

Output : PD-244-iso-14641-matrix.yaml, PD-244-iso-14641-matrix.md

Dépendance : TASK-5, TASK-6

TASK-8 : Génération matrice NF Z42-013:2020

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-06, CA-PD244-02, CA-PD244-05

Description : Assembler PD-244-nf-z42-013-matrix.yaml et PD-244-nf-z42-013-matrix.md.

Mécanisme de vérification fidélité : Identique à TASK-7.

Output : PD-244-nf-z42-013-matrix.yaml, PD-244-nf-z42-013-matrix.md

Dépendance : TASK-5, TASK-6

TASK-9 : Génération gaps.md

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-06, CA-PD244-07

Description : Générer PD-244-gaps.md depuis PD-244-gaps.yaml. Vue lisible avec priorisation et stories associées.

Mécanisme de vérification fidélité :

  1. Nombre de gaps : count_yaml == count_md
  2. Tous les gap_id présents dans MD
  3. Pas d'information additionnelle dans MD

Output : PD-244-gaps.md

Dépendance : TASK-6

TASK-10 : Génération dashboard de conformité

Agent : Claude (orchestrateur) INV/CA couvert : CA-PD244-06

Description : Calculer les scores globaux selon la formule contractuelle section 4.4 :

score_global = ((CONFORME * 100) + (PARTIEL * 50)) / (total_applicable - HORS_PERIMETRE) * 100

Règles d'application :

  • total_applicable = nombre total d'exigences évaluées
  • HORS_PERIMETRE soustrait du dénominateur
  • Score borné dans [0, 100]
  • Si dénominateur = 0 → score = N/A
  • Arrondi : 2 décimales

Produire PD-244-compliance-dashboard.md avec :

  • Score par norme
  • Répartition des statuts
  • Liste consolidée des stories de gap
  • Taux de traçabilité

Output : PD-244-compliance-dashboard.md

Dépendance : TASK-7, TASK-8, TASK-9

TASK-11 : Traçabilité claims doc 41/42/43

Agent : Claude (orchestrateur) INV/CA couvert : INV-PD244-07, CA-PD244-09

Description : Identifier les claims de conformité ISO/NF dans les docs corporate :

  • Doc 41 : Architecture TechLead v4.1
  • Doc 42 : Spécifications Techniques
  • Doc 43 : Specs Stockage

Structure de traçabilité claim→exigence→preuve :

corporate_claims:
  - claim_id: "CLAIM-41-001"
    source_doc: "41---architecture_techlead---v4.1"
    source_section: "Section 3.2 Conformité normative"
    claim_text: "ProbatioVault est conforme ISO 14641"
    mapped_requirements:
      - requirement_id: "ISO-14641-5.5.1"
        status: "CONFORME"
        evidence_ids:
          - "EVD-ISO-14641-5.5.1-01"
          - "EVD-ISO-14641-5.5.1-02"
    coverage_status: "FULL" | "PARTIAL" | "NONE"

Output : Section corporate_claims dans les matrices + fichier PD-244-claims-traceability.yaml

Dépendance : TASK-7, TASK-8

TASK-12 : Validation schéma YAML (NOUVEAU v2)

Agent : Claude (orchestrateur) INV/CA couvert : TC-YAML-002 (testabilité)

Description : Valider que tous les YAML produits respectent le schéma canonique section 4.2.

Contrôles :

  1. Champs obligatoires présents (schema_version, story_id, norm, sections, etc.)
  2. Valeurs enum respectées (status ∈ {CONFORME, PARTIEL, NON_IMPLEMENTE, HORS_PERIMETRE})
  3. Types corrects (dates ISO, booléens, listes)
  4. Cardinalités (au moins 1 evidence pour CONFORME/PARTIEL)
  5. Références croisées (tout planned_story existe dans PD-244-gaps.yaml)

Méthode :

  • Validation par parsing YAML + règles métier
  • Rapport d'erreurs si non conforme
  • Pas de génération MD si validation échoue

Output : Rapport de validation (intégré au workflow)

Dépendance : TASK-7, TASK-8, TASK-9

4. Diagramme de dépendances

TASK-1 (ISO) ─────┐
                  ├──→ TASK-3 (Applicabilité) ──→ TASK-4 (Mapping) ──→ TASK-5 (Preuves) ──┐
TASK-2 (NF) ──────┘                                                                       │
                                                                                          ├──→ TASK-6 (Gaps)
                                                                                          ├──→ TASK-7 (Matrice ISO) ──┐
                                                                                          │                           │
                                                                                          └──→ TASK-8 (Matrice NF) ───┼──→ TASK-12 (Validation)
                                                                                                         │            │
                                                                                                         ├──→ TASK-9 (Gaps.md) ──┘
                                                                                                         ├──→ TASK-10 (Dashboard)
                                                                                                         └──→ TASK-11 (Claims)

5. Matrice de couverture INV/CA → Tâches

INV/CA Tâche couvrant Note v2
INV-PD244-01 TASK-1, TASK-2 + contrôle unicité explicite
INV-PD244-02 TASK-4 Valeurs contractuelles listées
INV-PD244-03 TASK-5 + attributs obligatoires
INV-PD244-04 TASK-4, TASK-6 Rattachement PD-217 explicite
INV-PD244-05 TASK-3 OK
INV-PD244-06 TASK-7, TASK-8, TASK-9 + mécanisme vérification
INV-PD244-07 TASK-11 + structure traçabilité
INV-PD244-08 TASK-1, TASK-2 + mécanisme anti-citation
CA-PD244-01 TASK-1, TASK-7, TASK-12 + validation schéma
CA-PD244-02 TASK-2, TASK-8, TASK-12 + validation schéma
CA-PD244-03 TASK-5 OK
CA-PD244-04 TASK-6 OK
CA-PD244-05 TASK-7, TASK-8 + vérification fidélité
CA-PD244-06 TASK-10 OK
CA-PD244-07 TASK-6, TASK-9 OK
CA-PD244-08 TASK-3 OK
CA-PD244-09 TASK-11 + structure claim→exigence→preuve

6. Estimation

Tâche Complexité Temps estimé
TASK-1 Haute (parsing + anti-citation) 2.5h
TASK-2 Haute (PDF + anti-citation) 2.5h
TASK-3 Moyenne 1h
TASK-4 Haute (17 stories à analyser) 3h
TASK-5 Haute (collecte preuves complètes) 2.5h
TASK-6 Moyenne 1h
TASK-7 Moyenne (+ vérification) 1.5h
TASK-8 Moyenne (+ vérification) 1.5h
TASK-9 Basse 0.5h
TASK-10 Basse 0.5h
TASK-11 Moyenne (+ structure) 1.5h
TASK-12 Basse (validation) 0.5h
Total ~18h

7. Risques et mitigations

Risque Impact Mitigation
PDF NF Z42-013 difficile à parser Retard TASK-2 Extraction manuelle si OCR échoue
Nombreux gaps découverts Charge stories Prioriser par sévérité CRITICAL/HIGH
Stories ProbatioVault incomplètes Couverture faible Documenter clairement les NON_IMPLEMENTE
Interprétation subjective exigences Qualité audit Justifier chaque statut factuellement
Citation accidentelle (INV-08) Risque IP Vérification systématique TASK-½

8. Livrables finaux

  1. PD-244-inventaire-reference.yaml — baseline des exigences (unicité garantie)
  2. PD-244-iso-14641-matrix.yaml + .md (validé schéma)
  3. PD-244-nf-z42-013-matrix.yaml + .md (validé schéma)
  4. PD-244-gaps.yaml + .md (validé schéma)
  5. PD-244-compliance-dashboard.md
  6. PD-244-claims-traceability.yaml (traçabilité complète)

Plan v2 produit par Claude (orchestrateur) — 2026-02-20 Corrections : ECT-02, ECT-04, ECT-05, ECT-06, ECT-07, ECT-08, ECT-09