Aller au contenu

PD-265 — Dossier de conformité Gate 8 (CLOSURE) v1

1. Références

  • Story : PD-265 — Monitoring TSA et cycle de vie des clés RFC 3161
  • Spécification : PD-265-specification.md
  • Tests : PD-265-tests.md
  • Acceptabilité : PD-265-acceptability.md
  • Review P1 (ChatGPT) : PD-265-review-step8.md
  • Confrontation P2 (Claude) : PD-265-confrontation-step8.md
  • Date : 2026-03-02
  • Iteration : v1

2. Synthèse P1 (Review ChatGPT)

Le reviewer P1 a suivi les 9 écarts identifiés dans le rapport d'acceptabilité. Tous sont maintenus OUVERT, ce qui est attendu car il s'agit de dette technique documentée (STUBs tracés, choix architecturaux), pas de bugs à corriger.

Points clés : - 9/9 écarts MINEUR maintenus OUVERT — conforme car ils représentent des choix documentés ou des dépendances STUB (PD-37, PD-265 phase 2) - Verdict P1 : ACCEPTÉ AVEC RÉSERVES (inchangé vs acceptabilité)

3. Synthèse P2 (Confrontation Claude)

La confrontation identifie 12 convergences et 7 divergences :

Convergences (12) — Fondamentaux validés

  • 14 invariants INV-265-* couverts
  • Machine d'états composite exhaustive (7 états, fail-closed)
  • RBAC maintenance mode avec callback denied
  • Labels HSM validés par regex
  • Contraintes croisées config (2 validations TC-CROSS-*)
  • Cycle de vie clés unidirectionnel (4 états)
  • Refus TST normés avec DTO (503 + codes)
  • Métriques tsa_* (10 définitions)

Divergences identifiées

ID Type Description Criticité Statut
DIV-01 ECT Sonar Phase 1.5 auth 401 — scanner n'a pas analysé la branche MINEUR OUVERT — API check confirme 0 issue PD-265. Scanner auth = infra, pas code.
DIV-02 AMB TC-ERR-09 (crypto at-rest) marqué N/A MINEUR OUVERT — Hors scope : gestion HSM (PD-37). Le monitoring ne gère pas le stockage crypto.
DIV-03 AMB TC-ERR-11 (crash recovery) marqué N/A MINEUR OUVERT — Hors scope : test d'intégration DB crash recovery. État persisté en DB (DA-05).
DIV-04 ECT STUBs OCSP/CRL/TL/audit sans impl réelle MINEUR OUVERT — Documenté E-06, tracé PD-265 phase 2 + PD-37
DIV-05 ECT escalatedFlags in-memory volatile MINEUR OUVERT — Documenté E-02, alertes idempotentes
DIV-06 AMB NTS offset global ntpd-rs vs per-server MINEUR OUVERT — Documenté E-03, DA-01 worst-case respecté
DIV-07 AMB Politique exceptions mode dégradé non formalisée MINEUR OUVERT — Couvert par canEmitTst()/canRehorodatage() fail-closed

4. Analyse consolidée des écarts

Écarts BLOQUANTS : 0

Écarts MAJEURS : 0

Tous les écarts initialement identifiés comme MAJEUR par les reviews LLM (Phase 2 step 7) ont été déclassés après analyse des faux positifs : - T-01 (RBAC test) : RBAC est dans le service, pas le guard. Tests couvrent 5 scénarios de refus. - T-02/T-04 (TC manquants) : Correspondent à des modules STUB hors scope. - S-01 (Joi defaults) : Defaults = valeurs spec §5.2. Pas d'affaiblissement. - S-02 (Transition callback) : By design — persistence > audit (STUB PD-37).

Écarts MINEURS : 9 (dont 6 STUBs tracés)

ID Description Source
E-01 persistToDb sans WHERE explicite 7a
E-02 escalatedFlags in-memory 7a, 7c
E-03 NTS offset global 7a
E-04 req.user type non partagé 7a
E-05 import dynamique node:crypto 7a
E-06 6 STUBs tracés (OCSP/CRL/TL/TST/audit) 7a
E-07 Joi defaults config 7c
E-08 Transition callback non-bloquant 7c
E-09 Health endpoint non authentifié 7c

5. Scores proposés

Critère Score Justification
Conformity (spec vs implémentation) 8.5 14 invariants vérifiés. 6 STUBs tracés avec story destination conforme pattern inter-PD. Machine d'états exhaustive.
Test coverage 8.0 222/222 tests PASS. 3 TC marqués PASS-STUB. 2 TC marqués N/A (hors scope légitime). Couverture des edge cases complète.
Security 8.0 Fail-closed systématique. RBAC validé. Labels HSM sécurisés. 5 findings sécurité tous MINEUR ou faux positifs (Joi defaults, callback non-bloquant, health endpoint).
Maintainability 8.5 Architecture modulaire (14 composants). Enums partagés. Config Joi centralisée. STUBs documentés. Module registration cohérent.

Moyenne : (8.5 + 8.0 + 8.0 + 8.5) / 4 = 8.25

6. Recommandation

GO — Tous les scores >= 8.0. Moyenne 8.25/10. 0 écart BLOQUANT, 0 écart MAJEUR. Les 9 écarts MINEUR sont de la dette technique documentée et tracée. L'implémentation couvre les 14 invariants de la spécification avec une architecture fail-closed conforme aux exigences RFC 3161.