{ "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": 25 }, { "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": 35 }, { "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": 24 }, { "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": 629, "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." ] }