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