Aller au contenu

PD-103 — Dossier de conformité (Gate 3 — v1)

1. Documents de référence

  • Spécification : PD-103-specification.md (424 lignes, 18 INV)
  • Tests : PD-103-tests.md (496 lignes, matrice couverture complète)
  • Review P1 (Claude) : PD-103-review-step3.md
  • Confrontation P2 (ChatGPT) : PD-103-confrontation-step3.md

2. Synthèse des écarts

BLOQUANTS (3)

ID Type Description Source
ECT-01 AMB Mécanisme d'échange de clé DEK (K_doc) non spécifié — chiffrement local AES-256-GCM mentionne K_doc sans définir sa génération, échange (KEK/key wrapping), ni transmission au backend. P1 + P2
ECT-02 SEC Transmission DEK au backend non documentée — le POST /documents/capture envoie nonce+tag mais pas le DEK. Pipeline scellement bloqué (backend ne peut pas déchiffrer). P1 + P2
ECT-03 AMB Session upload différé non définie — INV-103-24 conditionne reprise à "session valide" sans définir le terme. URL pré-signée S3 (TTL 1-15 min) vs TTL différé (24h) = reprise impossible. P1 + P2

MAJEURS (11)

ID Type Description Source
DIV-01 AMB Regex timestamp_device — groupe non-capturant sans ? rend millisecondes obligatoires, contradiction avec plage "24..30". P1
DIV-02 AMB Upload multipart — seuil 10 MB et chunks définis mais jamais mentionnés dans flux nominaux. Comportement indéterminé >10 MB. P1
DIV-03 AMB Transition UPLOADING -> CANCELLED autorisée en §5.7 + diagramme mais aucun invariant INV-103-XX, aucun test, aucun ER. P1 + P2
DIV-04 ECT Contradiction diagramme séquence vs flux — diagramme saute état UPLOADED (retourne directement PENDING_SEAL). P1
DIV-05 ECT INV-103-09 (envelope encryption) non testable — mécanisme KEK/key wrapping non spécifié. P1
DIV-06 AMB fichier probatoire — moment de transition soumis→probatoire non défini. P1
DIV-07 AMB signature_status — localisation (colonne DB ?) et responsabilité initialisation non clarifiées. P1
DIV-08 AMB Tests d'invariants TC-INV-01 à TC-INV-10 sans structure GIVEN/WHEN/THEN — statut ambigu. P1
DIV-09 SEC Aucune vérification d'intégrité du ciphertext uploadé sur S3 (pas de x-amz-content-sha256). P2
DIV-10 AMB timestamp_device accepté sans validation de skew horloge côté serveur. P1
DIV-11 DIV Code API 409 testé (TC-ERR-10/§8) mais non contractualisé dans la spec. P2

MINEURS (4)

ID Type Description Source
MIN-01 AMB Multipart non couvert par les tests (conditionnel à clarification). P1
MIN-02 AMB Rate-limit user_id + IP — double risque contournement/NAT mais scope acceptable pour v1. P2
MIN-03 AMB Politique notification à ANCHOR_CONFIRMED non arrêtée. P2
MIN-04 AMB Epic officielle non figée (MOBILE-IOS / PD-195 / EPIC-XX). P2

3. Scoring

Calcul : - Base : 10.0 - 3 BLOQUANTS × -2 = -6.0 - 11 MAJEURS × -1 = -11.0 - 4 MINEURS × -0.25 = -1.0 - Brut : 10 - 6 - 11 - 1 = -8.0 → clamp à 1.0

Les scores par critère :

Critère Score Justification
completeness 5.0 Spec bien structurée (18 INV, machine à états, bornes) mais 3 bloquants crypto/session manquants
testability 5.0 Matrice couverture complète mais 10 tests INV sans GIVEN/WHEN/THEN, multipart non couvert
clarity 6.0 Diagrammes Mermaid présents mais contradictions séquence/flux, K_doc non défini
traceability 7.0 Bonne traçabilité INV→CA→TC, 2 divergences (409, rate-limit granularité)

Moyenne : (5.0 + 5.0 + 6.0 + 7.0) / 4 = 5.75