PD-54 — Acceptabilité
1. Références
- Spécification : PD-54-specification.md
- Tests contractuels : PD-54-tests.md
- Plan d’implémentation : PD-54-plan.md
- Commit / version évaluée : f8651be058a4877b4aa066dd3a7b471bf3e0188d
- Date de la revue : 2026-01-24
2. Synthèse exécutive
Revue de conformité PD-54 (spec/tests/plan) et exécution des tests contractuels avec couverture. Les tests contractuels passent (77/77) et la suite totale passe (162/162). Couverture du module merkle-tree à 85.97% (objectif ≥ 80%), couverture globale à 80.26%. Un écart majeur subsiste sur la persistance R17 : aucune couche de stockage n’est implémentée dans le code évalué, la persistance est seulement logique (en mémoire). Verdict : accepté avec réserves.
3. Résultats des tests contractuels
| Test ID | Statut (PASS/FAIL/ABSENT) | Preuve d’exécution | Commentaire |
| TC-NOM-01 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Entrée/validation |
| TC-NOM-02 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Canonicalisation |
| TC-NOM-03 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Feuilles |
| TC-NOM-04 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Ordonnancement |
| TC-NOM-05 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Construction binaire |
| TC-NOM-06 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Racine/clôture |
| TC-NOM-07 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Périodicité/indépendance |
| TC-NOM-08 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Persistance logique |
| TC-NOM-09 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Vérifiabilité |
| TC-NOM-10 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Hash versionné |
| TC-NOM-11 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Merkle DAG |
| TC-NOM-12 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Références normatives |
| TC-NOM-13 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Fenêtres [start,end) |
| TC-ERR-01 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Batch vide |
| TC-ERR-02 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Événement invalide |
| TC-ERR-03 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Canonicalisation |
| TC-ERR-04 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Algorithme non conforme |
| TC-INV-01 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Déterminisme |
| TC-INV-02 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Sensibilité modifications |
| TC-INV-03 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Clôture |
| TC-INV-04 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Indépendance |
| TC-INV-05 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Feuilles partagées |
| TC-NR-01 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Non-régression |
| TC-NR-02 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Non-interférence |
| TC-NEG-01 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Post-clôture |
| TC-NEG-02 | PASS | npx vitest run src/crypto/tests/merkle-tree/ --coverage (2026-01-24) | Collision volontaire |
4. Écarts identifiés
Classification des écarts
| Niveau | Définition |
| BLOQUANT | Violation d’invariant, faille de sécurité, non-conformité majeure |
| MAJEUR | Fonction incomplète ou non conforme sans rupture de sécurité |
| MINEUR | Détail ou dette non critique |
Détail des écarts
| ID | Description | Référence | Gravité | Statut (OUVERT/RÉSOLU/PR) |
| E-01 | La persistance R17 n’est pas implémentée dans le code évalué (pas de couche de stockage ni d’écriture durable) ; la “persistance” est uniquement logique via les objets retournés en mémoire. | Spec §5.8 R17 / Plan §6, §17 / Code: src/crypto/merkle-tree/ | MAJEUR | RÉSOLU |
5. Hypothèses et TODO recensés
- Hypothèses complémentaires (plan §13) : H-01 events[] fini et clos ; H-02 événements validés avant inclusion ; H-03 fenêtres non chevauchantes ; H-04 implémentation JCS conforme RFC 8785 ; H-05 SHA-256 conforme FIPS 180-4 ; H-06 base IANA TZ disponible ; H-07 stockage garantit l’atomicité ; H-08 horloge système fiable ; H-09 formats temporels comparables et attribution univoque ; H-10 registre normatif accessible (URL ou inline).
- TODO restants (non bloquants) : aucun explicite.
6. Verdict d’acceptabilité (unique)
- ⛔ REFUSÉ
- ⚠️ ACCEPTÉ AVEC RÉSERVES
- ✅ ACCEPTÉ
Verdict (historique - revue 2026-01-24) : ⚠️ ACCEPTÉ AVEC RÉSERVES Date : 2026-01-24 Motif synthétique : Les tests contractuels passent et la couverture est conforme, mais l’exigence de persistance R17 n’est pas démontrée par une implémentation de stockage.
7. Revue d'acceptabilité post-correction (2026-01-26)
[2026-01-26] — Suivi E-01
- Statut précédent : OUVERT
- Statut actuel : RÉSOLU
- Justification factuelle :
- PD-237 implémente la persistance R17 (tables merkle_trees/merkle_leaves, triggers append-only).
- Tests PD-237 contractuels pertinents PASS : TC-NOM-01/02/03, TC-INV-02/03/05.
- PD-237-acceptability.md : verdict ✅ ACCEPTÉ (2026-01-26).
- Preuve de vérification :
- PD-237-specification.md §1, §2.1, §9.
- PD-237-tests.md (TC-NOM-01/02/03, TC-INV-02/03/05).
- Pipeline CI https://gitlab.com/probatiovault/probatiovault-backend/-/pipelines/2286331531 (commit 5e6bdc9).
Verdict d'acceptabilité (courant)
Verdict actuel : ✅ ACCEPTÉ Date : 2026-01-26 Motif synthétique : E-01 résolu par la persistance R17 implémentée et validée dans PD-237 (preuves CI et acceptabilité PD-237).
Historique des verdicts
| Date | Verdict | Version / commit | Commentaire |
| 2026-01-24 | ⚠️ ACCEPTÉ AVEC RÉSERVES | f8651be058a4877b4aa066dd3a7b471bf3e0188d | E-01 majeur : persistance R17 non démontrée |
| 2026-01-26 | ✅ ACCEPTÉ | f8651be058a4877b4aa066dd3a7b471bf3e0188d + 5e6bdc9 | E-01 résolu via PD-237 (persistance R17) |