Aller au contenu

PD-19 — Review Plan d'implémentation (Gate 5 v1)

Contexte

Review ChatGPT gov-factual du plan d'implémentation et des code contracts.


Point 1

Type : Couverture insuffisante Référence : [PD-19-plan.md > Composants / Résumé] ; [PD-19-specification.md > INV-01] Description : Le plan ne précise pas de mécanisme explicite pour appliquer Cache-Control: no-store uniquement sur les réponses sensibles (auth, données personnelles, 401/403). La création d'un SecurityHeadersMiddleware global ne couvre pas clairement cette condition contextuelle. Impact : Risque de non-conformité INV-01 et échec de TC-NOM-02 (headers conditionnels). Gravité : Majeur

Point 2

Type : Ambiguïté Référence : [PD-19-code-contracts.yaml > security_headers_config (7 headers contractuels)] ; [PD-19-specification.md > INV-01] Description : Le contrat mentionne "7 headers contractuels" sans expliciter la règle conditionnelle HSTS en dev (uniquement si HTTPS, max-age=300) versus prod/test (max-age=31536000; includeSubDomains). Impact : Implémentation potentiellement uniforme mais incorrecte selon l'environnement, non-conformité INV-01 et TC-NOM-02. Gravité : Majeur

Point 3

Type : Couverture insuffisante Référence : [PD-19-code-contracts.yaml > cors_config : methods, headers, maxAge] ; [PD-19-specification.md > INV-03] Description : Le contrat CORS ne cite pas explicitement Access-Control-Allow-Credentials: true ni les en-têtes exposés X-Correlation-Id, Retry-After, requis contractuellement. Impact : Réponses CORS incomplètes, échec probable TC-NOM-04 et non-conformité INV-03. Gravité : Bloquant

Point 4

Type : Ambiguïté Référence : [PD-19-plan.md > Composants / cors.middleware.ts] ; [PD-19-specification.md > INV-05] Description : Le plan ne détaille pas la stratégie de refus explicite des pré-vols non autorisés (statut attendu, en-têtes renvoyés, comportement déterministe). Impact : Variabilité des réponses preflight et non-conformité INV-05 / TC-ERR-01. Gravité : Majeur

Point 5

Type : Couverture insuffisante Référence : [PD-19-plan.md > Points d'attention identifiés (DIV-01-v2)] ; [Verdict Gate 3 > DIV-01-v2] ; [PD-19-tests.md > TC-ERR-02] Description : Le plan mentionne la réserve DIV-01-v2 mais ne décrit pas d'action test explicite pour étendre TC-ERR-02 aux refus CORS et réponses 429 avec vérification des security headers. Impact : Réserve Gate 3 possiblement non levée, risque de rejet en Gate ⅝. Gravité : Bloquant

Point 6

Type : Couverture insuffisante Référence : [PD-19-plan.md > Points d'attention identifiés (DIV-02-v2)] ; [Verdict Gate 3 > DIV-02-v2] ; [PD-19-tests.md > TC-ERR-03] Description : La qualification "résolution IP proxy en test d'intégration" est citée en point d'attention mais sans tâche de mise en œuvre/validation dédiée dans le plan (phases, artefact de test, critère de succès). Impact : Risque de non-preuve INV-06 et non-traitement formel de DIV-02-v2. Gravité : Majeur

Point 7

Type : Risque non mitigé Référence : [PD-19-plan.md > Points d'attention : Performance Redis atomique] ; [PD-19-specification.md > INV-06, INV-07] Description : Le risque de contention/performance Redis est identifié mais aucun mécanisme d'atténuation n'est décrit (timeouts, fallback, stratégie en cas d'indisponibilité Redis, impact sur disponibilité HTTP). Impact : Dégradation service ou comportement non déterministe du rate limiting en production. Gravité : Majeur

Point 8

Type : Couverture insuffisante Référence : [PD-19-plan.md > Composants / audit-log.service.ts] ; [PD-19-specification.md > INV-09] ; [PD-19-tests.md > TC-NOM-06] Description : Le plan se limite à deux nouveaux événements (CORS_REJECTED, RATE_LIMIT_EXCEEDED) sans expliciter la complétude du schéma de log requis (UTC ISO-8601, correlationId, environnement, décision, IP, endpoint, statut) ni la rétention minimale 90 jours. Impact : Non-conformité INV-09 et couverture partielle de TC-NOM-06. Gravité : Bloquant

Point 9

Type : Faisabilité Référence : [PD-19-plan.md > Ordre middlewares] ; [Architecture NestJS implicite + tests TC-NOM-05] Description : La chaîne "middlewares" inclut des éléments qui ne sont pas des middlewares Nest (JwtAuthGuard, "Specific Rate Limit Guards"), ce qui crée une confusion de niveau d'exécution (pipeline middleware vs guards). Impact : Risque d'erreur d'implémentation/ordre réel non maîtrisé, pouvant invalider l'exhaustivité attendue de TC-NOM-05. Gravité : Mineur

Point 10

Type : Ambiguïté Référence : [PD-19-plan.md > Modifier config.schema.ts] ; [PD-19-specification.md > ERR-05] ; [PD-19-tests.md > TC-ERR-05] Description : Le plan ne précise pas explicitement le comportement fail-fast au bootstrap (message d'erreur, code de sortie, conditions invalides couvertes) malgré la modification du schéma. Impact : Fail-fast potentiellement partiel/non testable, risque de non-conformité ERR-05 et TC-ERR-05. Gravité : Majeur


Synthèse

Gravité Nombre
Bloquant 3
Majeur 6
Mineur 1

Total : 10 points


Document produit par le workflow de gouvernance IA — Gate 5 v1 Phase 1 (Review ChatGPT gov-factual) Date : 2026-02-09