PD-248 — Confrontation Gate 5 (v1)¶
Contexte¶
- Gate : 5 (AMBIGUITY)
- Document évalué : Plan d'implémentation + Code Contracts
- Score ChatGPT : 6.75/10 (feasibility: 7, coverage: 8, risk_mitigation: 5, coherence: 7)
- Verdict ChatGPT : RESERVE
Analyse des écarts identifiés¶
GAP-01 : CA-248-09 couvert uniquement par TASK-1¶
Sévérité ChatGPT : Majeure
Analyse Claude : - CA-248-09 stipule : "Inventaire des dépendances montre uniquement expo-screen-capture" - TASK-1 installe la dépendance (action) - TASK-6 exécute S-248-08 qui valide CA-248-09 (vérification) - Le mapping dans le plan montre : CA-248-09 | TASK-1 | TC-248-CFG-01
Verdict : MINEUR — Le mapping existe dans le tableau final du plan (ligne 340). La CA est bien validée par un test. L'ambiguïté est cosmétique.
GAP-02 : INV-248-06 absent du tableau des tâches¶
Sévérité ChatGPT : Majeure
Analyse Claude : - INV-248-06 : "Le comportement DOIT être valide en build production iOS (EAS)" - Dans le tableau des tâches (TASK-1 à TASK-6), INV-248-06 n'apparaît pas explicitement - MAIS dans le mapping INV/CA → TASK (ligne 329) : INV-248-06 | TASK-6 | TC-248-ENV-02
Verdict : MINEUR — Incohérence de présentation entre deux sections du même document. Le mapping final est correct. Correction cosmétique recommandée.
GAP-03 : Absence de plan anti-flakiness OCR¶
Sévérité ChatGPT : Majeure
Analyse Claude : - Le plan spécifie "OCR : Tesseract 5.x" comme outil - La spec CA-248-01..04 indique "vérifié par OCR Tesseract" sans seuil de confiance - L'absence de mitigation flakiness est un risque opérationnel, pas un risque fonctionnel - Si OCR échoue : le test échoue → correction → relance (processus normal)
Verdict : MOYEN (rétrogradé de Majeur) — Risque opérationnel CI, pas de risque de non-conformité fonctionnelle. Recommandation d'ajouter une note de robustesse dans TASK-6.
GAP-04 : Comportements iOS spécifiques non sécurisés¶
Sévérité ChatGPT : Moyenne
Analyse Claude : - Le hook useScreenshotProtection utilise useFocusEffect (pattern React Navigation standard) - useFocusEffect gère automatiquement les transitions app state (foreground/background) - INV-248-03 couvre explicitement les transitions sensible→sensible - INV-248-06 + CA-248-08 couvrent la validation en build production
Verdict : NON VALIDE — Les comportements iOS sont couverts par le pattern standard de React Navigation. Pas d'écart réel.
GAP-05 : CA-248-07 sans validation explicite¶
Sévérité ChatGPT : Moyenne
Analyse Claude : - CA-248-07 : "Aucune UI d'alerte screenshot" - Mapping plan (ligne 338) : CA-248-07 | TASK-4 | TC-248-SIL-01 - TC-248-SIL-01 est défini dans PD-248-tests.md et couvre explicitement ce critère - Le Code Contract CC-248-03 spécifie : "Aucune alerte utilisateur (INV-248-04)"
Verdict : NON VALIDE — Le mapping existe, le test existe, le code contract est explicite.
Synthèse des écarts reclassifiés¶
| ID | Sévérité initiale | Sévérité reclassifiée | Justification |
|---|---|---|---|
| GAP-01 | Majeure | MINEUR | Mapping présent dans section finale |
| GAP-02 | Majeure | MINEUR | Incohérence cosmétique, mapping correct |
| GAP-03 | Majeure | MOYEN | Risque opérationnel, pas fonctionnel |
| GAP-04 | Moyenne | NON VALIDE | Couvert par pattern standard |
| GAP-05 | Moyenne | NON VALIDE | Mapping et test existent |
Écarts valides restants : 3 (2 MINEUR, 1 MOYEN)
Re-scoring après confrontation¶
| Critère | Score initial | Score corrigé | Justification |
|---|---|---|---|
| feasibility | 7/10 | 8/10 | Le pattern useFocusEffect couvre les comportements iOS |
| coverage | 8/10 | 8.5/10 | Mappings complets dans section finale du plan |
| risk_mitigation | 5/10 | 7/10 | Risque OCR est opérationnel, pas fonctionnel |
| coherence | 7/10 | 8/10 | Incohérences cosmétiques, pas structurelles |
Nouveau score moyen : 7.875/10
Actions correctives recommandées¶
Corrections mineures (non bloquantes)¶
- TASK-6 : Ajouter
INV-248-06dans la liste des invariants couverts - TASK-6 : Ajouter une note sur la robustesse OCR (retry, seuil confiance 70%)
- Alignement tableaux : Harmoniser les invariants listés entre les deux sections du plan
Pas de correction majeure requise¶
Le plan couvre tous les INV et CA. Les écarts identifiés sont cosmétiques ou des recommandations d'amélioration.
Recommandation de verdict¶
RESERVE — Le plan est conforme sur le fond. Les écarts restants sont mineurs et peuvent être corrigés pendant l'implémentation sans risque de non-conformité.
Conditions de levée de réserve : 1. Ajouter INV-248-06 explicitement dans TASK-6 2. Documenter la stratégie OCR dans TASK-6 (seuil, retry)