Ce dossier est assemblé automatiquement avant chaque gate PMO. Il constitue la base factuelle sur laquelle le verdict est rendu. Itération v2 — après correction des écarts v1.
1. Documents de référence
| Document | Étape | Version | Statut |
| PD-19-besoin.md | 0 | v1 | Présent |
| PD-19-specification.md | 1 | v2 (corrigée) | Présent |
| PD-19-tests.md | 2 | v1 (NON MIS À JOUR) | Présent — décalé |
| PD-19-specification-review.md | 3 (Phase 1) | v2 | Présent |
| PD-19-confrontation-step3.md | 3 (Phase 2) | v2 | Présent |
2. Hypothèses déclarées
- H-01 : Les environnements disposent chacun d'une source de configuration externe fiable.
- H-02 : Les clients légitimes Web disposent d'origines stables et identifiables.
- H-03 : Les applications mobiles natives n'exigent pas d'exception CORS spécifique hors usages WebView documentés.
- H-04 : Les seuils de limitation peuvent être définis par l'équipe produit/sécurité.
- H-05 : Un mécanisme de journalisation des décisions de sécurité est disponible.
- H-06 : Les intégrations B2B peuvent être représentées par des règles d'origine ou canal HTTP explicitement défini.
- H-07 : Les obligations eIDAS de valeur probatoire sont hors périmètre de cette story.
3.1 Invariants ↔ Tests
| Invariant | Test(s) couvrant | Couvert ? | Commentaire v2 |
| INV-01 : Socle security headers | TC-NOM-05 | Couvert | Socle contractualisé (5 headers + HSTS + Cache-Control conditionnel). Ambiguïté résiduelle mineure. |
| INV-02 : Non-divulgation infrastructure | TC-NOM-06, TC-ERR-06 | Couvert | — |
| INV-03 : CORS fondée sur politique d'origines | TC-NOM-01 | Couvert | Paramètres contractualisés : 6 méthodes, 6 headers autorisés, 2 exposés, credentials=true. |
| INV-04 : Refus CORS origine non autorisée | TC-NOM-02, TC-ERR-02 | Couvert | Origines contractualisées par env (prod 2, test 2, dev 2). |
| INV-05 : Preflights déterministes | TC-NOM-03, TC-NOM-04, TC-ERR-03 | Couvert | Max-Age contractualisé (600/300/60). |
| INV-06 : Limitation sur tous les endpoints | TC-NOM-07 | Couvert | Seuils contractualisés : 100 req/60s/IP. Réserve : chaîne de proxy non définie. |
| INV-07 : Réponse 429 explicite | TC-NOM-08, TC-ERR-04 | Couvert | Signal contractualisé : 429 + Retry-After + JSON. |
| INV-08 : Indépendance métier | TC-NOM-12 | Couvert | — |
| INV-09 : Politique auditable | TC-NOM-10 | Couvert | Exigences contractualisées : JSON, UTC ISO-8601, corrélation, 90j. Réserve RGPD. |
| INV-10 : Mode dev borné | TC-NOM-09, TC-NOM-11 | Couvert | Bornes contractualisées : localhost:3000 et :8080. Headers maintenus. |
| INV-11 : Headers en erreur | TC-NOM-05, TC-ERR-06 | Couvert | — |
| INV-12 : Frontière HTTP | TC-INV-12 | Couvert | Test d'audit de dossier — force probante acceptable. |
3.2 Critères d'acceptation ↔ Tests
| Critère | Test(s) couvrant | Vérifié ? | Commentaire v2 |
| CA-01 : Headers sur toute réponse | TC-NOM-05 | Vérifié | Observable v2 = « middleware global, tous statuts et routes ». |
| CA-02 : Non-divulgation techno | TC-NOM-06 | Vérifié | — |
| CA-03 : CORS positive origine autorisée | TC-NOM-01 | Vérifié | — |
| CA-04 : CORS refusée origine non autorisée | TC-NOM-02 | Vérifié | — |
| CA-05 : Preflights positifs déterministes | TC-NOM-03 | Vérifié | — |
| CA-06 : Preflights refusés déterministes | TC-NOM-04 | Vérifié | — |
| CA-07 : Limitation transversale | TC-NOM-07 | Vérifié | Seuils maintenant définis (100/60s). |
| CA-08 : 429 au-delà du seuil | TC-NOM-08 | Vérifié | Signal documenté (Retry-After + JSON). |
| CA-09 : Pas de limitation sous seuil | TC-NOM-07 | Vérifié | — |
| CA-10 : Variation par environnement | TC-NOM-09 | Vérifié | — |
| CA-11 : Configuration auditable | TC-NOM-10 | Vérifié | Journaux JSON UTC, rétention 90j. |
| CA-12 : Mode dev local borné | TC-NOM-11 | Vérifié | Bornes définies. |
| CA-13 : Indépendance identité/métier | TC-NOM-12 | Vérifié | — |
| CA-14 : Headers en erreur 404/405/500 | TC-NOM-05, TC-ERR-06 | Vérifié | CA-14 couvre explicitement 404/405/500 en v2. |
4. Bilan des écarts v2
Écarts résolus (v1 → v2)
| Écart v1 | Résolution v2 |
| ECT-01 (Socle headers non défini, Critique) | INV-01 contractualise 5+2 headers |
| ECT-02 (CORS non contractualisé, Critique) | INV-03/04/05 contractualisent tous les paramètres |
| ECT-03 (Seuils limitation absents, Critique) | INV-06/07 fixent 100/60s/IP + signal 429 |
| ECT-04 (eIDAS non traduit, Critique) | §2 Exclu + H-07 excluent explicitement eIDAS |
| DIV-01 (CA-01 toute vs échantillon) | CA-01 observable v2 = middleware global exhaustif |
| DIV-02 (ERR-05 double comportement) | ERR-05 = fail-fast unique |
| DIV-04 (CA-14 vs ERR-06) | CA-14 couvre explicitement 404/405/500 |
| DIV-05 (INV-06 vs point à clarifier) | Points à clarifier réduits à 2 |
| ECT-05 (Auditabilité non spécifiée) | INV-09 = JSON, UTC, corrélation, 90j |
| ECT-06 (Mode dev non borné) | INV-10 = localhost:3000 et :8080 |
| ECT-07 (Contexte CORS non défini) | §3 Définitions : « toute requête avec Origin » |
Écarts résiduels v2
| ID | Nature | Gravité | Source |
| DIV-02 | Tests §9 non mis à jour (obsolète) | Majeur | Confrontation |
| DIV-06 | TC-ERR-05 non aligné avec ERR-05 v2 | Majeur | Confrontation |
| DIV-07 | Chaîne de proxy de confiance non définie | Majeur | Review + Confrontation |
| DIV-09 | RGPD : IP journalisée sans minimisation | Majeur | Review + Confrontation |
| DIV-03 | Nomenclature ST-xx vs TC-NOM-xx | Mineur | Review + Confrontation |
| DIV-04 | INV-01 « constant » vs conditionnel | Mineur | Review |
| DIV-05 | ERR-03 refus preflight sans observable | Mineur | Review |
| DIV-08 | Credentials=true en dev HTTP | Mineur | Review |
Zones d'ombre
| ZO | Sujet | Impact |
| ZO-01 | Requêtes sans Origin (hors navigateur) | Mineur |
| ZO-02 | Exceptions B2B | Point à clarifier §10.1 |
| ZO-03 | Alerting vs logging | Point à clarifier §10.2 |
5. Rapport de confrontation
- Voir : PD-19-confrontation-step3.md v2
- Synthèse : 8 convergences confirmées, 9 divergences analysées (1 faux positif écarté), 4 zones d'ombre.
- Faux positif écarté : contradiction ERR-01 (lecture erronée de la review)
- Recommandation confrontation : rework nécessaire (mise à jour document de tests)
6. Scoring de convergence
| Critère | Score v1 | Score v2 | Delta |
| completeness | 6 | 8 | +2 |
| testability | 4 | 7 | +3 |
| clarity | 5 | 8 | +3 |
| traceability | 6 | 7 | +1 |
| Métrique | v1 | v2 |
| score_mean | 5.25 | 7.50 |
| score_min | 4 | 7 |
| delta | — | +2.25 |
7. Recommandation pré-verdict
Justification : La spécification v2 résout les 11 écarts de la v1. Aucun Bloquant résiduel. Les 4 Majeurs restants sont : 2 documentaires (tests non synchronisés), 1 opérationnel (proxy confiance), 1 conformité (RGPD). La moyenne 7.50 avec min 7 satisfait la condition RESERVE (mean >= 7.0 mais au moins un score < 8).
Conditions pour GO : Mettre à jour PD-19-tests.md v2 (§9, TC-ERR-05, nomenclature, verdict QA).
Document produit par le workflow de gouvernance IA — Gate 3 Phase 3 v2 (Dossier de conformité) Date : 2026-02-09