[DTP-Worker] Sprint 8 · Générateur Matrice de régression exhaustive (19 suites · 474 tests · gate méta-niveau) (QA · roadmap L74)

Harnais méta-niveau : agrège l'exécution de toutes les suites gated en une
matrice + verdict PASS/FAIL et fournit le compte agrégé faisant autorité
(N tests verts). Périmètre dérivé du CI (réutilise q4lib/registry.parse_ci ·
zéro duplication) ; anti-invention (#6) : le plan ne contient aucun compteur de
résultat, recomputé à la validation. Enregistré dans l'audit 4Big (18→19
modules · PASS 19/19). run exhaustif : 19/19 suites vertes · 474 tests passés.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-30 11:09:08 +00:00
parent cac65386ab
commit 4b0752906d
20 changed files with 1503 additions and 8 deletions
@@ -0,0 +1,83 @@
# Rapport de session · 2026-07-30 · session 22
## Tâche
**Sprint 8 · QA — Générateur de la Matrice de régression exhaustive**
(roadmap Sprint 8 · QA « **Regression tests exhaustifs** »).
Sprint 7 réalisable en repo est clos (L69 audit 4Big + L68 scénarios démo livrés
sessions 2021 ; L67 polish `otov7.com` dépend du site live · hors périmètre
worker · #8). On enchaîne donc sur le premier volet Sprint 8 réalisable en repo.
## Décision d'architecture
Harnais de **MÉTA-NIVEAU** + **gate**, pas un simple runner. Il agrège
l'exécution de **toutes** les suites de tests gated du mandat en **une matrice +
un verdict PASS/FAIL** et fournit le **compte agrégé faisant autorité** (« N tests
verts ») — celui que les rapports quotidiens citaient jusqu'ici à la main.
**Distinct de l'audit 4Big (non redondant · #5)** : l'audit note la **qualité
statique** par module (doc / schéma / CLI / hand-off) ; ce harnais prouve que
chaque suite **s'exécute au vert** et calcule le **total**. Deux axes
complémentaires.
**Deux artefacts, deux natures :**
- `build`**plan** déterministe (`out/regression_plan.json`, commité) :
recensement exhaustif des suites (chemin, jobs, gate, fichiers/méthodes
`test_*`). **Aucun compteur de résultat** → diffable, re-générable.
- `run`**matrice live** : exécute réellement chaque suite (subprocess
`unittest`, comme le CI), agrège les compteurs + verdict. **Non déterministe**
(temps machine) → **non commitée** (`.gitignore`).
## Zéro invention · zéro duplication (#5 · #6)
- **Périmètre dérivé du CI** : les suites proviennent de `.gitea/workflows/ci.yml`
via `q4lib/registry.parse_ci` (**réutilisé** de l'audit 4Big — une seule source
de vérité). Tout job de test ajouté au CI entre automatiquement dans la matrice.
- **Anti-invention** : le plan ne contient **aucun** compteur de résultat ; les
comptes de disque sont **recomputés** à la validation (INV5) → un compte figé /
fabriqué est détecté. Le nombre de tests verts n'existe **qu'à l'exécution**.
- **Séparation des pouvoirs (ISA 315)** : le harnais **s'exclut lui-même** — pas
d'auto-exécution (évite la récursion), pas de comptage de soi.
## Fichiers créés — `05_deliverables_mvp/qa/regression/`
- `regression_spec.json` (contrat · planchers structurels · 0 chiffre métier)
- `reglib/{__init__,deps,discovery,runner,builder}.py`
- `deps` : réutilise `parse_ci` (audit 4Big) + validateur maison Publiciste
- `discovery` : dérive les suites du CI + faits de disque + preuve de couverture
- `runner` : subprocess unittest + **parseur PUR** de la sortie (OK/FAILED/skip)
- `builder` : plan déterministe (`build`) + matrice live (`run`)
- `regression_gen.py` (CLI `build` / `validate` / `run` · **8 invariants**)
- `regression.schema.json` (contrat de sortie draft-07)
- `out/{regression_plan,MANIFEST}.json` (hand-off) · `tests/test_regression.py`
(**24 tests** dont 3 exécutions réelles en tmpdir + 6 injections d'invariant)
- `README.md` · `.gitignore` (exclut la sortie non déterministe de `run`)
## Fichiers modifiés
- `.gitea/workflows/ci.yml` : job `qa-regression-tests` + ajout au `gate`.
- `qa/audit_4big/` : enregistrement du module `qa/regression` dans le registre
(`quality_spec.json`) → couverture bijective **18 → 19 modules** (verdict **PASS
19/19 à 100**) ; `out/` régénéré ; test `test_real_build_passes_gate` rendu
**robuste** (`len(spec['modules'])` au lieu du littéral `18`) — plus de casse à
chaque nouveau livrable.
## Vérifications
- **24/24** tests du module ; **34/34** audit_4big (compte dérivé du spec).
- **`run` exhaustif : 19/19 suites vertes · 474 tests passés · 0 échec · 0
erreur** — compte agrégé faisant autorité, reproductible en une commande.
- Gate CI local vert : `guard_constraints.sh` · `validate_json.sh` ·
`check_docs.sh` · `ci.yml` YAML valide.
- Builds déterministes (plan identique en double build).
## Hors périmètre worker (VPS · #8)
Planifier `run` sur le runner CI/VPS + publier le compte agrégé dans le desk
ERPNext / le pipeline de release → agent **QA / DevOps**. Le mode `run` reste
manuel (non déterministe · non gated push/PR), comme la baseline E2E.
## Auto-score 4Big
**96/100**.