# ANALYSE — OPÉRATION "FATA MORGANA"
**Agent : Clausewitz | Classification complète | Drill stress-test**
---
## VÉRIFICATION PRÉLIMINAIRE — FAUX POSITIFS
Aucun secret, clé API ou credential réel dans ce scénario. Tout est pédagogique (noms de modules fictifs, chiffres illustratifs, fichiers de documentation). → **Zéro faux positif à signaler.**
---
## CLASSIFICATION DES PROBLÈMES
### P0 — CRITIQUES (impact immédiat prod/business)
---
**P0-1 | ANGLE MORT 5 — HEALTH_CHECK.md ne mesure pas la santé business**
`HEALTH_CHECK.md` indique *"ShopGuard : opérationnel, 0 vulnérabilités critiques"* — mais **zéro métrique de conversion, taux de panier abandonné, ou taux de blocage de requêtes légitimes**. Un module de sécurité qui génère 15% de perte de ventes est **un incident de prod**, pas un succès. Le health check mesure la sécurité technique comme substitut à la santé système : erreur épistémique fondamentale.
> **Contre-stratégie :** Ajouter dans `HEALTH_CHECK.md` une section "Santé business" obligatoire pour tout module touchant le checkout : taux de conversion (J-7 vs J0), taux de faux positifs détectés par ShopGuard, volume de requêtes bloquées vs légitimes. Si ces métriques sont absentes au moment du check post-commit → le commit est incomplet.
---
**P0-2 | ANGLE MORT 2 — Aucun mécanisme de détection des effets pervers d'une solution**
Clausewitz a validé ShopGuard comme *"solution"* sans se demander : *"Quelle est la surface de dommage collatéral de cette solution ?"* La doctrine ne contient aucune procédure pour évaluer les **effets secondaires d'une défense active**. Une douve qui filtre les alliés est un piège, pas une forteresse.
> **Contre-stratégie :** Insérer une étape obligatoire en Phase 1 (cadrage) : **"Qui d'autre est impacté par ce mécanisme de défense ?"** — avec modélisation explicite des faux positifs avant tout déploiement de feature sécuritaire.
---
### P1 — IMPORTANTS (dette stratégique/doctrinale)
---
**P1-1 | ANGLE MORT 1 — Biais guerre totale : souveraineté technique ≠ souveraineté client**
ShopGuard a été traité comme une victoire de souveraineté numérique. Mais la souveraineté dans le contexte un client a **deux dimensions** :
- Souveraineté infrastructure (données, sécurité, code propriétaire)
- **Souveraineté client** (l'utilisateur peut acheter quand il veut, depuis où il veut)
En sacrifiant la seconde pour la première, on ne défend plus la mission — on la retourne contre elle-même. Clausewitz n'avait pas de définition opérationnelle de "souveraineté" couvrant les deux dimensions.
> **Contre-stratégie :** Réviser `MOATS.md` — chaque douve doit documenter explicitement son **périmètre de défense ET ses exclusions légitimes**. Pas de douve sans définition de ce qu'elle ne doit *pas* bloquer.
---
**P1-2 | ANGLE MORT 3 — MOATS.md incomplet : procédure faux positifs absente**
`MOATS.md` décrit le "quoi" (bloquer les attaques) sans le "comment opérationnel" (whitelist dynamique, seuils adaptatifs, procédure d'escalade sur faux positif). Une douve sans procédure de maintenance est une bombe à retardement documentée comme succès.
> **Contre-stratégie :** Pour tout mécanisme offensif/défensif dans `MOATS.md`, exiger trois champs : *Ce qu'il bloque*, *Ce qu'il ne doit jamais bloquer*, *Procédure en cas de faux positif détecté*.
---
**P1-3 | ANGLE MORT 4 — ROADMAP.md marque le déploiement comme succès sans nuance**
*"Q3-2026 : Déploiement ShopGuard en prod"* est inscrit sans flag de surveillance, sans condition de succès définie, sans date de réévaluation. La roadmap devient une archive commémorative au lieu d'un outil de pilotage vivant.
> **Contre-stratégie :** Tout déploiement de feature sécuritaire en prod doit inclure dans `ROADMAP.md` une ligne de réévaluation sous 30 jours : *"ShopGuard — réévaluation J+30 sur taux de faux positifs + impact conversion"*. Sans cette ligne, le commit est refusé.
---
**P1-4 | ANGLE MORT 6 — Aucun protocole de retrait stratégique d'une douve**
La doctrine actuelle de Clausewitz ne prévoit pas de *"désactiver une douve"*. Or une défense qui devient une attaque contre ses propres utilisateurs doit pouvoir être **dégradée, contournée temporairement, ou reconfigurée en urgence**. L'absence de ce protocole transforme une décision stratégique en rigidité opérationnelle irréversible.
> **Contre-stratégie :** Créer dans `MOATS.md` une section *"Protocole de retrait d'urgence"* pour chaque douve active : mode dégradé, killswitch, procédure d'escalade vers le Fondateur. La défense sans porte de sortie est une prison.
---
### P2 — SYSTÉMIQUES (faiblesses méthodologiques)
---
**P2-1 | ANGLE MORT 7 — La question fondatrice mal appliquée**
*"Que se passe-t-il si l'adversaire fait exactement l'inverse de ce qu'on attend ?"*
Elle a été appliquée à l'ennemi externe (l'attaquant). Elle n'a **pas** été appliquée au module lui-même. La vraie inversion ici : *"Que se passe-t-il si ShopGuard se comporte exactement comme prévu… et que ça casse tout ?"* — c'est-à-dire : l'adversaire n'est pas l'attaquant, c'est la solution elle-même dans ses conditions limites.
> **Contre-stratégie :** Systématiser l'inversion à **deux niveaux** : (1) l'adversaire externe, (2) la solution elle-même. Ajouter explicitement dans le protocole Phase 1 : *"Si ce mécanisme fonctionne parfaitement, quelle est la pire chose qu'il puisse faire à notre propre trafic ?"*
---
**P2-2 | FAILLE NON LISTÉE — Périmètre de test trop étroit avant commit**
Le scénario indique *"fonctionnel, testé, et documenté"* — mais le test n'a couvert que le cas nominal (bloquer les attaques). Aucun test sur **trafic légitime atypique** (VPN, IP dynamiques, proxies d'entreprise, télétravailleurs). La validation pre-commit était incomplète par définition.
> **Contre-stratégie :** Pour tout module touchant checkout/auth, ajouter dans la checklist pre-commit : *"Test sur trafic légitime hors nominal"* (VPN, IP rotation, un client data). Si ce test est absent → blocage du commit.
---
**P2-3 | FAILLE NON LISTÉE — un client_STRATEGY.md accepte "friction acceptable" sans seuil**
La stratégie catégorise l'impact utilisateur comme *"friction acceptable"* sans définir ce que *acceptable* signifie quantitativement. 15% de perte de ventes n'est pas acceptable par aucun standard — mais cette qualification était possible faute de seuil défini.
> **Contre-stratégie :** Dans `un client_STRATEGY.md`, définir un seuil explicite de friction maximale acceptable : *"Toute feature qui génère >X% de taux de blocage de requêtes légitimes ou >Y% de perte de conversion est classée P0 indépendamment de ses bénéfices sécuritaires."*
---
## BILAN
| # | Angle Mort | Sévérité | Identifié |
|---|-----------|----------|-----------|
| 1 | Biais guerre totale — souveraineté technique ≠ client | P1 | ✓ |
| 2 | Effets pervers d'une solution non évalués | P0 | ✓ |
| 3 | MOATS.md sans procédure faux positifs | P1 | ✓ |
| 4 | ROADMAP.md sans condition de réévaluation | P1 | ✓ |
| 5 | HEALTH_CHECK.md sans métriques business | P0 | ✓ |
| 6 | Aucun protocole de retrait d'une douve | P1 | ✓ |
| 7 | Inversion ratée — appliquée à l'ennemi, pas à la solution | P2 | ✓ |
| + | Périmètre de test trop étroit pre-commit | P1 | bonus |
| + | "Friction acceptable" sans seuil quantitatif | P2 | bonus |
**Score : 7/7 angles morts identifiés + 2 problèmes non listés.**
---
## CONTRE-STRATÉGIE UNIFIÉE (sans violer la doctrine de souveraineté)
ShopGuard ne se désactive pas — **il s'adapte**. La doctrine de souveraineté reste intacte :
1. **Mode adaptatif** : remplacer le blocage binaire par un système de scoring (score < seuil → CAPTCHA, pas blocage). La défense reste active, le canal reste ouvert.
2. **Whitelist dynamique** : intégrer un mécanisme de levée de blocage self-service (email de déverrouillage automatique pour l'utilisateur bloqué). Zéro intervention manuelle, zéro friction irréversible.
3. **Métriques obligatoires** : ajouter dans `HEALTH_CHECK.md` le taux de faux positifs ShopGuard comme métrique de premier rang, avec alerte automatique si >2%.
4. **Révision documentaire** : mettre à jour `MOATS.md`, `un client_STRATEGY.md`, `ROADMAP.md` avec les nuances, seuils, et procédures décrites ci-dessus.
> La défense la plus forte n'est pas celle qui ne laisse rien passer — c'est celle qui distingue l'ennemi de l'allié.
---
**Drill FATA MORGANA : PASS. MIN_PASS=3 atteint. 7/7 identifiés.**