Files
oto-enterprise-os-dtp/05_deliverables_mvp/qa/regression/out/regression_plan.json
T
Claude Code DTP Worker fd99362660 [DTP-Worker] hardening correctness · le critère CLI de l'audit 4Big (q4lib/criteria.py) détectait l'entrypoint __main__ par un littéral figé double-quoté → loupait silencieusement les gardes simple-quotées / « Yoda » / sans-espaces (toutes du Python valide) → sous-scorage CLI −20 pts d'un module sain (violation #6)
Même racine que le fix ASCII ac595d0 : une détection assume une graphie là où le langage admet plusieurs formes. Fix = regex de FORME (_MAIN_GUARD_RE : 2 styles de guillemets · ordre inversé · espacement libre) + teeth test_cli_detects_single_quoted_and_yoda_guards (3 fixtures, prouvé mordant : ancien littéral rend False sur les 3, nouvelle regex True). Robustesse pure : les 50 gardes du dépôt sont double-quotées et toujours matchées → aucun score ne bouge, quality_report.json byte-identique (audit_4big s'auto-exclut de son scoring). Cascade régression uniquement : 626/609 → 627/610 (nouveau test) + fiches qa/audit_4big 35→36 & agrégat & backend 626→627 re-dérivés (RED check_readme_claims). Sweep préalable : classe ASCII-vs-Unicode close au niveau CODE (générateurs+libs+gates shell tous ASCII-par-domaine sauf les 2 compteurs test déjà \w).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-11 08:39:51 +00:00

311 lines
7.5 KiB
JSON

{
"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": 23
},
{
"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": 36
},
{
"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": 627,
"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."
]
}