{
  "matrix": "OTO QA · Matrice de régression exhaustive",
  "version": "1.0",
  "reference_cadre": "Roadmap Sprint 8 · QA « Regression tests exhaustifs » · CLAUDE.md #5 (zéro régression silencieuse · niveau 4Big)",
  "self_module": "qa/regression",
  "thresholds": {
    "min_test_files": 1,
    "min_methods_per_suite": 8
  },
  "discover_cmd": [
    "python3",
    "-m",
    "unittest",
    "discover",
    "-s",
    "tests"
  ],
  "coverage": {
    "ok": true,
    "suites_count": 24,
    "gated_in_ci": 25,
    "self_module_excluded": "qa/regression",
    "self_module_gated": true,
    "missing_tests_dir": [],
    "not_in_gate": [],
    "orphan_tests_dirs": []
  },
  "suites": [
    {
      "id": "crm.commissions",
      "path": "crm/commissions",
      "jobs": [
        "crm-commissions-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 27
    },
    {
      "id": "crm.dossier_vente",
      "path": "crm/dossier_vente",
      "jobs": [
        "crm-dossier-vente-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 31
    },
    {
      "id": "crm.financement_bancaire",
      "path": "crm/financement_bancaire",
      "jobs": [
        "crm-financement-bancaire-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 37
    },
    {
      "id": "crm.workflow_vente",
      "path": "crm/workflow_vente",
      "jobs": [
        "crm-workflow-vente-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 25
    },
    {
      "id": "demo.scenarios",
      "path": "demo/scenarios",
      "jobs": [
        "demo-scenario-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 39
    },
    {
      "id": "devops.deploy_runbook",
      "path": "devops/deploy_runbook",
      "jobs": [
        "devops-deploy-runbook-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 29
    },
    {
      "id": "faisabilite.bancable",
      "path": "faisabilite/bancable",
      "jobs": [
        "bancable-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 22
    },
    {
      "id": "faisabilite.generator",
      "path": "faisabilite/generator",
      "jobs": [
        "faisabilite-gen-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 17
    },
    {
      "id": "fiscal.ecf_dgii",
      "path": "fiscal/ecf_dgii",
      "jobs": [
        "fiscal-ecf-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 39
    },
    {
      "id": "frontend.chat_otoia",
      "path": "frontend/chat_otoia",
      "jobs": [
        "chat-otoia-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 31
    },
    {
      "id": "frontend.portails",
      "path": "frontend/portails",
      "jobs": [
        "frontend-portails-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 19
    },
    {
      "id": "legal.confotur",
      "path": "legal/confotur",
      "jobs": [
        "legal-confotur-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 44
    },
    {
      "id": "mobile.app_config",
      "path": "mobile/app_config",
      "jobs": [
        "mobile-app-config-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 22
    },
    {
      "id": "pie.manifest",
      "path": "pie/manifest",
      "jobs": [
        "pie-manifest-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 20
    },
    {
      "id": "publiciste",
      "path": "publiciste",
      "jobs": [
        "publiciste-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 26
    },
    {
      "id": "qa.acceptance",
      "path": "qa/acceptance",
      "jobs": [
        "qa-acceptance-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 37
    },
    {
      "id": "qa.audit_4big",
      "path": "qa/audit_4big",
      "jobs": [
        "qa-audit-4big-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 37
    },
    {
      "id": "qa.audit_5d",
      "path": "qa/audit_5d",
      "jobs": [
        "qa-audit-5d-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 37
    },
    {
      "id": "rbac",
      "path": "rbac",
      "jobs": [
        "rbac-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 10
    },
    {
      "id": "rbac.apply_plan",
      "path": "rbac/apply_plan",
      "jobs": [
        "rbac-applyplan-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 16
    },
    {
      "id": "rbac.fixtures_gen",
      "path": "rbac/fixtures_gen",
      "jobs": [
        "rbac-fixtures-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 11
    },
    {
      "id": "rbac.roleprofile_gen",
      "path": "rbac/roleprofile_gen",
      "jobs": [
        "rbac-roleprofile-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 11
    },
    {
      "id": "rbac.userperm_gen",
      "path": "rbac/userperm_gen",
      "jobs": [
        "rbac-userperm-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 12
    },
    {
      "id": "seo",
      "path": "seo",
      "jobs": [
        "seo-tests"
      ],
      "in_gate": true,
      "has_tests_dir": true,
      "test_files": 1,
      "test_methods": 36
    }
  ],
  "under_threshold": [],
  "totals": {
    "suites": 24,
    "test_files": 24,
    "test_methods": 635,
    "min_methods": 10,
    "under_threshold": 0
  },
  "verdict": "PASS",
  "notes": [
    "Harnais de MÉTA-NIVEAU : agrège l'exécution de TOUTES les suites de tests gated du mandat en une seule matrice + un verdict PASS/FAIL. Sprint 8 · QA « Regression tests exhaustifs ».",
    "Périmètre PROUVÉ, pas déclaré : les suites sont DÉRIVÉES de .gitea/workflows/ci.yml (réutilise q4lib/registry.parse_ci — zéro duplication · #5), jamais listées à la main. Tout job de test ajouté au CI entre automatiquement dans la matrice.",
    "Séparation des pouvoirs (ISA 315) : le harnais s'exclut lui-même (self_module) — il ne s'auto-exécute pas (évite la récursion) et ne se compte pas dans le total régression.",
    "ANTI-INVENTION (#6) : le `build` (plan) ne contient AUCUN compteur de résultats (0 test vert écrit à la main) ; seuls des FAITS de disque (fichiers/méthodes test_*) et de CI (job, gate) y figurent. Les compteurs verts/rouges sont produits UNIQUEMENT par `run`, en parsant la sortie réelle de unittest.",
    "Distinct de l'audit 4Big : audit_4big note la QUALITÉ statique par module (doc/schema/CLI/hand-off) ; ce harnais prouve que chaque suite S'EXÉCUTE AU VERT et fournit le compte agrégé faisant autorité (« N tests verts »). Axes complémentaires, non redondants."
  ]
}
