Aller au contenu

PD-278 — Dossier de conformité Gate 5 v2

Documents de référence

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

Évolution v1 → v2

Écart v1 Statut v2 Commentaire
BLQ-01 (table attestation absente) RÉSOLU Table vault_secure.dissemination_attestations ajoutée en C1 (step 13-18). Entity TypeORM + module dip-attestation créés.
BLQ-02 (audit async vs sync) RÉSOLU Plan corrigé : audit refus synchrone via QueryRunner dédié (transaction légère). Code contracts alignés.
BLQ-03 (enum exactement 4) PARTIELLEMENT RÉSOLU Plan documente l'adaptation (DIP ∈ enum, pas cardinalité=4). Mais spec et tests non mis à jour (hors périmètre plan). Écart résiduel reclassé MAJEUR.
MAJ-01 (503) RÉSOLU Ajouté dans matrice erreurs §6.
MAJ-02 (404) RÉSOLU Ajouté dans matrice erreurs §6.
MAJ-03 (401 pre-controller) RÉSOLU APP_INTERCEPTOR DisseminationAuditInterceptor documenté.
MAJ-04 (rétention 10 ans) RÉSOLU Section dédiée ajoutée : partitioning RANGE(issued_at), politique de rétention.
MAJ-05 (cross-module verrouillage) RÉSOLU DocumentLockService abstraction partagée ajoutée (module + conventions).
MAJ-06 (copies = geo_copy_count) RÉSOLU Tâche validation ajoutée en phase 0 étape 6.
MAJ-07 (BYPASSRLS) RÉSOLU Contractualisé dans section sécurité + code contracts.
MAJ-08 (ESM/CJS) RÉSOLU Section compatibilité ajoutée.
MAJ-09 (code contracts vs spec) RÉSOLU Formulations alignées.
MIN-01 à MIN-07 TOUS RÉSOLUS TC-ERR-12 audit, TC-FML, TC-NOM-07, contraintes techniques, Jest, CI vars, forbidden justifications.

Écarts résiduels v2 (consolidation review + confrontation)

MAJEURS (6)

ID Type Référence Description Impact
MAJ-v2-01 INC EC-01/DIV-01 Enum DB 5 valeurs vs spec "exactement" 4. Le plan justifie l'adaptation mais la spec INV-278-01 et tests TC-INV-01 n'ont pas été mis à jour (hors périmètre plan). Le plan ne peut corriger la spec. Test échouerait en intégration si non adapté.
MAJ-v2-02 INC EC-02/DIV-04 Fuzz 5×5 vs 4×4. Plan étend TC-INV-09 aux 5 états incluant RESTITUTED. Tests ne reflètent pas cette extension. Scope test incohérent plan↔tests.
MAJ-v2-03 AMB EC-03/ZO-05 RLS → 404 vs 403 indistinguable. SELECT FOR UPDATE filtré par RLS retourne 0 lignes (= document inexistant). Mécanisme de distinction non décrit. Testabilité TC-ERR-05/TC-INV-07 potentiellement non déterministe.
MAJ-v2-04 INC EC-04/DIV-02 Codes 404/503 dans plan mais PAS dans spec. Le plan les a ajoutés mais ne peut modifier la spec. Divergence formelle plan↔spec. Traçabilité incomplète.
MAJ-v2-05 AMB EC-05 Stub HSM conditionné (PD-37). Invariant crypto INV-278-10 dépend de PD-37. Stub documenté avec story destination (pattern PD-251 accepté). Invariant non satisfait en conditions réelles si PD-37 non livré.
MAJ-v2-06 ECT EC-08 WORM attestation sans enforcement DB. Intention append-only décrite mais pas de trigger/policy DB spécifique empêchant UPDATE/DELETE. Intégrité probatoire affaiblie.

MINEURS (5)

ID Type Référence Description
MIN-v2-01 AMB EC-06 Audit refus : exception catch absorbée si INSERT échoue → trou de traçabilité théorique. Le plan documente la transaction dédiée mais pas le fallback en cas d'échec.
MIN-v2-02 AMB EC-07/ZO-01 Hard timeout SLA 5000ms : mécanisme d'enforcement (AbortController/statement_timeout) non détaillé.
MIN-v2-03 AMB DIV-03 Path parameter {id} vs {document_id} (cosmétique).
MIN-v2-04 ECT DIV-05 INV-278-14 couvert par TC-INV-13 cas B + TC-ERR-14 mais pas de TC-INV-14 dédié.
MIN-v2-05 AMB ZO-02 Algorithme hash_evidence et signature_ref non spécifié (hérité de GAP-03 Gate 3).

Scoring

Critère Score Justification
feasibility 7.75 MAJ-v2-04 (codes hors spec), MAJ-v2-05 (stub HSM), MIN-v2-02 (hard timeout)
coverage 7.50 MAJ-v2-01 (enum), MAJ-v2-02 (fuzz scope), MIN-v2-04/05
risk_mitigation 8.75 MIN-v2-01 (audit fail edge case)
coherence 8.75 MAJ-v2-03 (RLS 404/403), MIN-v2-03 (path param)

Synthèse

Gravité Nombre IDs
BLOQUANT 0
MAJEUR 6 MAJ-v2-01 à MAJ-v2-06
MINEUR 5 MIN-v2-01 à MIN-v2-05

Corrections v1 résolues : 19/19 (3B + 9M + 7m tous adressés). Écarts résiduels principalement dus aux limites de périmètre du plan (ne peut modifier spec/tests) et à des précisions crypto/infrastructure.