Aller au contenu

PD-278 — Dossier de conformité Gate 5 v1

Documents de référence

  • PD-278-specification.md (v3)
  • PD-278-tests.md (v3)
  • PD-278-plan.md (v1)
  • PD-278-code-contracts.yaml (v1)
  • PD-278-review-step5-v1.md (ChatGPT)
  • PD-278-confrontation-step5-v1.md (Claude)

Écarts consolidés (review + confrontation, dédupliqués)

BLOQUANTS (3)

ID Type Référence Description Impact
BLQ-01 DIV DIV-02, ZO-01 Table attestation absente de la migration C1. Le plan décrit INSERT attestation dans vault_secure.dissemination_attestations (C9 step 10) mais la migration C1 ne crée PAS cette table. Aucune entity TypeORM n'est définie. L'INSERT échouerait en runtime. Faisabilité : le service core ne peut pas fonctionner.
BLQ-02 DIV DIV-03, EC-05 Audit refus sécurité : spec synchrone vs plan async. Spec §5.8 exige "Persistance synchrone (transaction légère dédiée)". Le plan utilise logAsync (non-bloquant) et les contracts l'INTERDISENT synchrone. Si logAsync échoue post-réponse, un refus sécurité peut ne laisser aucune trace → violation INV-278-04. Conformité NF Z42-013 : traçabilité non garantie.
BLQ-03 INC DIV-01, EC-01, EC-02 Enum "exactement" 4 états vs DB 5 valeurs. Spec INV-278-01 dit "exactement {PENDING, SEALED, DIP, EXPIRED}". Tests TC-INV-01 vérifient "aucune valeur additionnelle". Plan reconnaît que RESTITUTED (PD-279) existe dans l'enum DB → contradition frontale spec↔plan, test qui échouerait en intégration. Cohérence : spec, tests et plan incompatibles sur un invariant fondamental.

MAJEURS (9)

ID Type Référence Description Impact
MAJ-01 AMB EC-03 Code 503 (fail-closed Redis) hors contrat erreurs. Spec §6 ne liste pas 503. Le plan introduit un comportement API non spécifié. Contrat API incomplet.
MAJ-02 AMB EC-04 Code 404 non contractualisé. Le plan prévoit 404 pour document non trouvé, absent de la matrice d'erreurs spec §6. Contrat API incomplet.
MAJ-03 ECT EC-06, ZO-08 Couverture 401 pre-controller incertaine. Le plan reconnaît que les 401 de JwtAuthGuard peuvent échapper au filtre d'audit refus. V-05 mentionne le risque sans mécanisme garanti. Audit sécurité potentiellement incomplet.
MAJ-04 AMB EC-07, ZO-07 Conservation 10 ans attestations non décrite. Spec §5.13 exige 10 ans, append-only, réplication. Plan ne spécifie aucune politique de rétention technique. Preuve probatoire non démontrée.
MAJ-05 AMB EC-08, ZO-08 Verrouillage cross-module non formalisé. Spec §5.9 exige ordre global. Plan diffère à "revue pré-Gate 8" sans mécanisme contraignant. Risque deadlock résiduel.
MAJ-06 AMB EC-09 copies = geo_copy_count hypothèse non validée. Garde INV-278-02 repose sur cette équivalence non confirmée. Garde potentiellement invalide.
MAJ-07 AMB EC-10 BYPASSRLS pour retention_service non contractualisé. Nécessaire pour clôture DIP→SEALED cross-owner mais absent de la spec. Changement de posture d'accès non encadré.
MAJ-08 ECT EC-14 Compatibilité ESM/CJS non couverte. Aucune section sur adaptation runner tests. Risque échec CI.
MAJ-09 INC EC-16 Code contracts divergent de la spec. Formulations "inclut exactement DIP via ADD VALUE", "couverture ≥80%" non issues directement des invariants spec. Source d'ambiguïté audit.

MINEURS (7)

ID Type Référence Description
MIN-01 ECT DIV-04 TC-ERR-12 ne vérifie pas l'audit DENIED sur DIP→SEALED refus 403.
MIN-02 ECT DIV-05 TC-FML-01 et TC-FML-02 sans scénario Given/When/Then.
MIN-03 ECT DIV-06 TC-NOM-07 absent de la matrice de couverture tests.
MIN-04 AMB EC-12 Section "Contraintes techniques" formelle absente du plan.
MIN-05 AMB EC-13 Framework de test non explicitement verrouillé (Jest vs Vitest).
MIN-06 AMB EC-15 Variables CI (DATABASE_URL, CI=true) non documentées.
MIN-07 AMB EC-17 Certains forbidden de code contracts sans justification spec.

Synthèse

Gravité Nombre IDs
BLOQUANT 3 BLQ-01, BLQ-02, BLQ-03
MAJEUR 9 MAJ-01 à MAJ-09
MINEUR 7 MIN-01 à MIN-07

Scoring

Critère Score Justification
feasibility 5.75 BLQ-01 (table attestation absente), MAJ-01/MAJ-08, MIN-06
coverage 4.25 BLQ-03 (enum incohérence), MAJ-03/MAJ-09, MIN-01/02/03
risk_mitigation 4.75 BLQ-02 (audit sync/async), MAJ-04/MAJ-05/MAJ-07, MIN-07
coherence 6.50 MAJ-02/MAJ-06/MAJ-04, MIN-04/05