Aller au contenu

PD-85 — Dossier de conformité Gate 3 (CONFORMITY_CHECK) — v2

Documents de référence

  • Spécification : PD-85-specification.md (266 lignes, ChatGPT gpt-5.3-codex, corrigée v2)
  • Tests : PD-85-tests.md (323 lignes, ChatGPT gpt-5.3-codex, non corrigés depuis v1)
  • Review v2 : PD-85-review-step3-v2.md (20 lignes résumé, Claude)
  • Confrontation v2 : PD-85-confrontation-step3-v2.md (72 lignes, ChatGPT gpt-5.3-codex)

Résolution des écarts v1

Les 2 BLOQUANTS et 5 MAJEURS identifiés en v1 (RESERVE 7.75) ont été traités :

Écart v1 Type Résolution v2
A-01 signedUrlTtl non spécifié BLOQUANT RÉSOLU — défaut 15 min, env EXPORT_SIGNED_URL_TTL_MIN, §5.2
C-02 404 comportement mixte BLOQUANT RÉSOLU — fail-fast première erreur, §6
A-02 doublons proofIds MAJEUR RÉSOLU — 400, déduplication interdite, §6
C-04 enum documentType MAJEUR RÉSOLU — 7 valeurs figées, §5.1
C-05 format proofEnvelopeRef MAJEUR RÉSOLU — UUID v4, §5.1
C-06 politique audit 4xx MAJEUR RÉSOLU — CA-12 couvre ALL (200 + 4xx/422)
RS-02 rate limiting absent MAJEUR RÉSOLU — 10/h/user, 429, §5.2

Écarts mineurs v1 également traités : C-07 (proofIds max → 500), REF-01 (epic → PD-185).

Synthèse des écarts v2

Écarts BLOQUANTS (0)

Aucun écart bloquant identifié en v2. L'écart E-08 (JCS hypothèse) est reclassé MAJEUR car H-01 + RFC 8785 en Références contractualisent de facto le mécanisme ; il ne manque que la promotion de hypothèse à exigence.

Écarts MAJEURS (6 après consolidation review + confrontation)

ID Type Description Source
E-01 ECT proofCount range [1, 10_000] en §5.1 contradictoire avec borne proofIds = 500 Review v2
E-05 ECT Rate limiting 429 spécifié en §5.2 mais absent des CA (§7), §6, et tests Review v2
E-06 AMB Ordre de priorité des validations (400→403→404→413→422) non défini Review v2
E-08 AMB H-01 (JCS RFC 8785) classée hypothèse alors que tests la présupposent ; promouvoir en exigence Review v2
E-09 ECT Composition et schéma JSON de chronology.json non définis (champs, types, événements) Review v2
E-14 AMB Échec WORM synchrone (§5.7) : fail-closed (500) ou pass-through non spécifié Review v2 + Confrontation

Écarts MINEURS (8 — dont 6 désynchronisation spec↔tests inhérente au cycle v2)

ID Type Description Source
DESYNC-01 à 06 ECT Tests non mis à jour après corrections spec v2 (signedUrlTtl, doublons, enum, proofEnvelopeRef, audit, fail-fast) Confrontation DIV-02 à DIV-07
E-04/DIV-01 ECT Référence epic EPIC-XX dans tests (corrigé PD-185 dans spec) Review + Confrontation
E-07 AMB UUID case-insensitive : normalisation canonique lowercase non contractualisée Review v2
E-11 AMB INV-85-09 (secrets temporaires chiffrés) : applicabilité à PD-85 non clarifiée (aucun secret créé) Review v2

Écarts confirmés comme non-écarts (faux positifs)

ID Raison de rejet
E-10 guideUrl : asset statique serveur, pas de livraison dynamique (déjà clarifié §5.1 readmeVerification)
E-12 fail-fast 404 : testable via TC-NEG existant, absence de TC dédié non bloquant
E-13 404 indistinguabilité (inexistant vs non possédé) : choix sécurité par design, conforme OWASP
E-15 INV-85-05 "Partiel" : formulation obsolète dans tests, cosmétique

Scoring

Critère Score Justification
completeness 8.0 0 BLOQUANT (résolution v1 confirmée). 6 MAJEURS restants sont des précisions contractuelles (proofCount range, rate limiting CA, validation order, JCS promotion, chronology schema, WORM failure). Les 14 CA couvrent le périmètre fonctionnel V1 complet.
testability 7.5 40 scénarios, 14/14 CA couverts, 15/15 INV. Mais tests non mis à jour après corrections spec v2 (6 désynchronisations). TC-429 manquant pour rate limiting. Score impacté par inhérence du cycle correctif.
clarity 8.5 Spec bien structurée, modèle de données contractuel, machine d'états explicite. Ambiguïtés restantes : validation order et WORM failure behavior.
traceability 8.0 Matrice INV→CA→TC complète. Rate limiting 429 non tracé dans CA ni tests. EPIC-XX dans tests.

Moyenne : (8.0 + 7.5 + 8.5 + 8.0) / 4 = 8.00

Verdict attendu

  • testability (7.5) < 8 → au moins un score < 8
  • Moyenne 8.00 >= 7
  • RESERVE (moyenne >= 7 mais au moins un score < 8)

Convergence

  • Delta v2-v1 = 8.00 - 7.75 = 0.25
  • 0.25 < 0.5 ET mean >= 7 → STOP — convergence atteinte
  • Verdict final : RESERVE