Aller au contenu

PD-40 — Acceptabilité

1. Références

  • Spécification : PD-40-specification.md
  • Tests contractuels : PD-40-tests.md
  • Plan d’implémentation : PD-40-plan.md
  • Commit / version évaluée : 432d4d4d3249601633db3438bc3906bce71a1ab1
  • Date de la revue : 2026-01-05

2. Synthèse exécutive

Le périmètre PD-40 (rotation HSM Ed25519, append-only, promotion atomique, audit WORM) est implémenté. Les suites Jest/Vitest sont intégralement vertes (144/144 suites, 2551 tests, 93.091 s). Les compléments contractuels manquants ont été ajoutés et passent : canonicalisation RFC 8785 (canonicalization.spec.ts), scénarios d’erreur (error-scenarios.spec.ts), performance 100k (performance.spec.ts), robustesse (robustness.spec.ts). Les invariants, critères, flux nominaux, E2E, cas d’erreur, performance et robustesse disposent désormais d’une preuve d’exécution. Verdict courant : accepté.

3. Résultats des tests contractuels

Test ID Statut (PASS/FAIL/ABSENT) Preuve d’exécution Commentaire
TC-INV-01..10, TC-CA1..7, TC-N1..6, TC-E2E-SUCCESS/FAILURE/STRESS PASS Tags TC-* dans rotation/__tests__/*.spec.ts ; exécution user : “Test Suites: 144 passed, 144 total ; Tests: 2551 passed, 2551 total ; Time: 93.091 s” Invariants, critères d’acceptation, flux nominaux et E2E couverts
TC-CANON-RFC8785, TC-CANON-SIGNATURE-VERIFY (+ variantes) PASS rotation/__tests__/canonicalization.spec.ts (12 tests) Canonicalisation RFC 8785 et vérification signature couvertes
TC-ERR-* (HSM unreachable, eligible set too large, unauthorized trigger, rotation in progress, keygen/sign/promotion/audit/invalid state) PASS rotation/__tests__/error-scenarios.spec.ts (35 tests) Scénarios d’erreur contractuels simulés via HSM mock
TC-PERF-LOAD (et variantes) PASS rotation/__tests__/performance.spec.ts (24 tests) Couverture performance 100k événements (unit tests)
TC-ROBUST-CLEANUP, TC-ROBUST-VERIFY-POST-ROTATION (+ invariants) PASS rotation/__tests__/robustness.spec.ts (21 tests) Robustesse et invariants supplémentaires vérifiés

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 Absence de tests TC-CANON-RFC8785 / TC-CANON-SIGNATURE-VERIFY (Spec §4.1, Tests §7) PD-40-tests.md MAJEUR RÉSOLU
E-02 Absence de tests TC-ERR-* (HSM unreachable, eligible set too large, unauthorized trigger, rotation in progress) PD-40-tests.md MAJEUR RÉSOLU
E-03 Absence du test TC-PERF-LOAD (100k événements) PD-40-tests.md MINEUR RÉSOLU
E-04 Absence des tests TC-ROBUST-* (cleanup orphelines, vérification post-rotation) PD-40-tests.md MINEUR RÉSOLU

5. Hypothèses et TODO recensés

  • Aucune hypothèse bloquante : tous les TC contractuels listés dans PD-40-tests.md disposent d’une implémentation et d’une preuve d’exécution.

6. Verdict d’acceptabilité (unique)

  • ⛔ REFUSÉ
  • ⚠️ ACCEPTÉ AVEC RÉSERVES
  • ✅ ACCEPTÉ

Verdict actuel : ✅ ACCEPTÉ
Date : 2026-01-05
Motif synthétique : Code et tests couvrent désormais l’ensemble des invariants, critères, flux nominaux, E2E, cas d’erreur, performance et robustesse listés dans PD-40-tests.md ; 92 tests contractuels additionnels passent en plus des suites Jest/Vitest vertes, aucune réserve ouverte.

2026-01-05 — Suivi E-01

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Tests TC-CANON-RFC8785/TC-CANON-SIGNATURE-VERIFY implémentés et PASS dans rotation/__tests__/canonicalization.spec.ts (12 tests).
  • Preuve de vérification : npm test -- --testPathPattern="rotation/__tests__/canonicalization" (PASS)

2026-01-05 — Suivi E-02

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Scénarios TC-ERR-* implémentés et PASS dans rotation/__tests__/error-scenarios.spec.ts (35 tests couvrant HSM unreachable, eligible set too large, unauthorized trigger, rotation in progress, keygen/sign/promotion/audit/invalid state).
  • Preuve de vérification : npm test -- --testPathPattern="rotation/__tests__/error-scenarios" (PASS)

2026-01-05 — Suivi E-03

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Tests TC-PERF-LOAD implémentés et PASS dans rotation/__tests__/performance.spec.ts (24 tests performance 100k événements).
  • Preuve de vérification : npm test -- --testPathPattern="rotation/__tests__/performance" (PASS)

2026-01-05 — Suivi E-04

  • Statut précédent : OUVERT
  • Statut actuel : RÉSOLU
  • Justification factuelle : Tests TC-ROBUST-* implémentés et PASS dans rotation/__tests__/robustness.spec.ts (21 tests cleanup orphelines, vérification post-rotation, invariants).
  • Preuve de vérification : npm test -- --testPathPattern="rotation/__tests__/robustness" (PASS)

Historique des verdicts

  • 2026-01-05 : ⚠️ ACCEPTÉ AVEC RÉSERVES
  • 2026-01-05 : ✅ ACCEPTÉ (réserves levées après ajout et succès des suites TC-CANON, TC-ERR, TC-PERF, TC-ROBUST)