[DTP-Worker] Sprint 8 · buffer L75 · Chiffre périmé fiche agent : "repo 560 tests" (vert-trompeur ungated) → 558/22 sourcé matrice + gate étendu

Défaut réel (#6 anti-invention) : 03_agents/erpnext_backend/AGENT.md situait les
tests backend par "repo : 560 tests au total" saisi à la main. 560 ne correspond à
aucun compte courant (matrice qa/regression = 558/22 ; repo-wide = 584 méthodes
test_*) — périmé en silence (534→551→558 ; 560 = ancien 534 + 26 harnais self-exclu
INV3). Même classe de vert-trompeur que la fiche QA (21/534), mais ungated.

- Vérif ciblée : toutes les autres bornes chiffrées des 13 AGENT.md exactes
  (crm 81, RBAC 60, e-CF 39, portails 19, chat 31, confotur 44, seo 36).
- Fix : le nombre pointe désormais vers l'artefact gaté (regression_run.json).
- Gate : ci/check_readme_claims.sh recalcule tests+suites+verdict depuis
  regression_run et exige l'égalité avec la fiche backend (comme la fiche QA).
- Preuve morsure : 560 réinjecté ⇒ gate rouge ; restauré ⇒ vert.
- 7 gates verts ; édition doc ⇒ aucune dérive out/ (check_artifacts vert).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Code DTP Worker
2026-07-31 04:36:20 +00:00
parent aebe9b7ba9
commit 504bfb0f10
3 changed files with 96 additions and 2 deletions
+57
View File
@@ -481,3 +481,60 @@ PASS** ; artefacts `out/` reproductibles à l'identique.
runner Gitea toujours du ressort DevOps).
**Auto-score 4Big** : 96/100.
---
## Session `20260731_043004` · Buffer S8 · Chiffre périmé dans une fiche agent (vert-trompeur ungated) + extension du gate
**Tâche** : **Sprint 8 · buffer L75 (« Regression tests exhaustifs »)** — roadmap
fonctionnellement close (22/22 modules gated · 558 tests · 7 gates statiques verts).
Recherche d'un **défaut réel** (chiffre inventé/périmé · CLAUDE.md #6) plutôt qu'un
correctif cosmétique.
### Défaut trouvé — `03_agents/erpnext_backend/AGENT.md` : « repo : **560 tests** au total »
- **Symptôme** : la ligne « source unique » situait les tests backend dans le repo
par un compte agrégé **saisi à la main** (« repo : 560 tests au total »).
- **Contradiction** : `560` ne correspond **à AUCUN** compte courant —
- matrice de régression faisant autorité (`qa/regression/out/regression_run.json`) :
**558 tests · 22 suites · PASS** ;
- repo-wide (méthodes `test_*` sur disque, 23 fichiers) : **584**.
`560` = ancien `534` (matrice d'alors) `+ 26` (harnais `qa/regression`, self-exclu
INV3) — **périmé en silence** au fil de 534 → 551 → 558. Même classe de « vert
trompeur » que la fiche QA (21/534) corrigée la session précédente, mais dans une
fiche agent qu'**aucun gate ne couvrait**.
- **Vérif ciblée (#1 analyser)** : recomputé **toutes** les autres bornes chiffrées
des 13 `AGENT.md` — `crm 81=(25+31+25)`, `RBAC 60=(10+16+11+11+12)`, `e-CF 39`,
`portails 19`, `chat 31`, `confotur 44`, `seo 36` : **toutes exactes**. Le `560`
était le **seul** nombre dérivé.
### Fix (2 volets · corriger + garder)
1. **`03_agents/erpnext_backend/AGENT.md`** : `560` → **« matrice de régression du
repo : 558 tests · 22 suites · verdict PASS, source
`qa/regression/out/regression_run.json` — jamais compté à la main · #6 »** (le
nombre pointe désormais vers l'artefact gaté, pas une saisie).
2. **`ci/check_readme_claims.sh`** : nouveau bloc qui **recalcule** tests+suites+
verdict depuis `regression_run` (même source que la fiche QA) et exige l'égalité
avec ce que la fiche backend **écrit** ; un claim absent échoue aussi. Header du
gate mis à jour (liste des docs couverts).
### Preuves
- **Passe** : `Fiche Backend · … 558/22/PASS == regression_run` (✓).
- **Morsure** : `560` réinjecté ⇒ gate **rouge** (`dit 560/22/PASS MAIS regression_run
dit 558/22/PASS → régénérer la fiche`) ; restauré ⇒ vert.
- **Régression nulle** : édition d'un `AGENT.md` (doc) → **aucune dérive** d'artefact
`out/` (`check_artifacts` vert : `quality_report.json` inchangé).
**Vérifs** : **7 gates** locaux verts (`guard_constraints` · `validate_json` ·
`check_docs` · `check_artifacts` · `check_regression` · `check_ci_integrity` ·
`check_readme_claims`) ; matrice **558/22 · PASS**.
**Anti-invention (#6)** : rien inventé — le gate **régénère** la vérité (matrice
re-agrégée) au lieu de figer un compteur ; le chiffre de la fiche **découle** de
l'artefact.
**Hors périmètre worker (VPS · #8)** : néant (docs + gate bash/stdlib en-repo).
**Auto-score 4Big** : 96/100.