Aller au contenu

PD-254 — Protocole migration probatoire

1. Contexte

ProbatioVault dispose d'une infrastructure de stockage résiliente (S3 WORM Object Lock, réplication Paris-Frankfurt, Glacier, SHA-3 hashing, arbres Merkle, signature HSM). Cependant, le protocole formel de migration probatoire n'est pas documenté.

Le gap GAP-FINAL-018 (audit PD-244) identifie cette lacune au regard de la norme NF Z42-013:2020 § 12.1 : "Toute migration doit préserver l'intégrité, la lisibilité et les chaînes de preuve associées."

L'évaluation tri-agents PD-244 a produit un consensus PARTIEL :

  • Claude : CONFORME (processus de migration avec vérification d'intégrité pré/post existant)
  • ChatGPT : PARTIEL (architecture robuste mais protocole formel incomplet)
  • Gemini : NON_IMPLEMENTE (aucune stratégie, processus ou outil de migration contrôlée)

Arbitrage : Le protocole est non formalisé. La capacité technique existe ; la documentation et l'outillage manquent.

2. Problème

Sans protocole formalisé :

  • Une migration de support (changement bucket S3, changement provider cloud) pourrait corrompre des preuves sans détection
  • Les chaînes de preuve (hash SHA-3 → Merkle → ancrage blockchain) pourraient être brisées
  • Aucune procédure de rollback n'est documentée en cas d'échec
  • La conformité NF Z42-013 § 12.1 n'est pas démontrable lors d'un audit

3. Besoin

En tant que TechLead / DevOps, je veux un protocole de migration probatoire formalisé, outillé et intégré au pipeline CI/CD, afin de garantir que toute migration future préserve l'intégrité des archives et satisfasse NF Z42-013 § 12.1.

4. Périmètre

4.1 Inclus

  1. Document protocole (Markdown) :
  2. Procédure step-by-step couvrant 3 types de migration :

    Type Exemple
    Support S3 bucket A → S3 bucket B
    Provider OVH → Scaleway
    Région Paris → Frankfurt
  3. Vérification d'intégrité pré-migration (inventaire + checksums)

  4. Vérification d'intégrité post-migration (comparaison + validation chaînes de preuve)
  5. Vérification de lisibilité post-migration (sample aléatoire : déchiffrement, lecture, validation MIME)
  6. Checklist rollback en cas d'échec
  7. Matrice de responsabilité (RACI)
  8. Critères Go/No-Go de bascule

  9. Snapshot manifest pré-migration :

  10. Génération d'un manifest.json (golden dataset) contenant pour chaque objet : doc_id, sha3, merkle_root, s3_object_key, size, timestamp
  11. Sert de référence pour comparaison post-migration
  12. Global Root Hash : root = SHA3(all_merkle_roots_sorted) — vérifie N millions d'objets en 1 hash

  13. Script de vérification d'intégrité (Python) :

  14. Inventaire des objets source (S3 + PostgreSQL)
  15. Calcul SHA-3 de chaque objet et comparaison avec les hash stockés en DB
  16. Vérification des arbres Merkle (racines cohérentes)
  17. Vérification des ancrages blockchain (non altérés)
  18. Vérification de lisibilité : sample aléatoire (decrypt test + MIME validation)
  19. Comparaison Global Root Hash pré/post
  20. Rapport différentiel pré/post migration (JSON)
  21. Mode dry-run (--dry-run) : scanne, calcule, vérifie, ne migre rien
  22. Code de retour exploitable par CI

  23. Attestation de migration :

  24. Génération d'une migration_attestation.json signée HSM contenant : migration_id, date, source_storage, target_storage, object_count, hash_global_before, hash_global_after, merkle_root_before, merkle_root_after, readability_sample_count, readability_sample_pass_rate, signature_hsm
  25. Constitue une preuve probatoire de migration archivée au même titre qu'un document

  26. Intégration CI/CD :

  27. Job GitLab CI dédié (exécutable manuellement ou déclenché par tag)
  28. Quality Gate bloquant si intégrité compromise
  29. Notification DevOps en cas d'écart

4.2 Exclu

  • Migration effective de données (hors scope — le protocole documente comment migrer, pas quand)
  • Changement de format des preuves (couvert par PD-245)
  • Migration de schéma DB (couvert par les migrations TypeORM existantes)

5. Contraintes

Contrainte Source Impact
Intégrité SHA-3 préservée NF Z42-013 § 12.1 Tout hash modifié = migration KO
Chaînes de preuve intactes NF Z42-013 § 12.1 Merkle root doit rester identique
Ancrages blockchain vérifiés ISO 14641 Tx hash doit correspondre au registre
WORM Object Lock respecté PD-44 Aucune suppression avant expiration retention
Script reproductible DevOps Exécutable sans intervention manuelle
Rollback documenté Best practice Retour arrière possible sous 4h
Global Root Hash invariant Architecture SHA3(sorted(merkle_roots)) identique avant/après = OK
Attestation signée HSM NF Z42-013 Preuve probatoire de migration archivée
Lisibilité vérifiée NF Z42-013 § 12.1 Sample aléatoire déchiffré + MIME validé

6. Acteurs

Acteur Rôle
TechLead Rédaction et validation protocole
DevOps Validation script + intégration CI
PO Validation métier (conformité NF Z42-013)

7. Risques

Risque Probabilité Impact Mitigation
Script incomplet (ne couvre pas tous les types de preuves) Moyenne Fort Inventaire exhaustif des types de preuves existants
Faux positif intégrité (hash mismatch sur objet valide) Faible Moyen Mode dry-run + rapport détaillé avant blocage
Rollback impossible (WORM empêche suppression des copies) Faible Fort Rollback = bascule DNS/config, pas suppression

8. Learnings injectés

Story Learning Application PD-254
PD-264 Contractualiser les migrations DDL dans la spec Distinguer migration schéma (exclu) vs migration données (inclus)
PD-278 Attestation dédiée + audit synchrone NF Z42-013 Attestation de migration signée HSM (migration_attestation.json)
PD-282 ALTER TYPE ADD VALUE PostgreSQL Hors scope (migration schéma exclu)
PD-98 Préfixe version pour migration sans casser compatibilité Versionner le protocole lui-même

9. Critères d'acceptation (haut niveau)

  • CA-01 : Document protocole migration step-by-step publié dans docs/
  • CA-02 : Script vérification intégrité exécutable (pré + post)
  • CA-03 : Script vérifie SHA-3, Merkle roots et ancrages blockchain
  • CA-04 : Checklist rollback documentée avec temps cible < 4h
  • CA-05 : Job GitLab CI intégré, Quality Gate bloquant si intégrité KO
  • CA-06 : Validation DevOps et TechLead
  • CA-07 : Conformité NF Z42-013 § 12.1 démontrable (gap GAP-FINAL-018 fermé)
  • CA-08 : Attestation de migration générée et signée HSM
  • CA-09 : Manifest snapshot généré pré-migration (golden dataset)
  • CA-10 : Vérification lisibilité aléatoire des objets post-migration
  • CA-11 : Mode dry-run disponible (--dry-run)