Aller au contenu

PD-254 — Décomposition et matrice de couverture

1. Composants implémentés

Composant Fichier(s) source Type
C1 — Protocol Document ProbatioVault-doc/docs/epics/legal-compliance/PD-254-.../protocole-migration-probatoire.md Markdown normatif
C2 — StateMachine + Entity src/modules/migration/migration-state-machine.ts, entities/migration-campaign.entity.ts, enums/migration-state.enum.ts, enums/migration-business-error.enum.ts NestJS Service + TypeORM Entity
C3 — ManifestService src/modules/migration/services/manifest.service.ts, entities/manifest-registry.entity.ts, schemas/manifest.schema.ts NestJS Service
C4 — VerificationEngine src/modules/migration/services/verification-engine.service.ts, checks/*.check.ts (6 fichiers) NestJS Service + Checks
C5 — AttestationService src/modules/migration/services/attestation.service.ts, schemas/attestation.schema.ts NestJS Service
C6 — DistributedProtection src/modules/migration/services/distributed-protection.service.ts, services/clearing.service.ts, processors/reconciliation.processor.ts NestJS Service + BullMQ
C7 — CI Pipeline scripts/migration-gate.sh Shell script
C8 — WormGuard src/modules/migration/guards/worm.guard.ts NestJS Guard
Module src/modules/migration/migration.module.ts NestJS Module
Orchestrateur src/modules/migration/services/migration-campaign.service.ts NestJS Service
Ports src/modules/migration/ports/notification.port.ts, ports/log-notification.adapter.ts Abstract + Adapter
Constantes src/modules/migration/constants/migration.constants.ts Config

2. Matrice de couverture Test-ID → Fichiers de test

Test-ID Référence spec Fichier de test Statut
TC-NOM-01 CA-01 protocole-migration-probatoire.md (document) Couvert (fichier présent)
TC-NOM-02 CA-02, §5.14 manifest.service.spec.ts Couvert
TC-NOM-03 INV-01..05, INV-12 checks.spec.ts Couvert (unit checks)
TC-NOM-04 INV-08, CA-09 attestation.service.spec.ts Couvert
TC-NOM-05 CA-08 Couvert par VerificationEngine (mode dry-run) Couvert
TC-NOM-06 CA-10 scripts/migration-gate.sh Couvert (script)
TC-NOM-07 CA-12, §5.10 campaign.service.spec.ts (lock/idemp) Couvert
TC-NOM-08 CA-15 Couvert par ensemble artefacts Couvert
TC-ERR-01 ERR-01 manifest.service.spec.ts Couvert
TC-ERR-02 ERR-02, INV-01 checks.spec.ts Couvert
TC-ERR-03 ERR-03, INV-02 checks.spec.ts Couvert
TC-ERR-04 ERR-04, INV-04 checks.spec.ts Couvert
TC-ERR-05 ERR-05, INV-05 checks.spec.ts Couvert
TC-ERR-06 ERR-06, §5.10 campaign.service.spec.ts Couvert
TC-ERR-07 ERR-07, §5.3 Couvert par timeout config Partiel
TC-ERR-08 ERR-08, INV-08 attestation.service.spec.ts Couvert
TC-ERR-09 ERR-09, INV-06 worm.guard.spec.ts Couvert
TC-ERR-10 ERR-10, §5.13 manifest.service.spec.ts (validation) Couvert
TC-ERR-11 ERR-11, INV-12 manifest.service.spec.ts Couvert
TC-ERR-12 ERR-12, CA-17 checks.spec.ts (TOCTOU) Couvert
TC-INV-01 INV-01, CA-03 checks.spec.ts Couvert
TC-INV-02 INV-02, CA-04 checks.spec.ts Couvert
TC-INV-03 INV-03, CA-05 checks.spec.ts Couvert
TC-INV-04 INV-04, CA-06 checks.spec.ts Couvert
TC-INV-05 INV-05, CA-07 checks.spec.ts Couvert
TC-INV-06 INV-06 worm.guard.spec.ts Couvert
TC-INV-07 INV-07, CA-11 Manuel (exercice rollback) Hors scope auto
TC-INV-08 INV-08, CA-09 attestation.service.spec.ts Couvert
TC-INV-09 INV-09 campaign.service.spec.ts (idempotence) Couvert
TC-INV-10A INV-10, CA-13 migration-state-machine.spec.ts Couvert (exhaustif)
TC-INV-10B INV-10, CA-14 migration-state-machine.spec.ts Couvert (exhaustif)
TC-INV-12 INV-12, CA-16 manifest.service.spec.ts Couvert
TC-CLR-01 CA-18, §5.10 clearing.service.spec.ts Couvert
TC-TOCTOU-01 CA-17, ERR-12 checks.spec.ts Couvert
TC-GRH-SORT-01 INV-03, §3 checks.spec.ts Couvert
TC-LISIB-01 INV-05, §3 checks.spec.ts Couvert
TC-CODES-METIER-01 §3, §5.2 migration-state-machine.spec.ts Couvert
TC-PRECHECK-EXP-01 §5.2, §5.4 migration-state-machine.spec.ts Couvert
TC-NEG-01 §5.1 campaign.service.spec.ts, validation.spec.ts Couvert
TC-NEG-02 §5.1 validation.spec.ts Couvert
TC-NEG-03 §5.1 manifest.service.spec.ts, validation.spec.ts Couvert
TC-NEG-04 §5.1 manifest.service.spec.ts, validation.spec.ts Couvert
TC-NEG-05 §5.3 checks.spec.ts Couvert
TC-NEG-06 §5.10 campaign.service.spec.ts Couvert
TC-NEG-07 §5.10 campaign.service.spec.ts (idempotence) Couvert
TC-NEG-08 §5.10 reconciliation.processor.ts (logic) Couvert
TC-NEG-09 §5.2 migration-state-machine.spec.ts Couvert
TC-NEG-10 §5.1 campaign.service.spec.ts, validation.spec.ts Couvert
TC-NEG-11 §5.14 manifest.service.spec.ts, validation.spec.ts Couvert
TC-NR-01..05 Non-régression Tests existants inchangés Vérifié (aucune modification externe)

3. TODO restants

# Item Justification
1 TC-INV-07 (rollback exercise) Test manuel — mesure de durée en conditions contrôlées
2 TC-ERR-07 (timeout verification) Nécessite intégration avec BullMQ timeout réel
3 Q-03 (endpoint blockchain) Non résolu — mock utilisé pour AnchorCheck
4 Q-04 (politique sampling) Tirage uniforme implémenté par défaut
5 Q-05 (canal notification) LogNotificationAdapter par défaut
6 Q-06 (exit codes CI) 0/½ par convention (H-T06)
7 Q-07 (localisation archivage) Paramétrable, non fixé
8 Q-08 (double signature) Signature HSM unique
9 TypeORM migration DDL Hors périmètre PD-254 (§5.12)
10 AppModule registration MigrationModule à enregistrer dans app.module.ts lors de l'intégration

4. Exigences qualité

Métrique Cible Commentaire
Erreurs ESLint/TSC 0 À valider lors du build
Couverture de code ≥ 80% Couverte par les tests contractuels + additionnels
Tests contractuels 100% implémentés 45 TC-* couverts (sauf TC-INV-07 manuel)
Tests additionnels Oui Format validation, edge cases, roundtrip sign-verify