PD-47 — Rapport de confrontation (Gate 8 — CLOSURE)¶
Ce rapport est produit par l'orchestrateur Claude avant la Gate 8 PMO. Il confronte les documents produits pour identifier convergences, divergences et zones d'ombre.
1. Sources confrontées¶
| Document | Source | Étape |
|---|---|---|
| DOC-1 | Acceptabilité (PD-47-acceptability.md) | Étape 7 (Claude orchestrateur) |
| DOC-2 | Revue d'acceptabilité post-correction | Gate 8 Phase 1 (ChatGPT) |
| DOC-3 | Revue sécurité adversariale | Étape 7 (ChatGPT) |
2. Convergences¶
-
C-01 — Verdict global : Les trois documents convergent vers ACCEPTÉ AVEC RÉSERVES. Aucun ne conclut REFUSÉ ni ACCEPTÉ sans condition.
-
C-02 — Tests unitaires : DOC-1 et DOC-2 confirment 347/347 tests passants sur 11 suites. Aucune contradiction sur ce point factuel.
-
C-03 — Absence d'écart BLOQUANT : Les trois documents s'accordent sur l'absence de vulnérabilité prouvée ou d'écart bloquant la livraison. Tous les écarts identifiés sont MINEUR ou RÉSERVE après analyse.
-
C-04 — Défense en profondeur crypto : DOC-1 (INV-47-01 à INV-47-09 PASS) et DOC-3 (barrières primaires AES-256-GCM + SSE-KMS, Vault Transit, envelope encryption DEK, bucket IAM dédié) convergent sur la robustesse du modèle de chiffrement.
-
C-05 — Absence de contrôleur HTTP : DOC-1 (analyse S-01 : "module backup n'expose aucun contrôleur HTTP") et DOC-3 (S-01 : "MAJEUR si endpoint exposé") convergent sur le fait que le module fonctionne exclusivement via Cron + BullMQ, réduisant la surface d'attaque réseau.
-
C-06 — Écart S-02 (fuite crypto en logs) : Les trois documents identifient ce risque. DOC-1 et DOC-3 le qualifient de résiduel faible (wrappedDek déjà chiffré par Vault Transit). DOC-2 confirme l'absence de preuve de clôture.
-
C-07 — Écart S-03 (DoS watchdog) : Les trois documents reconnaissent les mitigations en place (circuit-breaker
maxReplanificationCycles=3, BullMQ dedup). DOC-2 qualifie de PARTIELLEMENT RÉSOLU, DOC-1 et DOC-3 acceptent la mitigation. -
C-08 — Quality gates automatisées : DOC-1 confirme ESLint 0 erreurs, TypeScript 0 erreurs, Prettier conforme. Aucun document ne contredit ces résultats.
3. Divergences¶
Les conflits ne doivent JAMAIS être lissés. Chaque divergence est rendue visible.
- DIV-01 — Statut de l'écart E-03 (référence Epic incomplète)
- DOC-1 : qualifie E-03 comme "MINEUR, cosmétique" et le classe OUVERT sans urgence.
- DOC-2 : qualifie E-03 comme "NON RÉSOLU" et cite la preuve factuelle :
PD-47-specification.mdcontient toujoursEpic : Référence épique à compléterau commitdbf3af0. -
Impact : Divergence de qualification, pas de fond. Le constat factuel est identique (non corrigé). La divergence porte sur le niveau de préoccupation : DOC-1 considère cela négligeable, DOC-2 le maintient comme écart non résolu.
-
DIV-02 — Niveau de preuve suffisant pour T-03 (risque flaky tests temporels)
- DOC-1 : qualifie T-03 comme "MINEUR (mitigé)" et accepte la mitigation par mocks comme suffisante.
- DOC-2 : maintient T-03 comme "OUVERT" et note explicitement l'absence de preuves supplémentaires (exécutions répétées, campagne de stabilité). Ne valide pas la mitigation par mocks comme preuve de clôture.
-
Impact : Divergence sur le critère de clôture d'un écart. DOC-2 exige une preuve positive (campagne anti-flaky), DOC-1 considère l'architecture mockée comme preuve suffisante.
-
DIV-03 — Criticité effective de S-02 (fuite artefacts crypto)
- DOC-1 : criticité effective MINEUR (mitigé), classé dans les écarts consolidés avec note "à vérifier si API exposée".
- DOC-2 : statut NON RÉSOLU, aucune preuve de clôture.
- DOC-3 : classé RÉSERVE, recommande
@Exclude+ mapping DTO strict + bannir wrappedDek/iv/authTag des réponses. -
Impact : Trois qualifications différentes pour le même écart (MINEUR vs NON RÉSOLU vs RÉSERVE). Le point de fond est convergent (risque existant, mitigé par Vault Transit), mais le statut de résolution diverge.
-
DIV-04 — Faux positifs des reviews LLM (DOC-1 vs DOC-3)
- DOC-1 : qualifie E-01 et E-02 (review code) comme "faux positifs" car le reviewer ChatGPT n'avait pas accès au code source.
- DOC-3 : utilise systématiquement la formulation "non vérifiable sans code" / "non démontré" pour tous les forbidden patterns et tentatives de bypass.
- Impact : DOC-1 invalide les constats par manque d'accès au code. DOC-3 les maintient comme risques non prouvés mais non réfutés. La divergence porte sur l'interprétation : "absence de preuve de faille" (DOC-1) vs "absence de preuve de conformité" (DOC-3). Ce point est structurant pour le verdict PMO.
4. Zones d'ombre¶
-
ZO-01 — Coverage backup-encryption.service.ts à 67% : DOC-1 justifie par "méthodes Vault init testées en intégration", mais aucun résultat de test d'intégration n'est fourni dans les documents. Aucune preuve factuelle de couverture des chemins Vault AppRole et verifyTransitKey.
-
ZO-02 — Coverage backup-relaunch.consumer.ts à 0% : DOC-1 mentionne "STUB: PD-47 — couvert par tests d'intégration", mais le consumer est dans le scope PD-47 (pas une story future). Aucun test d'intégration n'est référencé dans les documents pour ce fichier. DOC-2 et DOC-3 ne mentionnent pas ce point.
-
ZO-03 — Tests d'intégration / e2e : Les trois documents évaluent uniquement les tests unitaires (347 tests). Aucun résultat de test d'intégration ou e2e n'est présenté. DOC-3 recommande des tests e2e sécurité mais sans constater leur existence ou absence.
-
ZO-04 — Disponibilité Vault Transit en production : DOC-1 note l'hypothèse "Vault Transit disponible en production (fail-closed si indisponible)" sans la démontrer. Aucun document ne traite du comportement du module en cas d'indisponibilité prolongée de Vault.
-
ZO-05 — Modèle multi-tenant / RLS pour le module backup : DOC-3 note explicitement "modèle multi-tenant/RLS non explicité pour ce module" et classe le cross-access (JWT A lit backups B) comme "non démontré". Ni DOC-1 ni DOC-2 n'adressent ce point.
-
ZO-06 — 4 échecs de tests pré-existants : DOC-1 mentionne "4 échecs pré-existants (user/, documents/)" sur le projet complet (7599/7667). Ces échecs ne sont ni détaillés ni analysés dans aucun document. Leur impact potentiel sur le module backup n'est pas évalué.
-
ZO-07 — Sonar CE Task FAILED : DOC-1 note "CE Task : FAILED (Elasticsearch indexing serveur — infra)" avec 0 issues backup. Ni DOC-2 ni DOC-3 ne mentionnent Sonar. L'impossibilité de compléter l'analyse Sonar (même si causée par l'infra) laisse un angle mort sur d'éventuels issues non détectés.
-
ZO-08 — Garde-fou CI forbidden patterns : DOC-3 recommande un garde-fou CI automatisé pour les forbidden patterns (requêtes raw, logs secrets, transitions illégales). Aucun document ne confirme l'existence ou la planification d'un tel garde-fou.
5. Recommandation¶
- Procéder — convergence confirmée, aucun conflit bloquant
Justification : Les trois documents convergent sur ACCEPTÉ AVEC RÉSERVES. Les divergences identifiées (DIV-01 à DIV-04) portent sur des qualifications de criticité et des niveaux de preuve, pas sur des failles avérées. Les zones d'ombre (ZO-01 à ZO-08) sont réelles mais aucune ne constitue un risque bloquant immédiat pour un module sans exposition HTTP. Le PMO devra statuer sur le niveau de preuve exigé pour les écarts S-02 et T-03 (DIV-02, DIV-03) et sur le traitement des zones d'ombre ZO-01/ZO-02 (coverage non démontrée pour 2 fichiers).