Aller au contenu

PD-19 — Rapport de confrontation (Gate 3 v2)

1. Sources confrontées

  • PD-19-specification.md (v2 — spécification corrigée)
  • PD-19-tests.md (v2 — tests alignés avec spec v2)
  • PD-19-specification-review-v2.md (Gate 3 v2 Phase 1 — review ChatGPT)

2. Convergences

  1. Socle de security headers exhaustif : Spec (INV-01), tests (TC-NOM-01, TC-NOM-02), review — aucun écart.
  2. CORS contractualisé avec valeurs exactes : Spec (INV-03), tests (TC-NOM-04), review — alignés.
  3. Origines par environnement : Spec (INV-04), tests (TC-NOM-03), review — convergence.
  4. Rate limiting 100 req/60s/IP : Spec (INV-06), tests (TC-NOM-07, TC-NOM-08), review — convergence.
  5. Format réponse 429 : JSON structuré + Retry-After — spec (INV-07), tests (TC-ERR-04), review — alignés.
  6. Logs JSON UTC ISO-8601 corrélables : Spec (INV-09), tests (TC-NOM-06), review — sans écart.
  7. Middleware global exhaustif : Spec (CA-01), tests (TC-NOM-05), review — corrigé depuis v1.
  8. Headers maintenus sur erreurs 404/405/500 : Spec (CA-14), tests (TC-ERR-02), review — couvert.
  9. Fail-fast uniquement : Spec (ERR-05), tests (TC-ERR-05), review — sans écart.
  10. Table ST↔TC présente : Spec (§8), tests (§8) — corrigé depuis v1.
  11. Règles non testables réduites à 2 : Spec (§10), tests (verdict QA), review — Mineures.
  12. eIDAS hors périmètre : Spec (H-07), review — sans contestation.

3. Divergences

DIV-01 — INV-11 : Couverture headers sur TOUTES les réponses d'erreur

Source Position
Spec v2 INV-11 : security headers sur toute réponse d'erreur
Tests v2 TC-ERR-02 vérifie 404/405/500 mais pas refus CORS ni 429
Review v2 Signale comme Majeur

Fait : La spec exige une couverture universelle. Les tests couvrent 3 cas sur 5+ identifiables.

DIV-02 — INV-06 : Résolution IP via proxy de confiance

Source Position
Spec v2 INV-06 : clé = IP client via proxy de confiance
Tests v2 Testent seuil et isolation multi-IP, pas le mécanisme de résolution
Review v2 Signale comme Majeur

Fait : Les tests vérifient les effets mais pas le mécanisme de résolution.

4. Zones d'ombre

ZO-01 — Frontière "socle universel" vs "headers conditionnels" : Review signale comme Mineur. Tests couvrent les deux cas mais la spec ne formalise pas explicitement cette distinction.

ZO-02 — INV-12 : Frontière contractuelle : Pas de test explicite validant la frontière "observables HTTP uniquement". Review ne signale pas ce point. L'absence de contestation ne vaut pas couverture.

ZO-03 — CORS sur 429 : Aucune source ne précise si les headers CORS accompagnent une réponse 429 (intersection INV-03, INV-07, INV-11).

5. Synthèse des écarts

ID Sévérité Statut v1 → v2
DIV-01 Majeur Résiduel v2
DIV-02 Majeur Résiduel v2
ZO-01 Mineur Résiduel v2
ZO-02 Mineur Nouveau
ZO-03 Mineur Nouveau

Progression v1 → v2 : 4 critiques + 7 majeurs résolus. Restent 2 majeurs + 3 mineurs.

6. Recommandation

  • Procéder — convergence confirmée, aucun conflit bloquant
  • Rework ciblé — 2 divergences majeures à résoudre
  • Escalade — décision humaine requise

Justification : Les 2 divergences majeures sont résolubles par des corrections mineures et ciblées : - DIV-01 : extension de TC-ERR-02 pour couvrir refus CORS et 429 (effort faible) - DIV-02 : qualifier dans la spec si la résolution IP proxy est testable fonctionnellement ou relève de l'intégration

Les 3 zones d'ombre sont mineures et ne bloquent pas la progression.


Document produit par le workflow de gouvernance IA — Gate 3 v2 Phase 2 (Confrontation Claude) Date : 2026-02-09