Aller au contenu

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)