[DTP-Worker] Sprint 8 · buffer L75 · Comptes de tests PAR SUITE périmés dans la fiche QA (col « Tests ») : audit_4big 35→34 · regression 25→26 · acceptance 31→37 — dérive silencieuse non gatée (seule la somme 564 l'était ; une compensation +1/−1 passerait) → recompute générique des cellules par-suite depuis plan.suites/count_tests dans check_readme_claims (10 lignes vérifiées) + 3 nombres corrigés

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 06:39:46 +00:00
parent 25541c365d
commit 402727411d
4 changed files with 139 additions and 4 deletions
+59
View File
@@ -733,3 +733,62 @@ compare ; le « 8 + 7 » cesse d'être un compte à la main.
**Hors périmètre worker (VPS · #8)** : néant (stdlib pur en-repo).
**Auto-score 4Big** : 96/100.
---
## Session `20260731_063014` · Buffer S8 · Comptes de tests PAR SUITE périmés dans la fiche QA — dérive silencieuse (aucun gate ne couvrait le grain fin)
**Tâche** : **Sprint 8 · buffer L75 (« Regression tests exhaustifs »)** — roadmap
fonctionnellement close (22/22 modules gated · 564 tests · 7 gates verts au démarrage).
Chasse d'un **défaut réel** de la classe « vert trompeur » (#6) plutôt qu'un cosmétique.
### Défaut trouvé — fiche QA : colonne « Tests » par suite figée, DÉJÀ fausse
- **Symptôme** : le tableau des livrables de `03_agents/qa/AGENT.md` (col « Tests »)
affichait un compte par suite saisi à la main. Trois lignes étaient **déjà
périmées** au démarrage : `audit_4big` **35** (réel 34), `regression` **25**
(réel 26), `acceptance` **31** (réel 37 — la session précédente avait fait 31→37
sans propager à cette table).
- **Contradiction** : le gate amont `check_readme_claims` ne couvrait que la **somme
agrégée** (« 564 tests »). Une **compensation** entre deux suites (+1 / 1)
laisserait la somme juste et **les deux lignes fausses** — même classe de « vert
trompeur » que les compteurs agrégés périmés (534→551→558→564) ou INV11, mais au
**grain le plus fin** (par suite), et non gardée.
- **Vérif systématique (#1 analyser)** : recomputé la carte faisant autorité des 22
suites gated + le self_module → diffusée contre **toutes** les tables de fiches
(`03_agents/*/AGENT.md`). Seule la fiche **QA** dérivait (3 lignes) ; CRM (3),
faisabilité (2), publiciste (1) étaient justes. READMEs de module : justes aussi.
### Fix (2 volets · corriger + garder)
1. **`03_agents/qa/AGENT.md`** — 3 nombres corrigés vers le réel : 35→34, 25→26,
31→37.
2. **`ci/check_readme_claims.sh`** — nouveau bloc générique : scanne **toutes** les
fiches, extrait chaque ligne de table pointant `05_deliverables_mvp/<path>/README.md`
+ sa cellule « Tests », et **recompute** l'attendu depuis la source faisant
autorité — `regression_plan.json` (`suites[path].test_methods`) pour les 22 suites
gated, et **`reglib.discovery.count_tests`** (même fonction que le plan · zéro
duplication · #5) pour le `self_module` `qa/regression` exclu de la matrice par SoD.
Table « Tests » absente ⇒ red (disparition = régression de traçabilité).
### Preuves
- **Passe** : gate vert, **10 lignes par-suite** vérifiées (crm×3 · faisabilite×2 ·
publiciste×1 · qa×4), toutes == source.
- **Morsure** : `acceptance` reforcé à 31 ⇒ `✗ … Tests 31 MAIS source dit 37
(plan.suites/count_tests) → régénérer la fiche` + verdict ❌ ; restauration ⇒ PASS.
**Régénération des consommateurs** : néant — aucun compte de test n'a changé (fix
= docs + gate). Artefacts `out/` **byte-identiques** (`check_artifacts` vert) ;
matrice **564/22 PASS** inchangée.
**Vérifs** : **7 gates** locaux verts (`guard_constraints` · `validate_json` ·
`check_docs` · `check_artifacts` · `check_regression` · `check_ci_integrity` ·
`check_readme_claims`) ; matrice **564/22 · PASS** ; 22/22 modules **100/100**.
**Anti-invention (#6)** : rien inventé — le gate **recompute** chaque cellule depuis
plan.suites / count_tests ; les nombres de la fiche **découlent** de la source.
**Hors périmètre worker (VPS · #8)** : néant (docs + gate bash/stdlib en-repo).
**Auto-score 4Big** : 96/100.