{
  "version": "1.0.0",
  "project": "IchiGridEA",
  
  "initialization_checks": {
    "handles_valid": {
      "description": "Tous les handles créés != INVALID_HANDLE",
      "severity": "CRITICAL",
      "auto_check": true
    },
    "get_last_error_zero": {
      "description": "GetLastError() == 0 après chaque opération",
      "severity": "CRITICAL",
      "auto_check": true
    },
    "copy_buffer_success": {
      "description": "CopyBuffer récupère les bonnes valeurs",
      "severity": "HIGH",
      "auto_check": true
    },
    "oninit_success": {
      "description": "OnInit() termine sans erreur",
      "severity": "CRITICAL",
      "auto_check": true
    },
    "includes_no_conflict": {
      "description": "Tous les .mqh inclus sans conflit",
      "severity": "CRITICAL",
      "auto_check": true
    }
  },
  
  "signals_checks": {
    "ichimoku_logical": {
      "description": "Booléens Ichimoku retournent des valeurs logiques",
      "severity": "HIGH",
      "auto_check": false
    },
    "no_trade_without_signal": {
      "description": "Aucun trade si signal absent",
      "severity": "CRITICAL",
      "auto_check": false
    },
    "no_duplicate_orders": {
      "description": "Aucun doublon d'ordre",
      "severity": "HIGH",
      "auto_check": true
    }
  },
  
  "grid_checks": {
    "no_overlap": {
      "description": "Ordres ne se chevauchent pas",
      "severity": "MEDIUM",
      "auto_check": false
    },
    "levels_saved": {
      "description": "Niveaux sauvegardés correctement",
      "severity": "MEDIUM",
      "auto_check": false
    },
    "martingale_correct": {
      "description": "Martingale respecte le multiplicateur",
      "severity": "HIGH",
      "auto_check": false
    }
  },
  
  "protection_checks": {
    "virtual_tpsl_displayed": {
      "description": "SL/TP virtuels affichés et mis à jour",
      "severity": "MEDIUM",
      "auto_check": false
    },
    "values_normalized": {
      "description": "Calculs normalisés (NormalizeDouble)",
      "severity": "CRITICAL",
      "auto_check": true
    },
    "protections_blocking": {
      "description": "Protections bloquent si condition critique",
      "severity": "HIGH",
      "auto_check": false
    }
  },
  
  "lifecycle_checks": {
    "handles_released": {
      "description": "Handles libérés dans OnDeinit()",
      "severity": "CRITICAL",
      "auto_check": true
    },
    "objects_deleted": {
      "description": "Objets graphiques supprimés",
      "severity": "MEDIUM",
      "auto_check": false
    },
    "trade_context_checked": {
      "description": "IsTradeContextBusy() vérifié avant trade",
      "severity": "HIGH",
      "auto_check": true
    }
  },
  
  "code_quality_checks": {
    "has_header": {
      "description": "Header de traçabilité présent",
      "severity": "CRITICAL",
      "auto_check": true,
      "pattern": "@section:"
    },
    "has_comments": {
      "description": "Code commenté",
      "severity": "MEDIUM",
      "auto_check": true,
      "min_comment_ratio": 0.1
    },
    "no_magic_numbers": {
      "description": "Pas de nombres magiques",
      "severity": "LOW",
      "auto_check": false
    },
    "inputs_declared": {
      "description": "Inputs bien déclarés",
      "severity": "HIGH",
      "auto_check": true
    }
  },
  
  "permanent_errors": [
    "Handles indicateurs - création ET libération",
    "Fonctions MQL5 - OnInit(), OnTick(), OnDeinit() correctes",
    "Variables globales - déclarées et utilisées",
    "Logs/Print - présents pour debug",
    "Documentation MQL5 - respectée",
    "Paramètres - tous input bool pour modularité",
    "Normalisation - points, lots, prix",
    "Cohérence - pas de doublons entre modules",
    "Inputs - bien déclarés et utilisés",
    "Commentaires - code documenté"
  ],
  
  "severity_levels": {
    "CRITICAL": {
      "block_generation": true,
      "description": "Bloque la génération"
    },
    "HIGH": {
      "block_generation": false,
      "warning": true,
      "description": "Warning mais continue"
    },
    "MEDIUM": {
      "block_generation": false,
      "warning": true,
      "description": "Info seulement"
    },
    "LOW": {
      "block_generation": false,
      "warning": false,
      "description": "Suggestion"
    }
  }
}
